Python+OpenCV+Tesseract实现OCR字符识别_python + opencv + tesseract-程序员宅基地

技术标签: python  人工智能  opencv  

目录

一、OCR是什么

二、使用步骤

1.下载tesseract

2.安装pytesseract

3.验证测试

结语

参考


一、OCR是什么

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

二、使用步骤

1.下载tesseract

        首先要下载tesseract:Index of /tesseracthttps://digi.bib.uni-mannheim.de/tesseract/

        进入下载页面,可以看到各种exe文件,其中文件名中带有dev的为开发版,不带dev的为稳定版,读者可以按需下载,我这里选择下载5.2.0的版本。

        下载完成后,双击安装,值得注意的是,在安装过程到此页面时,需要勾选“Additional language data(download) ”选项来安装OCR支持识别的语言包,这样OCR便可以识别多国语言。

2.安装pytesseract

   为了能在python中使用tesseract的功能,需要pip安装pytesseract:

pip install pytesseract

        若安装缓慢,可以使用镜像进行安装:

pip install pytesseract -i https://pypi.douban.com/simple

3.验证测试

  接下来,需要验证是否能正常使用OCR功能。使用如下图片为例进行测试:

         测试代码:

from PIL import Image
import pytesseract


text = pytesseract.image_to_string(Image.open('OCR_test.png'), lang='chi_sim')
print(text)

       我们首先利用Image读取了图片文件,然后调用了pytesseract的image_to_string()方法,再将其识别结果输出。

    值得注意的是,image_to_string()方法默认只识别英文,若还要识别中文,添加lang=’chi_sim’参数即可。此外,有可能中文识别出来了,但是乱码,需要相应地将text转换为你所用的中文编码方式,如:text.decode("utf8")就可以了。

       代码运行结果如下:

        如果遇到报错找不到pytesseract,不要慌,问题不大:

             解决方案1:

        1.找到python的安装路径下的pytesseract:

        2.用文本编辑器打开,查找tesseract_cmd

                将原来的 tesseract_cmd = 'tesseract' 改为: tesseract_cmd = 'OCR的安装路径下的tessract.exe'

                例如我的是 tesseract_cmd = r'D:\software\Tesseract-OCR\tesseract.exe'

                注意需要对路径中的斜杠进行转义。

             解决方案2:

                 增加一句代码即可:

from PIL import Image
import pytesseract



# 使用此行代码进行设置,可以不改动pytesseract.py中的源码
pytesseract.pytesseract.tesseract_cmd = r'D:\software\Tesseract-OCR\tesseract.exe'

text = pytesseract.image_to_string(Image.open('OCR_test.png'), lang='chi_sim')
print(text)

结语

        至此,便完成了tesseract的安装与使用,就可以进行OCR识别了。

        若识别效果不好,可二值化图像并消除噪声后再识别,此外,image_to_string()方法还有几个其它的参数,还可尝试更改参数以获得更好的识别效果,参数说明可看下面这篇文章:

Tesseract OCR in Python with Pytesseract & OpenCV (nanonets.com)https://nanonets.com/blog/ocr-with-tesseract/


参考

  1. 光学字符识别 - 维基百科,自由的百科全书 (wikipedia.org)
  2. wxPython利用pytesser模块实现图片文字识别
  3. Python关于tesseract 安装及使用 - 知乎 (zhihu.com)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_54827663/article/details/128051162

智能推荐

Linux环境 docker启动redis命令_linux docker 重启 redis-程序员宅基地

文章浏览阅读1.1k次。docker启动redis命令_linux docker 重启 redis

【总结】插头DP-bzoj1210/2310/2331/2595_dp插头模型-程序员宅基地

文章浏览阅读325次。插头DP小结_dp插头模型

关于测试工作效率低的一些思考和改进方法_测试人员不足与改进-程序员宅基地

