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

Python+OpenCV下Pytesseract配置:如何避免返回单数字输出?

解决Tesseract强制识别两位数字的参数配置问题

你的核心需求是让Tesseract只输出两位数字(10-99)、避免单数字结果,首先得修正你原来配置里的错误参数,再加上强制字符长度的限制。

正确的Config参数

直接替换成下面的配置即可:

text = pytesseract.image_to_string(Image.open(filename), config='--oem 3 --psm 8 -c tessedit_char_whitelist=0123456789 -c tessedit_char_min_length=2 -c tessedit_char_max_length=2')

参数详解

我们逐个拆解每个参数的作用,帮你理解为什么这么配置:

  • --oem 3:这是OCR引擎模式的正确写法(你之前的--eom是拼写错误),使用默认的混合引擎(传统引擎+LSTM),兼容性和识别准确率都比较均衡。
  • --psm 8:页面分割模式设为“单个单词”,正好匹配你识别两位数字的场景——两位数字本身就是一个独立的“单词”,让Tesseract不用做复杂的页面分割,专注识别这一组字符。
  • -c tessedit_char_whitelist=0123456789:保留你原来的白名单配置,只允许识别数字,过滤掉任何非数字字符干扰。
  • -c tessedit_char_min_length=2:强制Tesseract返回至少2个字符的结果,直接杜绝单数字输出的可能。
  • -c tessedit_char_max_length=2:限制结果最多2个字符,完全符合你“两位数字”的需求。

额外建议

如果识别准确率还不够理想,建议先对图像做预处理(用OpenCV):

  • 转成灰度图:cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
  • 二值化处理:cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]
  • 去除噪声:比如用cv2.medianBlur()或者cv2.GaussianBlur()

预处理后的图像对比度更高,Tesseract的识别效果会好很多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:32:07