Python调用pytesseract报无pytesseract属性AttributeError报错求助
Python pytesseract OCR脚本AttributeError报错修复
问题复现
编写OCR图片文字识别脚本时,初始实现代码如下:
from PIL import Image from pytesseract import pytesseract pytesseract.pytesseract.tesseract_cmd = 'C:\Program Files (x86)\Tesseract-OCR\tesseract.exe' im = Image.open(r"screenshot.png") text = pytesseract.image_to_string(im) print(text)
运行后抛出如下错误:
Traceback (most recent call last): File "c:\Users\mark\Documents\Scripts\screenshot.py", line 3, in <module> pytesseract.pytesseract.tesseract_cmd = 'C:\Program Files (x86)\Tesseract-OCR\tesseract.exe' AttributeError: module 'pytesseract.pytesseract' has no attribute 'pytesseract'. Did you mean: 'run_tesseract'?
已完成Tesseract-OCR程序安装、系统环境变量配置、pip安装Python依赖包操作,仍然报错。
报错原因
- 核心问题是属性访问层级错误:使用
from pytesseract import pytesseract导入时,当前命名空间下的pytesseract已经指向了pytesseract包内的核心pytesseract模块,该模块直接提供tesseract_cmd属性,不需要额外再加一层.pytesseract访问。 - 存在隐藏的路径转义问题:代码中Windows路径使用普通字符串编写,路径内
\tesseract.exe段开头的\t会被Python解析为制表符转义字符,就算修复属性访问问题,后续也可能出现找不到tesseract程序的错误。
修复方法
选择任意一种写法调整代码即可:
写法1:修正原有导入逻辑
保留原有导入语句,删除多余的层级访问,同时给路径加r前缀标记为原始字符串,避免转义问题:
from PIL import Image from pytesseract import pytesseract # 移除多余的.pytesseract层级,路径加r前缀 pytesseract.tesseract_cmd = r'C:\Program Files (x86)\Tesseract-OCR\tesseract.exe' im = Image.open(r"screenshot.png") text = pytesseract.image_to_string(im) print(text)
写法2:使用更通用的包导入方式
直接导入pytesseract顶层包,按包结构访问属性:
from PIL import Image import pytesseract # 直接导入顶层包时,按层级访问tesseract_cmd属性即可 pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files (x86)\Tesseract-OCR\tesseract.exe' im = Image.open(r"screenshot.png") text = pytesseract.image_to_string(im) print(text)
补充说明
- 如果已经将Tesseract-OCR的安装目录添加到系统PATH环境变量中,可以删除手动设置
tesseract_cmd的代码行,pytesseract会自动检索系统路径下的tesseract可执行文件。 - 如果修改后仍提示找不到程序,手动核对填写的安装路径下是否真的存在
tesseract.exe,64位系统下Tesseract默认可能安装在C:\Program Files\Tesseract-OCR\目录,而非x86目录,避免路径填写错误。
内容的提问来源于stack exchange,提问作者Isaac Zaiek
相关产品推荐
相关产品推荐

