文章18
标签39
分类9

Python调用Tesseract-OCR图像识别和打包后如何运行

pytesseract模块可以很方便的调用Tesseract-OCR进行文字识别,但是在打包后会因为路径出现一些问题

安装Tesseract-OCR

  1. 下载地址选择一个版本下载,我这里用的是 4.00.00dev
  2. 配置环境变量(网上教程很多,大家随便选篇就好)
  3. 在cmd输入 tesseract --version 测试是否配置成功

成功则会输出如下类似信息

avatar

如果打算将程序打包成exe,可以不配置环境变量并参考Step3

调用Tesseract-OCR

  1. 在cmd用 pip3 install pytesseract 命令安装 pytesseract 模块
  2. 编写测试用例

测试用例代码如下

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'

结果如下
avatar

打包成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'

avatar

修改之后的意思就是,不要用 tesseract 命令直接调用Tesseract-OCR(因为我们配置过环境变量可以直接调用,但是别的电脑没有配置过,所以无法调用),而是调用软件所在的目录下的Tesseract-OCR文件夹中tesseract.exe(可以根据你的实际目录名字进行修改)
修改完后,将Tesseract-OCR整个软件复制到源代码目录下,或打包好后复制到程序目录下便可

程序打包不能使用-F打包成一个单独exe,而是使用参数-D

因为打包成一个单独exe后,在程序运行时,会把模块解压到临时文件Temp目录,而我们修改的路径是取文件自身所在路径+'Tesseract-OCR\tesseract.exe',这样一来便调用不到Tesseract-OCR了

1 评论

  1. YuMingC233 5月18日 回复
    谢谢,这对我非常有帮助