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

Pytesseract无法稳定识别数字,求有效解决方案

Pytesseract数字识别优化方案

针对你使用Pytesseract识别数字时结果不稳定的问题,可通过图像预处理和配置调整来解决,具体步骤如下:

1. 图像预处理(核心优化点)

Tesseract对输入图像的对比度、清晰度要求较高,先对图像做预处理能大幅提升识别率:

  • 转为灰度图:消除彩色通道干扰
  • 二值化处理:强化数字与背景的边界
  • 去噪:过滤图像中的杂色点

示例预处理代码:

import cv2
from pytesseract import pytesseract

def preprocess_image(img_path):
    # 读取图像
    img = cv2.imread(img_path)
    # 转为灰度图
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # 自适应二值化(适配光照不均场景)
    thresh = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 11, 2)
    # 中值滤波去噪
    denoised = cv2.medianBlur(thresh, 3)
    return denoised

2. 优化Tesseract配置

  • 限制识别字符集:仅保留数字,避免误识别标点或无关字符
  • 调整PSM模式:结合图像特点选择合适模式,比如PSM 6(单一文本块)或PSM 10(单一字符)
  • 优先使用LSTM引擎(OEM 1):比默认混合引擎更适配现代字符识别场景

修改后的测试代码:

processed_img = preprocess_image('foo.png')

for i in range(6,14):
    config = f'--oem 1 --psm {i} -c tessedit_char_whitelist=0123456789'
    text = pytesseract.image_to_string(processed_img, config=config).strip()
    print(f"psm {i}: {text}")

3. 额外建议

  • 如果图像中数字位置固定,可先裁剪出数字区域再识别,进一步减少背景干扰
  • 确保Tesseract为最新版本,旧版本可能存在识别逻辑bug

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 19:01:17