调用pytesseract触发AttributeError:无pytesseract属性如何解决
报错核心原因
触发该错误有两个直接诱因:
- 导入语句不完整:代码仅从pytesseract中导入了
image_to_string方法,未导入pytesseract主模块,无法访问模块下的配置属性 - 属性路径写法错误:多数旧教程标注的
pytesseract.pytesseract.tesseract_cmd路径不符合新版本pytesseract的导出结构,多写了一层.pytesseract层级,自然找不到对应属性
另外原代码里的Windows路径未做转义处理,C:\Program Files\...中的\t会被Python识别为制表符转义符,就算属性问题修复后也可能出现找不到Tesseract程序的问题。
修复方案
按以下步骤调整代码即可:
- 补充导入pytesseract主模块
- 把tesseract_cmd的配置路径修正为
pytesseract.tesseract_cmd,去掉多余的层级 - 路径字符串前加
r前缀标记为原始字符串,避免反斜杠转义问题 - 可选增加图片读入判空逻辑,避免图片路径错误触发无意义的后续报错
修正后完整可运行代码
import cv2 import pytesseract from pytesseract import image_to_string # 配置Tesseract可执行文件路径,r前缀避免转义 pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' img = cv2.imread("download.png") # 校验图片是否读取成功 if img is None: raise RuntimeError("图片读取失败,请检查download.png是否和脚本在同一路径下") print('image is', img) gry = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) (h, w) = gry.shape[:2] gry = cv2.resize(gry, (w*2, h*2)) cls = cv2.morphologyEx(gry, cv2.MORPH_CLOSE, None) thr = cv2.threshold(cls, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1] txt = image_to_string(thr) print(txt)
补充排查项
如果修正代码后仍无法正常运行,可逐一排查以下问题:
- 打开命令提示符,执行
"C:\Program Files\Tesseract-OCR\tesseract.exe" --version,确认Tesseract程序本身可正常启动,没有缺失运行库 - 如果需要识别中文文本,需要提前安装Tesseract中文简体语言包,并在调用
image_to_string时传入参数lang='chi_sim' - 执行
pip install --upgrade pytesseract将pytesseract库升级到最新稳定版,避免旧版本兼容问题
内容的提问来源于stack exchange,提问作者anish
相关产品推荐
相关产品推荐

