Pytesseract识别图片0.01误输出201,如何提升OCR识别准确率
修正后可正确识别0.01的代码
import pytesseract try: from PIL import Image except ImportError: import Image import numpy as np import cv2 img = Image.open('test.png') processed_image = np.asarray(img) processed_image = cv2.cvtColor(processed_image, cv2.COLOR_BGR2GRAY) # 放大2倍提升小字符辨识度 processed_image = cv2.resize(processed_image, None, fx=2, fy=2, interpolation=cv2.INTER_CUBIC) # 二值化处理 processed_image = cv2.threshold(processed_image, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1] # 去噪处理 processed_image = cv2.medianBlur(processed_image, 3) # 限定字符白名单+适配短文本识别模式 text = pytesseract.image_to_string(processed_image, config='--psm 8 -c tessedit_char_whitelist=0123456789.').strip() print(text)
核心优化点
- 移除代码中无效的
cv2np冗余导入 - 新增图像放大逻辑:原图像字符尺寸过小,放大后可避免小数点被误判为字符间隙或数字0,也能减少字符形状的误识别
- 新增中值滤波步骤:消除二值化后产生的零星噪点,避免噪点被判定为字符笔画
- 调整tesseract识别配置:增加字符白名单限定仅识别数字和小数点,从根源避免跨字符匹配错误;将psm模式从7(单行文本)调整为8(单个词),更适配短字符的识别场景
- 若仍存在识别偏差,可在二值化后增加反色处理:
processed_image = 255 - processed_image,适配不同明暗的字符背景
内容的提问来源于stack exchange,提问作者Asif Shiraz
相关产品推荐
相关产品推荐

