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

Pytesseract无法识别20x10低分辨率图像中的数字该如何解决?

低分辨率数字识别优化方案

Tesseract默认配置对20x10这类极小分辨率的文本适配性极差,没有做预处理和参数调整的情况下无法正确识别数字,可按以下步骤优化:

  • 图像放大:先将原始小分辨率图像放大3~5倍,使用PIL的LANCZOS插值算法保证放大后数字边缘清晰
  • 限制识别范围:给Tesseract传入参数,只允许识别0-9的数字,避免非数字字符的干扰
  • 调整页面分割模式:使用--psm 8参数,告诉Tesseract将输入图像识别为单个单词,适配短数字的识别场景

修改后可直接运行的代码如下:

import pytesseract as pt
from PIL import Image

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

# 读取原始图像
img = Image.open('foo.PNG')
# 放大3倍,用LANCZOS插值保证清晰度,旧版本PIL报错可替换为Image.LANCZOS
img = img.resize((img.width * 3, img.height * 3), Image.Resampling.LANCZOS)
# 配置识别参数:psm8单单词识别,仅识别数字
custom_config = r'--psm 8 -c tessedit_char_whitelist=0123456789'
text = pt.image_to_string(img, config=custom_config)
print(text.strip())

如果调整后仍有识别误差,可额外增加二值化预处理步骤,把图像转为黑白高对比度样式,插入到resize步骤之后即可:

# 二值化预处理,阈值127可根据实际图像明暗调整
img = img.convert('L')
threshold = 127
img = img.point(lambda p: 255 if p > threshold else 0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:15:07