tesseract 安装及使用
1. 安装 tesseract
OCR,即 Optical Character Recognition,光学字符识别,是指通过扫描字符,然后通过其形状将其翻译成电子文本的过程。对于图形验证码来说,它们都是一些不规则的字符,这些字符确实是由字符稍加扭曲变换得到的内容。
tesseract 下载地址:https://digi.bib.uni-mannheim.de/tesseract/
进入下载页面,可以看到有各种.exe 文件的下载列表,这里可以选择下载 3.0 版本。
其中文件名中带有 dev 的为开发版本,不带 dev 的为稳定版本,可以选择下载不带 dev 的版本,例如可以选择下载 tesseract-ocr-setup-3.05.02.exe。
下载完成后双击,此时会出现如下图所示的页面。
此时可以勾选 Additional language data (download) 选项来安装 OCR 识别支持的语言包,这样 OCR 便可以识别多国语言。然后一路点击 Next 按钮即可。
接下来,为了在 python 代码中使用 tesseract 功能,使用 pip 安装 pytesseract:
pip install pytesseract
2、配置环境变量
为了在全局使用方便,比如安装路径为 D:\Program Files (x86)\Tesseract-OCR,将该路径添加到环境变量的 path 中
配置完成后在命令行输入 tesseract -v,如果出现如下图所示,说明环境变量配置成功
3、验证安装
接下来,我们可以使用 tesseract 和 pytesseract 来分别进行测试。
我们以如下图所示的图片为样例进行测试。
该图片的链接为 https://raw.githubusercontent.com/Python3WebSpider/TestTess/master/image.png,可以直接保存或下载。
首先用命令行进行测试,将图片下载到 D 盘 chromeDownload 文件夹,保存为 image.png,然后在该文件夹中打开命令行,用 tesseract 命令测试:
tesseract image.png result
运行结果如下:
D:\chromeDownload>tesseract image.png result
Tesseract Open Source OCR Engine v3.05.02 with Leptonica
这里我们调用了 tesseract 命令,其中第一个参数为图片名称,第二个参数 result 为结果保存的目标文件名称。
运行结果便是图片的识别结果:Python3WebSpider。可以在 chromeDownload 文件夹中看到 result.txt,这时已经成功将图片文字转为电子文本了。
然后还可以利用 Python 代码来测试,这里就需要借助于 pytesseract 库了,测试代码如下:
-
from PIL import Image
-
import pytesseract
-
text = pytesseract.image_to_string(Image.open( r'D:\chromeDownload\image.png'))
-
print(text)
我们首先利用 Image 读取了图片文件,然后调用了 pytesseract 的 image_to_string () 方法,再将其识别结果输出。
运行结果如下:
Python3WebSpider
如果成功输出结果,则证明 tesseract 和 pytesseract 都已经安装成功。
4、使用时遇到的坑
在使用 tesseract 命令行进行测试时,会议开始报以下的错误
Error opening data file \Program Files (x86)\Tesseract-OCR\tessdata/eng.traineddata
Please make sure the TESSDATA_PREFIX environment variable is set to the parent directory of your "tessdata" directory.
Failed loading language 'eng'
Tesseract couldn't load any languages!
Could not initialize tesseract.
报错是意思是缺少环境变量 TESSDATA_PREFIX,导致无法加载任何语言,就不能初始化 tesseract。
解决的方法也很简单,在环境变量中添加 TESSDATA_PREFIX,如下图
注意:变量值中的路径为 “D:/Program Files (x86)/Tesseract-OCR”,使用正斜杠 “/”。windows 中复制过来的路径默认是反斜杠 “\”
配置完成后,重新打开命令行,即可正常使用。
第二个坑是使用 pytesseract 时,出现以下错误
Traceback (most recent call last):
File "D:\Python36\lib\site-packages\pytesseract\pytesseract.py", line 170, in run_tesseract
proc = subprocess.Popen(cmd_args, **subprocess_args())
File "D:\Python36\lib\subprocess.py", line 709, in __init__
restore_signals, start_new_session)
File "D:\Python36\lib\subprocess.py", line 997, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] 系统找不到指定的文件。During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:/python/20180911.py", line 4, in <module>
text = pytesseract.image_to_string(Image.open(r'D:\chromeDownload\image.png'))
File "D:\Python36\lib\site-packages\pytesseract\pytesseract.py", line 294, in image_to_string
return run_and_get_output(*args)
File "D:\Python36\lib\site-packages\pytesseract\pytesseract.py", line 202, in run_and_get_output
run_tesseract(**kwargs)
File "D:\Python36\lib\site-packages\pytesseract\pytesseract.py", line 172, in run_tesseract
raise TesseractNotFoundError()
pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in your path
这就很坑,添加了全局变量,还是提示 tesseract 没有安装或者不在 PATH 中。
百度了一下,解决方案如下。
pytesseract 安装后,在 python 的 Lib 目录下 site-packges 下会生成一个 pytesseract 文件夹,文件夹中找到 pytesseract.py,路径为:D:\Python36\Lib\site-packages\pytesseract,使用 notepad 之类软件打开 pytesseract.py,找到如下两行:
# CHANGE THIS IF TESSERACT IS NOT IN YOUR PATH, OR IS NAMED DIFFERENTLY
tesseract_cmd = 'tesseract'
将 tesseract_cmd = 'tesseract' 修改为:tesseract_cmd = 'D:/Program Files (x86)/Tesseract-OCR/tesseract.exe'
表示 tesseract_cmd 配置的是你安装 tesseract 的绝对路径,这样就能找到 tesseract 了。修改后保存,再去运行 python 代码,就可以成功了。
更多推荐
所有评论(0)