最近在网络爬虫的验证码识别学习中,了解到了利用OCR技术识别图形验证码的一些方法,其中对于最常见的基础图形验证码(如图)可以采用tesserocr库来识别,进行转灰度、二值化等操作,它的核心是tesseract,因此在安装tesserocr之前,需要先安装tesseract。
安装了很久碰到过许多问题,现在这儿归纳解决一下。
这里提供一个下载地址:https://digi.bib.uni-mannheim.de/tesseract/,推荐用迅雷下载以免限流。
其中文件名中带有dev的为开发版本,alpha为内测版,beta为公测版,都不稳定,这里推荐不带dev的稳定版本。
我选择的版本是tesseract-ocr-w64-setup-v5.0.0.20190623.exe,要注意的是不要勾选Additional language data(download)选项,这是来安装 OCR 识别支持的语言包的,但是勾选了下载过程中会有许多报错,这里推荐如果有需要下载完后自行下载。
语言包安装参考:Tesseract OCR 下载及安装教程 (中英文语言包)_input_sudo的博客-CSDN博客_tesseract-ocr语言包
下载完成后,有两个必须做的操作:
1.将tesseract的安装路径加入环境变量Path中,我之前加入到系统环境变量中验证时大量飘红,然后加入到了用户环境变量的path中就没问题了,具体原因还不清楚。
2.将tesseract安装目录下的tessdata文件夹复制到你python的安装路径中去。
配置完成后在cmd命令行输入tesseract --version查看tessertact版本信息,如果出现类似如下图所示,说明环境变量配置成功
下载完成之后直接命令行pip install tesserocr pillow安装会报错,显示 Microsoft Visual C++ 14.0 or greater is required 需要安装最新的C++环境,其实没必要这么麻烦,Windows系统这里推荐下载对应的.whl文件来进行安装。
GitHub下载地址:Releases · simonflueckiger/tesserocr-windows_build · GitHub
在这里下载自己python适配的版本就可以了,查询方法:pip debug --verbose
然后cmd中切到.whl文件所在的目录下,键入 pip install tesserocr-2.4.0-cp36-cp36m-win_amd64.whl就能下载成功了(这里换成自己下载的版本)。
下面是tesserocr的基本用法演示:
import tesserocr
from PIL import Image
image = Image.open('code.jpg')
result = tesserocr.image_to_text(image)
print(result)
这里图片保存在项目当前文件夹
查询自己Python的当前版本:python --version
相信大家也注意到,tesserocr并没有python3.8对应的版本可以下载,查询很久发现还没有更新到此版本。大家可以安装pytesseract,pip install pytesseract下载就好了,它是Google的Tesseract-OCR引擎包装器。但是通过对比个人感觉其实并没有tesserocr效果好。
下面是pytesseract的基本用法演示:
from PIL import Image
import pytesseract
# python3.8还没有对应的tesserocr版本
image = Image.open('code.jpg')
result = pytesseract.image_to_string(image)
print(result)
这里还用到了Python图像库PIL(Python Image Library),这个可以在pycharm中直接下载成功,或者pip install pillow
操作方式: File → Settings → Project → Project Interpreter
以上是个人对于tesserocr下载中一些问题的总结,欢迎大家指正交流。