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

pytesseract识别清晰屏幕数字时频繁增删改字符、准确率不稳定如何解决

识别准确率优化方案

1. 预处理逻辑修正

当前预处理步骤存在多个可能导致数字变形的问题,按如下规则调整:

  • 废弃固定阈值二值化,改用自适应阈值适配光线波动:
    # 若数字为黑底白字用cv2.THRESH_BINARY,白底黑字用cv2.THRESH_BINARY_INV
    imgCrop = cv2.adaptiveThreshold(imgCrop, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2)
    
  • 调整缩放逻辑:取消先缩小全屏再裁ROI的操作,直接从原始全屏图像裁剪ROI后再缩放,避免全局缩放导致的数字笔画变形。缩放后保证单数字高度在30-50像素区间即可,不需要固定0.2的缩放比例。
  • 降低形态学操作强度:核大小改为(2,2),迭代次数改为1,避免过度处理磨掉5的下缺口、3的上缺口等特征,导致字符混淆:
    kernel2 = cv2.getStructuringElement(cv2.MORPH_RECT, (2,2))                              
    imgCrop = cv2.morphologyEx(imgCrop, cv2.MORPH_CLOSE, kernel2, iterations=1)
    

2. Tesseract参数调整

  • 将--psm 6替换为--psm 7,psm 7专门适配单一行短文本的识别场景,比默认的psm 6更适合纯数字串识别。
  • 收窄字符白名单:如果业务场景没有正负号,直接去掉白名单里的+和-,减少误识别概率,配置项改为:
    cong = r'--psm 7 -c tessedit_char_whitelist=0123456789.'
    
  • 识别后过滤无效字符,去掉换行、分页符等不可见内容:
    datapoint = pytesseract.image_to_string(imgCrop, lang='eng', config=cong).strip().replace('\n','').replace('\x0c','')
    

3. 规则校验补正

不需要训练Tesseract模型,通过简单规则即可过滤大部分错误结果:

  • 每个ROI提前预设合法数值范围、小数位数规则,识别结果不符合规则时,优先取上一次采集的合法值,或者连续采集2-3次取众数结果。
  • 针对常出现的字符混淆问题,加简单映射修正:
    # 根据实际错误场景补充映射规则
    fix_map = {'3':'5', '9':'5'}
    for k,v in fix_map.items():
        if datapoint == k and 不符合k的合法规则:
            datapoint = v
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:18:03