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

如何通过OCR识别电子秤数字?已生成掩码图但无法提取数字

电子秤数字提取解决方案

问题分析

当前代码生成的掩码图像已成功分离数字区域,但后续过度膨胀的形态学操作易导致数字变形,加上Tesseract配置不够精准,最终无法正确识别数字。

改进方案

1. 优化图像预处理

针对掩码图像清理噪声、增强数字轮廓,确保数字边缘清晰无粘连;

2. 调整Tesseract配置

使用适配单行数字的页面分割模式,同时限定识别字符范围,提升识别精度。

完整代码实现

import cv2
import numpy as np
import pytesseract

# 加载已生成的掩码图像(灰度模式读取)
msk = cv2.imread("/Users/ahx/Desktop/msk.png", 0)

# 预处理:去除小噪声,增强数字连贯性
# 开运算(先腐蚀再膨胀)清除小斑点噪声
kernel_open = cv2.getStructuringElement(cv2.MORPH_RECT, (2, 2))
clean_msk = cv2.morphologyEx(msk, cv2.MORPH_OPEN, kernel_open, iterations=1)

# 适度膨胀,让数字笔画更连贯
kernel_dilate = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
dilated_msk = cv2.dilate(clean_msk, kernel_dilate, iterations=1)

# 反转图像,转为白色背景黑色文字(符合Tesseract识别习惯)
processed_img = 255 - dilated_msk

# 裁剪数字区域:通过轮廓定位去除多余背景
contours, _ = cv2.findContours(dilated_msk, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
if contours:
    max_contour = max(contours, key=cv2.contourArea)
    x, y, w, h = cv2.boundingRect(max_contour)
    # 扩大裁剪范围,避免截断数字边缘
    x = max(0, x - 5)
    y = max(0, y - 5)
    w = min(processed_img.shape[1], w + 10)
    h = min(processed_img.shape[0], h + 10)
    processed_img = processed_img[y:y+h, x:x+w]

# 保存预处理后的图像用于调试
cv2.imwrite("/Users/ahx/Desktop/processed.png", processed_img)

# Tesseract配置:指定仅识别数字和小数点,适配单行文本
custom_config = r'--oem 3 --psm 7 -c tessedit_char_whitelist=0123456789.'
txt = pytesseract.image_to_string(processed_img, config=custom_config)

# 清理识别结果,保留有效字符
result = ''.join([c for c in txt if c.isdigit() or c == '.'])
print("识别结果:", result)

# 显示预处理后的图像
cv2.imshow("Processed Image", processed_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

关键改进点说明

  • 预处理优化:开运算去除小噪声,适度膨胀避免数字笔画断裂,反转图像匹配Tesseract的识别偏好;
  • 区域裁剪:通过轮廓定位提取数字区域,减少无关背景对OCR的干扰;
  • Tesseract配置:
    • --oem 3:使用默认OCR引擎,兼容性更强;
    • --psm 7:将图像视为单行文本,适配电子秤数字的布局;
    • 字符白名单限定仅识别数字和小数点,过滤无关字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 08:40:31