python3光学字符识别模块tesserocr与pytesseract的使用详解
OCR,即OpticalCharacterRecognition,光学字符识别,是指通过扫描字符,然后通过其形状将其翻译成电子文本的过程,对应图形验证码来说,它们都是一些不规则的字符,这些字符是由字符稍加扭曲变换得到的内容,我们可以使用OCR技术来讲其转化为电子文本,然后将结果提取交给服务器,便可以达到自动识别验证码的过程
tesserocr与pytesseract是Python的一个OCR识别库,但其实是对tesseract做的一层PythonAPI封装,pytesseract是Google的Tesseract-OCR引擎包装器;所以它们的核心是tesseract,因此在安装tesserocr之前,我们需要先安装tesseract
1、安装tesseract、tesserocr、pytesseract
(1)windows下的安装
下载tesseract:https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-w64-setup-v4.0.0-beta.1.20180414.exe
或者本地下载:https://www.nhooo.com/softs/538925.html
然后双击程序安装即可,可以勾选Additionallanguagedata(download)选项来安装OCR识别支持的语言包,但下载语言包实在是慢,我们可以直接从https://github.com/tesseract-ocr/tessdata下载zip的语言包压缩文件,解压后将tessdata-master中的文件复制到Tesseract的安装目录C:\ProgramFiles(x86)\Tesseract-OCR\tessdata目录下,最后我们配置下环境变量,我们将C:\ProgramFiles(x86)\Tesseract-OCR添加到环境变量中
在测试之前先了解下tesseract的命令程序格式:
tesseractimagenameoutputbase[-llang]
imagename指定图片名称,outputbase指定输出文件名,-l指定识别的语言
#显示安装的语言包 tesseract--list-langs #显示帮助 tesseract--help tesseract--help-extra tesseract--version
进行测试:
#统计安装的语言包,安装了168个语言包
C:\Users\Administrator.DESKTOP-6JT7D2H>tesseract--list-langs|find/c/v""
168#使用一张图片测试,成功识别字符串
tesseractimage.pngresult-leng|typeresult.txt
Python3WebSpider
由于tesserocr在windows环境下会出现各种不兼容问题,并且与pycharm虚拟环境不兼容等问题,所以在windows系统环境下,选择pytesseract模块进行安装,如果实在要安装请使用whl文件安装或者使用conda安装
pipinstallpytesseract
如果在pytesseract运行是找不到tesseract解释器,这种情况一般是在虚拟环境下会发生,我们需要将tesseract-OCR的执行文件tesseract.ext配置到windows系统中的PATH环境中,或者修改pytesseract.py文件,将其中的“tesseract_cmd”字段指定为tesseract.exe的完整路径即可
测试识别功能:
importpytesseract
fromPILimportImage
im=Image.open('image.png')
print(pytesseract.image_to_string(im))
(2)linux下的安装
在Ubuntu、Debian、Deepin系统中,安装命令如下:
#安装tesseract sudoapt-getinstall-ytesseract-ocrlibtesseract-devlibleptonica-dev #安装语言包 gitclonehttps://github.com/tesseract-ocr/tessdata.git sudomvtessdata/*/usr/share/tesseract-ocr/tessdata #安装tesserocr pip3installtesserocr #安装pytesseract pip3installpytesseract
在CentOS、RedHat系统下,安装命令如下:
#安装tesseract yuminstall-ytesseract #安装语言包 gitclonehttps://github.com/tesseract-ocr/tessdata.git mvtessdata/*/usr/share/tesseract/tessdata #安装tesserocr pip3installtesserocr #安装pytesseract pip3installpytesseract
测试安装环境:
In[1]:importtesserocr
In[2]:fromPILimportImage
In[3]:im=Image.open('image.png')
In[4]:tesserocr.image_to_text(im)
Out[4]:'Python3WebSpider\n\n'
tesserocr安装参考链接:https://github.com/sirfz/tesserocr
pytesseract安装参考链接:https://github.com/madmaze/pytesseract
tesseract安装参考链接:https://github.com/tesseract-ocr/tesseract/wiki
2、tesserocr与pytesseract模块的使用
(1)tesserocr的使用
#从文件识别图像字符
In[7]:tesserocr.file_to_text('image.png')
Out[7]:'Python3WebSpider\n\n'
#查看tesseract已安装的语言包
In[8]:tesserocr.get_languages()
Out[8]:('/usr/share/tesseract/tessdata/',['eng'])
#从图片数据识别图像字符
In[9]:tesserocr.image_to_text(im)
Out[9]:'Python3WebSpider\n\n'
#查看版本信息
In[10]:tesserocr.tesseract_version()
Out[10]:'tesseract3.04.00\nleptonica-1.72\nlibgif4.1.6(?):libjpeg6b(libjpeg-turbo1.2.90):libpng1.5.13:libtiff4.0.3:zlib1.2.7:libwebp0.3.0\n'
(2)pytesseract使用
功能:
- get_tesseract_version返回系统中安装的Tesseract版本。
- image_to_string将图像上的TesseractOCR运行结果返回到字符串
- image_to_boxes返回包含已识别字符及其框边界的结果
- image_to_data返回包含框边界,置信度和其他信息的结果。需要Tesseract3.05+。有关更多信息,请查看TesseractTSV文档
- image_to_osd返回包含有关方向和脚本检测的信息的结果。
参数:
image_to_data(image,lang=None,config='',nice=0,output_type=Output.STRING)
- imageobject图像对象
- langString,Tesseract语言代码字符串
- configString任何其他配置为字符串,例如:config='--psm6'
- niceInteger修改Tesseract运行的处理器优先级。Windows不支持。尼斯调整了类似unix的流程的优点。
- output_type类属性,指定输出的类型,默认为string。有关所有支持类型的完整列表,请检查pytesseract.Output类的定义。
fromPILimportImage
importpytesseract
#如果PATH中没有tesseract可执行文件,请指定tesseract路径
pytesseract.pytesseract.tesseract_cmd='C:\ProgramFiles(x86)\Tesseract-OCR\\tesseract.exe'
#打印识别的图像的字符串
print(pytesseract.image_to_string(Image.open('test.png')))
#指定语言识别图像字符串,eng为英语
print(pytesseract.image_to_string(Image.open('test-european.jpg'),lang='eng'))
#获取图像边界框
print(pytesseract.image_to_boxes(Image.open('test.png')))
#获取包含边界框,置信度,行和页码的详细数据
print(pytesseract.image_to_data(Image.open('test.png')))
#获取方向和脚本检测
print(pytesseract.image_to_osd(Image.open('test.png'))
3、图像识别简单应用
一般图像处理验证,需要通过对图像进行灰度处理、二值化后增加图像文字的辨识度,下面是一个简单的对图像验证码识别处理,如遇到复杂点的图像验证码如中间带多条同等大小划线的验证码需要对文字进行乔正切割等操作,但它的识别度也只有百分之30左右,所以得另外想别的办法来绕过验证
fromPILimportImage
importpytesseract
im=Image.open('66.png')
#二值化图像传入图像和阈值
deferzhihua(image,threshold):
''':typeimage:Image.Image'''
image=image.convert('L')
table=[]
foriinrange(256):
ifi
模拟自动识别验证码登陆:
#!/usr/bin/envpython
#-*-coding:utf-8-*-
#@Time:2018/7/138:58
#@Author:Py.qi
#@File:login.py
#@Software:PyCharm
fromseleniumimportwebdriver
fromselenium.common.exceptionsimportTimeoutException,WebDriverException
fromselenium.webdriver.common.byimportBy
fromselenium.webdriver.common.keysimportKeys
fromselenium.webdriver.support.uiimportWebDriverWait
fromselenium.webdriver.supportimportexpected_conditionsasEC
fromselenium.webdriver.remote.webelementimportWebElement
fromioimportBytesIO
fromPILimportImage
importpytesseract
importtime
user='zhang'
password='123'
url='http://10.0.0.200'
driver=webdriver.Chrome()
wait=WebDriverWait(driver,10)
#识别验证码
defacker(content):
im_erzhihua=erzhihua(content,127)
result=pytesseract.image_to_string(im_erzhihua,lang='eng')
returnresult
#验证码二值化
deferzhihua(image,threshold):
''':typeimage:Image.Image'''
image=image.convert('L')
table=[]
foriinrange(256):
ifi
参考链接:
tesserocrGitHub:https://github.com/sirfz/tesserocr
tesserocrPyPI:https://pypi.python.org/pypi/tesserocr
pytesserocrGitHub:https://github.com/madmaze/pytesseract
pytesserocrPyPI:https://pypi.org/project/pytesseract/
tesseract下载地址:http://digi.bib.uni-mannheim.de/tesseract
tesseractGitHub:https://github.com/tesseract-ocr/tesseract
tesseract语言包:https://github.com/tesseract-ocr/tessdata
tesseract文档:https://github.com/tesseract-ocr/tesseract/wiki/Documentation
到此这篇关于python3光学字符识别模块tesserocr与pytesseract的使用详解的文章就介绍到这了,更多相关python3tesserocrpytesseract内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票! 
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
  