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

Tesseract OCR识别简单数字失败,求改进方案及替代方案

问题分析与解决方案

可能的问题原因

  • 未针对数字识别优化Tesseract配置:默认识别全字符集,易受背景干扰,且未启用数字专属识别规则。
  • 图像预处理不充分:仅调整大小/对比度不够,屏幕截图可能存在抗锯齿、噪点、多余背景等问题,影响识别精度。
  • 屏幕截图的分辨率问题:高DPI屏幕缩放导致截图实际像素模糊,数字边缘不清晰。
  • 数字字体特殊性:部分特殊字体的数字未被Tesseract默认训练数据覆盖。

改进方法

1. 优化Tesseract识别配置

限定只识别数字,并调整页面分割模式(PSM),减少无关干扰:

import pytesseract
from PIL import Image

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

screenshot = Image.open("test_image.png")
# 配置:只识别数字,使用单行文本模式(PSM 7)
custom_config = r'--oem 3 --psm 7 -c tessedit_char_whitelist=0123456789'
text = pytesseract.image_to_string(screenshot, config=custom_config)

print("Recognized Text:", text.strip())
  • --oem 3:使用默认OCR引擎模式
  • --psm 7:假设图像是单行文本(如果是单个数字,改用--psm 10)
  • tessedit_char_whitelist:限定只识别0-9的数字

2. 增强图像预处理

对截图做针对性处理,提升数字清晰度:

import pytesseract
from PIL import Image, ImageOps

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

screenshot = Image.open("test_image.png")
# 1. 裁剪到数字区域(手动确定坐标:left, top, right, bottom)
cropped = screenshot.crop((100, 200, 300, 250))
# 2. 转灰度图
gray = cropped.convert('L')
# 3. 二值化(调整阈值,让数字完全变黑、背景变白)
threshold = 127
binary = gray.point(lambda x: 0 if x < threshold else 255, '1')
# 4. 反色(如果数字是白色、背景是黑色)
binary = ImageOps.invert(binary)

custom_config = r'--oem 3 --psm 7 -c tessedit_char_whitelist=0123456789'
text = pytesseract.image_to_string(binary, config=custom_config)

print("Recognized Text:", text.strip())
  • 裁剪:减少无关背景,让Tesseract聚焦数字区域
  • 灰度+二值化:消除渐变色彩,强化数字边缘
  • 反色:确保数字为深色、背景为浅色(Tesseract对这种模式识别更准确)

3. 优化屏幕截图质量

  • 关闭系统高DPI缩放,或使用支持高DPI的截图工具(比如Windows自带的Snip & Sketch,勾选“捕获全分辨率”)
  • 截图时尽量放大数字区域,保证每个数字的像素足够多

替代方案

  • EasyOCR:针对中文和数字优化的OCR库,无需复杂配置,对屏幕文字识别兼容性更好:
    import easyocr
    
    reader = easyocr.Reader(['en'])  # 仅识别英文/数字
    result = reader.readtext("test_image.png", allowlist='0123456789')
    if result:
        print("Recognized Text:", result[0][1])
    
  • OpenCV轮廓识别+模板匹配:如果数字样式固定(字体、大小不变),可以预先制作数字模板,通过轮廓提取匹配数字,稳定性更高。
  • 自定义Tesseract训练:如果数字字体特殊,可使用Tesseract的训练工具生成专属语言包,提升识别准确率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 10:03:15