PyTesseract与Tesseract无法识别文本问题求助
问题描述
我在筹备已久的项目中尝试使用pytesseract,但本地始终无法正常运行。测试图片为包含"EXIT"字样的图片,通过灰度读取、OTSU二值化、黑白反转处理后,得到黑底白字的清晰文本图。使用的测试代码如下:
image = cv2.imread('exit.png',cv2.IMREAD_GRAYSCALE) th,image = cv2.threshold(image,0,255,cv2.THRESH_OTSU) image = 255 - image cv2.imshow('bruh',image) cv2.waitKey(0) print(pytesseract.image_to_data(image,config='--psm 3 --oem 3'))
已尝试的排查操作:
- 测试有无二值化的场景
- 重新安装Tesseract和pytesseract
- 更换不同的
--psm/--oem配置参数 - 通过命令行直接运行Tesseract
系统环境:Pop!_OS,Python版本3.10.4
解决方案
针对Pop!_OS环境下的pytesseract识别故障,按以下步骤修复:
- 确认英文语言包安装
Pop!_OS默认可能未完整安装Tesseract英文训练数据,执行以下命令安装:
sudo apt install tesseract-ocr-eng
可通过dpkg -l | grep tesseract-ocr查看已安装的语言包列表。
- 指定Tesseract可执行路径
如果pytesseract无法自动找到Tesseract程序,在代码开头添加路径配置:
import pytesseract pytesseract.pytesseract.tesseract_cmd = '/usr/bin/tesseract'
路径可通过which tesseract命令确认。
- 优化OCR配置参数
针对单行文本的测试图,调整--psm参数以匹配场景:
print(pytesseract.image_to_data(image, config='--psm 7 --oem 3'))
--psm 7表示将图片视为单行文本,能大幅提升这类场景的识别准确率;--oem 3启用默认混合OCR引擎模式。
- 命令行验证Tesseract功能
直接用命令行测试处理后的图片,定位问题来源:
tesseract 处理后的图片路径 stdout --psm 7 --oem 3
如果命令行能正确识别"EXIT",说明问题出在Python代码配置;若命令行也识别失败,可尝试在预处理步骤添加高斯模糊消除潜在噪点:
image = cv2.GaussianBlur(image, (3, 3), 0)
- 更新Tesseract到最新版本
若仓库版本过旧,添加PPA更新至稳定版:
sudo add-apt-repository ppa:alex-p/tesseract-ocr-devel sudo apt update && sudo apt upgrade tesseract-ocr
内容的提问来源于stack exchange,提问作者HallowedDust5
相关产品推荐
相关产品推荐

