0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于两个Python开源识别工具的效果

科技绿洲 来源:Python实用宝典 作者:Python实用宝典 2023-10-17 11:36 次阅读

OCR 是光学字符识别(英语:Optical Character Recognition,OCR)是指对文本资料的图像文件进行分析识别处理,获取文字及版面信息的过程。

很早之前就有同学在公众号后台回复希望出一篇 OCR 相关的文章,今天尝试了一下 cnocr 和 tesseract 两个 Python 开源识别工具的效果,给大家分别讲讲两个工具的使用方法和对比效果。

1.准备

开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细Python安装指南 进行安装。

(可选1) 如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda,它内置了Python和pip.

(可选2) 此外,推荐大家用VSCode编辑器,它有许多的优点:Python 编程的最好搭档—VSCode 详细指南

请选择以下任一种方式输入命令安装依赖

  1. Windows 环境 打开 Cmd (开始-运行-CMD)。
  2. MacOS 环境 打开 Terminal (command+空格输入Terminal)。
  3. 如果你用的是 VSCode编辑器 或 Pycharm,可以直接使用界面下方的Terminal.

(选择一)安装 cnocr:

pip install cnocr

看到 Successfully installed xxx 则说明安装成功。

如果你只想对图片中的中文进行识别,那么 cnocr 是一个不错的选择,你只需要安装 cnocr 包即可。

但如果你想试试其他语言的OCR识别,Tesseract 是更好的选择。

(选择二)安装 pytesseract:

首先,无论是Windows还是macOS,你都需要安装 pytesseract:

pip install pytesseract

其次,还需要安装Tesseract.

(macOS) Tesseract 在macOS下可以使用brew安装:

brew install tesseract

非常方便,一条命令即可完成安装。

(Windows )**** 安装Tesseract

需要先下载安装tesseract的程序,然后下载中文简体字预训练好的模型包(尽管本教程不会用tesseract,但还是给大家提供了)。

你可以在Python实用宝典公众号后台回复:**tesseract **打包下载。

下载完成后,将 tesseract-ocr-setup-4.00.00dev.exe 安装到 Tesseract-OCR 指定目录下,复制该目录路径增加到Path中:

图片

并将训练好的模型文件 chi_sim.traineddata 放入该目录中,这样安装就完成了。

2.cnocr 识别图片的中文

cnocr 主要针对的是排版简单的印刷体文字图片,如截图图片,扫描件等。目前内置的文字检测和分行模块无法处理复杂的文字排版定位。

尽管它分别提供了单行识别函数和多行识别函数,但在本人实测下,单行识别函数的效果非常糟糕,或者说要求的条件十分苛刻,基本上连截图的文字都识别不出来。

不过多行识别函数还不错,使用该函数识别的代码如下:

from cnocr import CnOcr
ocr = CnOcr()
res = ocr.ocr('test.png')
print("Predicted Chars:", res)

用于识别这个图片里的文字:

图片

效果如下:

图片

如果不是很吹毛求疵,这样的效果已经很不错了。

3.pytesseract 识别图片的英文

如果你的OCR目的不是中文而是英文,是需要别的模型的。这里给大家分享Tesseract-OCR,它是一款由HP实验室开发,由Google维护的开源OCR引擎。

Tesseract-OCR 可扩展性很强,你可以基于它训练属于自己的OCR模型。

现在给大家看看它分类英文的效果,代码如下:

import pytesseract
from PIL import Image

image = Image.open('test.png')
code = pytesseract.image_to_string(image, lang='eng')
print(code)

识别的图片:

图片

效果如下:

图片

Tesseract 识别英文的效果真的很不错,中文效果就比较一般了。

如果你想试试Tesseract识别中文,只需要将代码中的eng改为chi_sim即可,不过相信我,效果不忍直视。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 程序
    +关注

    关注

    117

    文章

    3785

    浏览量

    81002
  • 开源
    +关注

    关注

    3

    文章

    3309

    浏览量

    42471
  • python
    +关注

    关注

    56

    文章

    4792

    浏览量

    84627
  • OCR
    OCR
    +关注

    关注

    0

    文章

    144

    浏览量

    16348
