最近工作中有需求需要用python对图片中的文字进行识别,调研了一下,选择了tesseract,
目前在github上有50.5k个star!python可以调用,安装也十分方便,pip install pytesseract 即可。如果没有Pillow 包,还需要执行pip install Pillow。
核心代码
读取图片中文字信息的核心api如下:
from PIL import Image
import pytesseract
captcha_text = pytesseract.image_to_string(Image.open("d:/tmp/img4.png"), lang='chi_sim')
print(captcha_text)
上面这段代码中需要解释的是如果图片中有中文字符则需要添加参数lang='chi_sim',并在安装的过程中添加识别中文的字符库,后面会讲到!
运行代码遇到的问题
直接运行上面的代码,会遇到下面的问题
raise TesseractNotFoundError()
pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in your PATH. See README file for more information.
我们来分析一下这个错误!错误提示tesseract没有安装,但是我们明明已经执行了pip install pytesseract,那么问题会出在哪里呢?
我们需要先了解一下pytesseract,它是一款用于光学字符识别(OCR)的python工具,即从图片中识别出和“读取”其中嵌入的文字,底层使用的是Google的Tesseract-OCR 引擎,pytesseract只是对Tesseract-OCR的一层封装!看到这里我们就能够理解 ,运行python代码
pytesseract.image_to_string() 报错的原因了!因为我的PC上并没有安装Tesseract-OCR,pytesseract是无法调用Tesseract-OCR的api为我们干活的!
安装Tesseract-OC
Tesseract-OCR windows 版本的下载链接如下:
https://github.com/UB-Mannheim/tesseract/wiki
下载成功后,只需默认安装,在安装的过程中,如果想对其他国家语言文字识别可以选择相对应的语言包,如下图
安装成功后配置路径 C:\Program Files\Tesseract-OCR 到环境变量中即可。
再次运行,正常执行!大家可以自己做一张文字图片的截图查看效果。
复杂的登录校验码无法识别
另外我测试了Tesseract-OCR对复杂校验码的识别情况,如下图:
结论是:复杂的校验码仍然无法识别。