文章浏览阅读3.5k次。关于测试工作效率低的一些思考和改进方法引子  汇总统计了一下项目组近期测试项目实际工作量与基线工作量的对比,发现一个严重问题。就是工作效率特别低下。下面简单列举一下几个项目预期工作量和实际工作量以及时间耗费严重的地方、项目简要背景。  1、B版本测试。版本预期工作量15人天,实际耗费工作量在30人天。更为严重的是测试人员并没有因为测试周期延长和工作量投入加大而测试的更轻松,反而是测试期..._测试人员不足与改进

级联样式表_级联样式表| 第三部分-程序员宅基地

文章浏览阅读173次。级联样式表 CSS-难以成熟 (CSS — Difficult to maturation)Unlike software, the CSS specifications are developed by successive versions, which would allow a browser to refer to a particular version. CSS was devel..._级联样式表是哪年产生的

sql server学习笔记——批处理语句、存储过程_sql的批处理-程序员宅基地

文章浏览阅读1.7k次。目录批处理语句1、批处理语句简介示例一:示例二:存储过程一、什么是存储过程1、存储过程的简介2、存储过程包含的内容3、存储过程的优点4、存储过程的分类系统存储过程:用户定义存储过程5、常用的系统储存过程(1)一般常用的存储过程(2)xp_cmdshell二、创建存储过程1、定义存储过程的语法2、不带参数的存储过程3、带参数..._sql的批处理

css代码的定位及浮动

上次,我们解除了css的内外边距、鼠标悬停及其练习。现在我们学习css元素练习和定位。

随便推点

Flutter Widget显示隐藏_flutter判断控制是否被遮住-程序员宅基地

文章浏览阅读7.6k次。在Android中我们可以用visibility来控制控件的显示和隐藏,那在Flutter中我们怎么控制呢?其实,在Flutter中控制Widget显示和隐藏有3中方法:不过3种方法的核心思想都是根据变量的值去判断的,所以先定义一个变量:bool visible = true;变量的值可以在事件中去控制,比如: onPressed: () { setS..._flutter判断控制是否被遮住

求助生物源排放模型MEGAN_megan v2.04-程序员宅基地

文章浏览阅读673次。有没有师兄师姐有meganv2.04以上的版本小弟只有低版本的 需要高版本运行一下有偿!_megan v2.04

java/jsp/ssm网络文学网站【2024年毕设】-程序员宅基地

文章浏览阅读32次。springboot基于springboot的小型超市库存管理系统。springboot基于SpringBoot的校园失物招领系统。springboot基于springboot的残障人士社交平台。springboot基于springboot的酒店管理系统。springboot基于springboot的电商购物系统。springboot基于微信小程序的Sunmoon口红商城。springboot基于云平台的便民物流速递信息管理系统。springboot基于微服务的固定资产管理系统。

还在用PPT做组织架构图?公司都在用的架构图软件是什么?_书本里印刷的结构图是用什么软件做的-程序员宅基地

文章浏览阅读3.1k次。还在用PPT、Word和Excel画企业组织结构图吗?对于人力资源的同事来说,画组织结构图是一键非常头疼的事情,尤其是对于一些大公司和人员变动较大的公司来说,需要经常更换组织结构图,每次变动都要耗费大量的时间和精力去重新绘图。其实绘制织结构图很简单,之所以难是因为没有找对工具和方法!今天小编就教你如何用亿图图示轻松绘制一个既美观又专业的组织结构图!下图是一个简单的组织结构图例子,小编就以此为例,详细讲解一下好看清晰、实用的公司组织结构图是怎么画出来的。1、新建组织结构图2、创建组织结构_书本里印刷的结构图是用什么软件做的

ESP32-C3 BLE5.0 扩展蓝牙名称长度的流程_蓝牙广播名称过长-程序员宅基地

文章浏览阅读1.8k次,点赞4次,收藏5次。BLE5.0 扩展蓝牙名称长度_蓝牙广播名称过长

centos8安装NVIDIA显卡驱动,docker模式运行机器学习_centos8安装显卡驱动-程序员宅基地

文章浏览阅读3.5k次。centos8安装NVIDIA显卡驱动,docker模式运行机器学习_centos8安装显卡驱动

推荐文章

热门文章

相关标签