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

PyTesseract识别图片小数失败,返回空串或随机数字求助

数字识别问题修复方案

问题分析

当前的HSV阈值分割未准确提取数字区域,加上预处理步骤不够精准,导致Tesseract无法有效识别目标数字,出现空结果或随机误识别。

优化后的代码

import cv2
import numpy as np
import pytesseract

# 提前配置Tesseract路径(确认路径与本地安装目录一致)
pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"

# 读取图片,先校验路径有效性
img = cv2.imread("screenshot.png")
if img is None:
    print("图片读取失败,请检查文件路径")
    exit()

# 替换HSV转为灰度图——更适配文字识别场景
gry = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 用自适应阈值分割,应对局部明暗不均的情况
thr = cv2.adaptiveThreshold(
    gry, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 11, 2
)

# 放大图片,强化数字特征
thr = cv2.resize(thr, None, fx=2, fy=2, interpolation=cv2.INTER_CUBIC)

# 形态学闭运算,消除小噪声并让数字边缘更连贯
kernel = np.ones((2, 2), np.uint8)
thr = cv2.morphologyEx(thr, cv2.MORPH_CLOSE, kernel)

# 调整Tesseract配置:--psm 7适配单行数字识别,digits限定识别范围
txt = pytesseract.image_to_string(thr, config="--psm 7 digits")

# 清理结果中的空白字符
txt = txt.strip()
print("识别结果:", txt)

关键优化说明

  • 替换色彩空间:灰度图比HSV更适合文字识别,避免阈值设置偏差导致的区域漏选
  • 自适应阈值:相比固定阈值,能自动适配图片局部明暗差异,精准分离数字与背景
  • 形态学操作:消除干扰噪声,强化数字边缘完整性,降低识别误判概率
  • 调整识别模式:--psm 7专门针对单行文本识别,比--psm 6的全局识别更精准

内容的提问来源于stack exchange,提问作者Diego Cândido

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 03:57:09