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

使用pytesseract识别图片数字输出异常 寻求更优图像文本识别方案

数字识别问题解决方案

核心问题原因

你用pytesseract识别出错的核心原因是未提前做图像预处理,原始图片带背景噪点、数字为特定彩色,不符合tesseract默认的识别输入要求,且没有限定识别字符范围导致输出乱码。

方案1:pytesseract + 图像预处理(改动最小)

先通过OpenCV对图像做预处理,提取蓝色数字区域二值化后再识别,代码示例如下:

import cv2
import numpy as np
import pytesseract

# 读取原始图像
img = cv2.imread("mask2.png")
# 转HSV色彩空间提取蓝色区域
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 蓝色阈值范围,可根据实际效果微调
lower_blue = np.array([100, 40, 40])
upper_blue = np.array([140, 255, 255])
mask = cv2.inRange(hsv, lower_blue, upper_blue)
# 形态学操作去除噪点
kernel = np.ones((2, 2), np.uint8)
mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)

# 限定仅识别数字,psm 7表示按单行文本识别
number = pytesseract.image_to_string(mask, config='--psm 7 -c tessedit_char_whitelist=0123456789')
print(number.strip())

方案2:用PaddleOCR替代tesseract(准确率更高)

如果预处理后tesseract识别效果仍不稳定,推荐换用PaddleOCR,对低分辨率特定字符的识别准确率远高于tesseract,无需复杂预处理即可直接识别,代码示例如下:

from paddleocr import PaddleOCR

# 初始化OCR,关闭方向检测、限定识别数字
ocr = PaddleOCR(use_angle_cls=False, lang='en', show_log=False)
result = ocr.ocr("mask2.png", cls=False)
# 提取识别结果
number = result[0][0][1][0].strip()
print(number)

安装依赖只需执行:pip install paddlepaddle paddleocr 即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:06:03