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

如何使用pytesseract准确识别含纯数字的图片文本?

优化pytesseract数字识别准确率的方案

问题场景

现有处理流程:截取屏幕截图→裁剪指定坐标的数字区域→反相阈值处理得到白底黑字效果。执行以下代码后识别结果不可靠:

custom_config = r'--oem 3 --psm 7 -c tessedit_char_whitelist= 0123456789/'
result = pytesseract.image_to_string(image_processed, lang='eng', config=custom_config)

输出结果:43659 [44 38

具体优化步骤

  • 修正字符白名单格式:白名单中0123456789/前的空格会引入无效字符识别,修改后配置:

    custom_config = r'--oem 3 --psm 7 -c tessedit_char_whitelist=0123456789/'
    
  • 调整PSM页面分割模式:

    • 若数字为多行布局,改用--psm 6(将图像视为单一文本块)
    • 确认数字为单行后保留--psm 7,否则选择适配当前图像布局的模式
  • 强化图像预处理:

    • 去除噪点:添加形态学开操作清除小干扰
      import cv2
      import numpy as np
      kernel = np.ones((2,2), np.uint8)
      image_cleaned = cv2.morphologyEx(image_processed, cv2.MORPH_OPEN, kernel)
      
    • 提升分辨率:低分辨率截图可放大后再识别
      image_scaled = cv2.resize(image_processed, None, fx=2, fy=2, interpolation=cv2.INTER_CUBIC)
      
    • 优化阈值处理:用自适应阈值替代固定阈值,适配局部亮度差异
      image_threshold = cv2.adaptiveThreshold(image_processed, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 11, 2)
      
  • 更换OCR引擎模式:尝试纯LSTM引擎(--oem 1),对现代屏幕字体识别更精准:

    custom_config = r'--oem 1 --psm 7 -c tessedit_char_whitelist=0123456789/'
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 13:12:43