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

pytesseract.image_to_string数字识别出错多出前置字符如何修复

问题修复方案

导致识别多输出前置6的核心原因是阈值处理后图像边缘残留噪点、裁剪区域边界的无效像素被误识别,可按以下步骤调整修复:

1. 收缩图像裁剪范围,移除边界无效像素

当前裁剪逻辑保留的边界大概率携带了窗口阴影、边框等冗余像素,往内收缩裁剪范围即可避免这部分内容进入识别环节:

# 原裁剪代码
im = im.crop((x1+640,y1+125,x2-130,y2-670))
# 修改为(可根据实际显示效果微调收缩数值)
im = im.crop((x1+650,y1+135,x2-140,y2-680))

2. 优化预处理流程,清除细小噪点

在现有阈值处理后新增形态学开运算,主动过滤掉画面中尺寸极小的噪点:

thresh = 255 - cv2.threshold(blur, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
# 新增去噪逻辑,内核大小可根据实际效果调整
kernel = np.ones((3,3), np.uint8)
thresh = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel, iterations=1)

3. 调整Tesseract识别参数

替换PSM参数为更适配单行纯数字识别的模式,同时匹配你保存截图时设置的600dpi,提升识别准确率:

# 原识别代码
data = pytesseract.image_to_string(thresh, lang='eng',config='--psm 13 --oem 3 -c tessedit_char_whitelist=0123456789')
# 修改后
data = pytesseract.image_to_string(thresh, lang='eng',config='--psm 7 --oem 3 --dpi 600 -c tessedit_char_whitelist=0123456789')

4. 增加业务规则校验

因为你的场景为固定4位数字识别,可在输出前增加长度校验,直接过滤掉误识别的前置字符:

data = wording(data).strip()
# 新增校验逻辑,长度超过4位时取最后4位即可
if len(data) > 4:
    data = data[-4:]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:15:07