You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3.6环境调用Tesseract的image_to_osd函数报错,Python 3.8环境正常的解决方法咨询

解决Python 3.6环境下pytesseract image_to_osd报错的问题

先看你给出的报错信息,核心问题其实是Too few characters. Skipping this page——Tesseract在做方向检测时,找不到足够的字符来完成分析。至于为什么Python3.8能正常运行,大概率是两个环境里的pytesseract版本或者PIL/Pillow版本不兼容导致的,毕竟Python3.6早就停止官方支持了,很多新库版本对它的适配性会打折扣。

下面是针对Python3.6环境的具体修复步骤:

1. 安装和Python3.6兼容的pytesseract旧版本

你用的Tesseract是v5.0.0.20190623,后续更新的pytesseract版本可能已经放弃了对Python3.6的支持。试试安装2020年的0.3.7版本,这个版本对Python3.6友好,同时能适配Tesseract v5.x:

pip install pytesseract==0.3.7

2. 同步PIL/Pillow到兼容版本

Python3.6对应的Pillow最高只能支持到9.5.0版本,太高或太低的版本都可能导致图片处理时参数传递异常,让Tesseract识别不到足够字符。执行下面的命令安装兼容版本:

pip install pillow==9.5.0

3. 手动指定图片分辨率

报错里的Invalid resolution 0 dpi警告也会干扰识别,你可以在调用image_to_osd前给图片手动设置DPI,或者直接通过config参数指定:

from PIL import Image

# 方式一:打开图片后设置DPI
rotated = Image.open("你的图片路径.jpg")
rotated.info['dpi'] = (300, 300)  # 设为300DPI,常见印刷分辨率

# 方式二:调用时通过config参数指定
osd_output = pytesseract.image_to_osd(rotated, config='--dpi 300')
angle_rotated_image = re.search('(?<=Rotate: )\d+', osd_output).group(0)

手动指定DPI能避免Tesseract自动估算分辨率的误差,也能提升字符识别的准确性。

4. 给图片做预处理(如果字符太少/模糊)

如果图片本身字符少或者清晰度不够,Python3.6环境下的库处理效果可能不如3.8,你可以先做简单的预处理增强:

from PIL import Image, ImageEnhance

# 增强对比度,让字符更清晰
enhancer = ImageEnhance.Contrast(rotated)
rotated = enhancer.enhance(2.0)

# 如果字符太小,放大图片(用LANCZOS算法保证清晰度)
rotated = rotated.resize((rotated.width*2, rotated.height*2), Image.LANCZOS)

预处理后再调用image_to_osd,Tesseract就能检测到足够的字符完成方向识别了。

5. 确认Tesseract路径配置正确

虽然3.8环境能用,但3.6环境可能没正确配置Tesseract的路径。你可以在脚本开头手动指定:

pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

确保这个路径和你3.8环境里的Tesseract路径完全一致,避免版本不一致的问题。


内容的提问来源于stack exchange,提问作者Aimedk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 13:08:14