pytesseract模块可以很方便的调用Tesseract-OCR进行文字识别,但是在打包后会因为路径出现一些问题
安装Tesseract-OCR
- 下载地址选择一个版本下载,我这里用的是 4.00.00dev
- 配置环境变量(网上教程很多,大家随便选篇就好)
- 在cmd输入 tesseract --version 测试是否配置成功
成功则会输出如下类似信息
如果打算将程序打包成exe,可以不配置环境变量并参考Step3
调用Tesseract-OCR
- 在cmd用 pip3 install pytesseract 命令安装 pytesseract 模块
- 编写测试用例
测试用例代码如下
import pytesseract
from PIL import Image
image = Image.open("test.jpg")
text = pytesseract.image_to_string(image, lang='chi_sim')
print(text)
- Image.open()括号内填你要识别的图片文件名
- lang参数用来指定识别语言,比如英语就改成'eng'
结果如下
打包成exe后依然可以调用
Tesseract-OCR配合 pytesseract 可以很方便的调用实现图片识别
但是当把写好的程序打包成exe之后换到一台没有配置过环境变量的电脑上便出现了问题,原因出在 pytesseract 模块
打开pytesseract模块的源代码,路径一般是:C:\Users\你的用户名\AppData\Local\Programs\Python\Python37\Lib\site-packages\pytesseract
编辑文件:pytesseract.py,找到
tesseract_cmd = 'tesseract'
将其修改为
tesseract_cmd = os.path.abspath(os.path.realpath(os.path.dirname(__file__))) + '\\Tesseract-OCR\\tesseract.exe'
修改之后的意思就是,不要用 tesseract 命令直接调用Tesseract-OCR(因为我们配置过环境变量可以直接调用,但是别的电脑没有配置过,所以无法调用),而是调用软件所在的目录下的Tesseract-OCR文件夹中tesseract.exe(可以根据你的实际目录名字进行修改)
修改完后,将Tesseract-OCR整个软件复制到源代码目录下,或打包好后复制到程序目录下便可
程序打包不能使用-F打包成一个单独exe,而是使用参数-D
因为打包成一个单独exe后,在程序运行时,会把模块解压到临时文件Temp目录,而我们修改的路径是取文件自身所在路径+'Tesseract-OCR\tesseract.exe',这样一来便调用不到Tesseract-OCR了
谢谢,这对我非常有帮助
YuMingC233 2020-05-18