收藏 人收藏

    评论

    相关推荐

    求助,关于FX3的两个使用问题求解

    如题,咨询FX3的两个使用问题: 1,在F1F模式下,烧写成功后,WIN10无法识别设备,切换到0F1,烧写成功后,WIN10同样无法识别设备,所以现在我的板子只能使用USB引导了,烧写到RAM可以
    发表于 02-22 07:16

    python开发工具推荐

    Python开发软件可根据其用途不同分为种,一种是Python代码编辑器,一种是Python集成开发工具
    发表于 04-12 16:12

    关于汽车在点头与沉浮两个自由度方向的问题

    关于汽车在点头与沉浮两个自由度方向的问题,利用simulink进行求解。
    发表于 02-16 17:18 0次下载

    Python两个基础包numpy和Matplotlib示例详解

    Python的科学计算包 - Numpy numpy(Numerical Python extensions)是一第三方的Python包,用于科学计算。这个库的前身是1995年就开始
    发表于 11-15 18:36 5491次阅读

    精选10Python开源项目

    过去一月里,我们对近 250 Python 开源项目进行了排名,并挑选出热度前 10 的项目。
    的头像 发表于 11-12 09:47 6321次阅读

    语音识别两个方法_语音识别的应用有哪些

    本文主要阐述了语音识别两个方法及语音识别的应用。
    发表于 04-01 09:04 5991次阅读

    干货:两个关于Vim的使用问题及小技巧

    最近在使用 VIM 时遇到两个新的问题,觉得还很挺有价值的。现在将处理方法总结后,分享给大家。
    的头像 发表于 08-31 12:09 2924次阅读
    干货:<b class='flag-5'>两个</b><b class='flag-5'>关于</b>Vim的使用问题及小技巧

    Python中用于终止线程的两个选项

      我经常被问到如何杀死一后台线程,这个问题的答案让很多人不开心: 线程是杀不死的。在本文中,我将向您展示  Python  中用于终止线程的两个选项。 如果我们是一好奇宝宝的话,
    的头像 发表于 11-17 10:02 4666次阅读

    两个电机的电路开源

    电子发烧友网站提供《两个电机的电路开源.zip》资料免费下载
    发表于 08-03 11:20 1次下载
    <b class='flag-5'>两个</b>电机的电路<b class='flag-5'>开源</b>

    两个LED和两个按钮的使用

    电子发烧友网站提供《两个LED和两个按钮的使用.zip》资料免费下载
    发表于 01-30 16:04 1次下载
    <b class='flag-5'>两个</b>LED和<b class='flag-5'>两个</b>按钮的使用

    网络工程师学Python-开源自动化部署工具Fabric

    Python Fabric是一基于Python开源自动化部署工具,可以简化管理远程服务器的过程。
    的头像 发表于 04-28 09:54 746次阅读

    关于Python 加速工具的选单

    一些高效的函数实现,也有已经封装好的拓展模块,还包括速度更快的 Python 解释器。 当然 多处理器版本 确实能大幅提高运行效率。如果想了解多核编程,可以从 multiprocessing 模块 开始。而且也能找到非常多的关于分布式计算的第三方
    的头像 发表于 07-07 11:19 374次阅读

    OCR如何自动识别图片文字

    回复希望出一篇 OCR 相关的文章,今天尝试了一下 cnocr 和 tesseract 两个 Python 开源识别工具
    的头像 发表于 10-31 16:45 773次阅读
    OCR如何自动<b class='flag-5'>识别</b>图片文字

    python中如何交换两个数的位置

    Python中,我们可以使用多种方法来交换两个数的位置。下面将详细介绍这些方法,并提供示例代码和解释。 方法一:使用临时变量进行交换 这是最简单的方法之一,我们可以使用一临时变量来交换两个
    的头像 发表于 11-22 10:56 2933次阅读

    python中如何交换两个数的值相加

    应用进行详细解析。 一、变量交换原理解析 传统方式 在Python中,交换两个数的值通常可以使用一临时变量进行操作。假设有变量a和b,要实现交换,可以通过如下代码实现: temp = a a = b b = temp 这种方法
    的头像 发表于 11-29 17:29 657次阅读