如何使用pytesseract准确识别含纯数字的图片文本?
优化pytesseract数字识别准确率的方案
问题场景
现有处理流程:截取屏幕截图→裁剪指定坐标的数字区域→反相阈值处理得到白底黑字效果。执行以下代码后识别结果不可靠:
custom_config = r'--oem 3 --psm 7 -c tessedit_char_whitelist= 0123456789/' result = pytesseract.image_to_string(image_processed, lang='eng', config=custom_config)输出结果:
43659 [44 38
具体优化步骤
修正字符白名单格式:白名单中
0123456789/前的空格会引入无效字符识别,修改后配置:custom_config = r'--oem 3 --psm 7 -c tessedit_char_whitelist=0123456789/'调整PSM页面分割模式:
- 若数字为多行布局,改用
--psm 6(将图像视为单一文本块) - 确认数字为单行后保留
--psm 7,否则选择适配当前图像布局的模式
- 若数字为多行布局,改用
强化图像预处理:
- 去除噪点:添加形态学开操作清除小干扰
import cv2 import numpy as np kernel = np.ones((2,2), np.uint8) image_cleaned = cv2.morphologyEx(image_processed, cv2.MORPH_OPEN, kernel) - 提升分辨率:低分辨率截图可放大后再识别
image_scaled = cv2.resize(image_processed, None, fx=2, fy=2, interpolation=cv2.INTER_CUBIC) - 优化阈值处理:用自适应阈值替代固定阈值,适配局部亮度差异
image_threshold = cv2.adaptiveThreshold(image_processed, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 11, 2)
- 去除噪点:添加形态学开操作清除小干扰
更换OCR引擎模式:尝试纯LSTM引擎(
--oem 1),对现代屏幕字体识别更精准:custom_config = r'--oem 1 --psm 7 -c tessedit_char_whitelist=0123456789/'
内容的提问来源于stack exchange,提问作者Matteus Barbosa
相关产品推荐
相关产品推荐

