如何利用Python识别图片中的文字
这篇文章将为大家详细讲解有关如何利用Python识别图片中的文字,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
一、Tesseract
文字识别是ORC的一部分内容,ORC的意思是光学字符识别,通俗讲就是文字识别。Tesseract是一个用于文字识别的工具,我们结合Python使用可以很快的实现文字识别。但是在此之前我们需要完成一个繁琐的工作。
(1)Tesseract的安装及配置
Tesseract的安装我们可以移步到该网址 https://digi.bib.uni-mannheim.de/tesseract/,我们可以看到如下界面:
有很多版本供大家选择,大家可以根据自己的需求选择。其中w32表示32位系统,w64表示64位系统,大家选择合适的版本即可,可能下载速度比较慢,安装时我们需要知道我们安装的位置,将安装目录配置到系统path变量当中,我们路径是D:\CodeField\Tesseract-OCR。
我们右击我的电脑/此电脑->属性->高级系统设置->环境变量->Path->编辑->新建然后将我们的路径复制进去即可。添加好系统变量后后我们还需要依次点确定,这样才算配置好了。
(2)下载语言包
Tesseract默认是不支持中文的,如果想要识别中文或者其它语言需要下载相应的语言包,下载地址如下:https://tesseract-ocr.github.io/tessdoc/Data-Files ,进入网站后我们往下翻:
其中有两个中文语言包,一个Chinese-Simplified和Chinese-Traditional,它们分别是简体中文和繁体中文,我们选择需要的下载即可。下载完成后我们需要放到Tesseract的路径下的tessdata目录下,我们路径是D:\CodeField\Tesseract-OCR\tessdata。
(3)其它模块下载
除了上面的步骤,我们还需要下载两个模块:
pipinstallpytesseract pipinstallpillow
第一个是用于文字识别的,第二个是用于图片读取的。接下来我们就可以进行文字识别了。
二、文字识别
(1)单张图片识别
接下来的操作就要简单的多,下面是我们要识别的图片:
接下来就是我们文字识别的代码:
importpytesseract
fromPILimportImage
#读取图片
im=Image.open('sentence.jpg')
#识别文字
string=pytesseract.image_to_string(im)
print(string)识别结果如下:
Do not go gentle into that good night!
因为默认是支持英文的,所以我们可以直接识别,但是当我们要识别中文或其它语言时就需要做些修改:
importpytesseract
fromPILimportImage
#读取图片
im=Image.open('sentence.png')
#识别文字,并指定语言
string=pytesseract.image_to_string(im,lang='chi_sim')
print(string)在识别时,我们设置lang='chi_sim',也就是把语言设置为简体中文,只有当你的tessdata目录下有简体中文包该设置才会生效。下面是我们用来识别的图片:
识别结果如下:
不 要 温 顺 的 走 进 那 个 良 夜
图片内容被准确识别出来了。有一点我们需要知道,在我们将语言设置为简体中文或其它语言后,Tesseract还是可以识别出英文字符。
(2)批量图片识别
既然我们把单张图片识别列出来了,就肯定还有批量图片识别这个功能,这就需要我们准备一个txt文件了,比如我有文件,text.txt内容如下:
sentence1.jpg sentence2.jpg
我们将代码修改为如下:
importpytesseract
#识别文字
string=pytesseract.image_to_string('text.txt',lang='chi_sim')
print(string)但是这样自己写一个txt文件难免有些麻烦,因此我们又可以进行如下修改:
importos
importpytesseract
#文字图片的路径
path='text_img/'
#获取图片路径列表
imgs=[path+iforiinos.listdir(path)]
#打开文件
f=open('text.txt','w+',encoding='utf-8')
#将各个图片的路径写入text.txt文件当中
forimginimgs:
f.write(img+'\n')
#关闭文件
f.close()
#文字识别
string=pytesseract.image_to_string('text.txt',lang='chi_sim')
print(string)这样我们只需要传入一个文字图片的根目录就可以批量进行识别了。在测试过程中发现,Tesseract对手写体、行楷等飘逸的字体识别不准确,对一些复杂的字识别也有待提升。但是宋体、印刷体等笔画严谨的字体识别准确率很高。另外如果图片的倾斜大于一定的角度,识别结果也会有很大差别。
关于“如何利用Python识别图片中的文字”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
推荐阅读
-
一文教你Python如何快速精准抓取网页数据
本文将使用requests和beautifulsoup这两个流行的库来实现。1.准备工作首先安装必要的库:pipinst...
-
使用Python实现IP地址和端口状态检测与监控
-
基于Python打造一个智能单词管理神器
-
Python实现微信自动锁定工具
-
使用Python创建一个功能完整的Windows风格计算器程序
python实现windows系统计算器程序(含高级功能)下面我将介绍如何使用python创建一个功能完整的windows风格计...
-
Python开发文字版随机事件游戏的项目实例
随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型。在这类游戏中,玩家必须应对随机发生的情况,这些情况可能会影响他们的资...
-
使用Pandas实现Excel中的数据透视表的项目实践
引言在数据分析中,数据透视表是一种非常强大的工具,它可以帮助我们快速汇总、分析和可视化大量数据。虽然excel提供了内置的数据透...
-
Pandas利用主表更新子表指定列小技巧
一、前言工作的小技巧,利用pandas读取主表和子表,利用主表的指定列,更新子表的指定列。案例:主表:uidname0...
-
Pandas中统计汇总可视化函数plot()的使用
-
Python中tensorflow的argmax()函数的使用小结
在tensorflow中,argmax()函数是一个非常重要的操作,它用于返回给定张量(tensor)沿指定轴的最大值的索引。这个...
