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

使用RaspberryPi+摄像头识别电表数字,pytesseract无法正常识别

电表OCR识别故障修复方案

问题背景

使用Raspberry Pi搭配摄像头拍摄电表图片进行OCR识别时,遇到两类问题:

  • 执行阈值处理后,Tesseract无法识别任何内容
  • 跳过阈值处理时,识别出的数字错误率高且不完整

相关图片:

  • 原始图片:原始图片
  • CV处理后图片:CV处理后图片
  • 未做阈值处理的图片:未做阈值处理的图片

当前使用代码:

import pytesseract
import cv2
img = cv2.imread('meter2.jpg',cv2.IMREAD_GRAYSCALE)
img = cv2.bitwise_not(img)
img = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,11,2)
cv2.imwrite('meter-processed.jpg',img)
custom_config = r'--oem 3 --psm 11 -c tessedit_char_whitelist=0123456789'
num = pytesseract.image_to_string(img,config=custom_config)
print(num)

针对性优化方案

1. 修复预处理流程,避免数字边缘丢失

从处理后的图片可见,自适应阈值参数(窗口大小11、权重2)导致部分数字的笔画被过度模糊,完全丢失识别特征。建议替换为高斯模糊+OTSU自动阈值组合:

import pytesseract
import cv2

# 读取灰度图
img = cv2.imread('meter2.jpg', cv2.IMREAD_GRAYSCALE)
# 高斯模糊降噪,消除摄像头噪点
img = cv2.GaussianBlur(img, (5, 5), 0)
# OTSU自动计算最优阈值,同时反转黑白(匹配电表数字的亮字暗底)
_, img = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
cv2.imwrite('meter-processed.jpg', img)

2. 调整Tesseract识别参数,适配电表场景

当前--psm 11是针对稀疏文本的通用模式,不适合电表这种固定格式的数字块。推荐使用以下PSM模式:

  • --psm 6:假设图像是单一均匀文本块(适合整组电表数字)
  • --psm 7:将图像视为单行文本(如果数字是横向排列)

修改后的配置:

custom_config = r'--oem 3 --psm 6 -c tessedit_char_whitelist=0123456789'
num = pytesseract.image_to_string(img, config=custom_config)
print(num)

3. 裁剪数字区域,排除背景干扰(核心优化)

原始图片中电表数字仅占小部分区域,大量背景元素会误导识别。手动裁剪数字区域后再处理,能大幅提升准确率:

# 示例:根据你的图片测量数字区域的坐标(x1, y1)(左上角)、(x2, y2)(右下角)
# 需自行调整坐标值,可通过画图工具查看像素位置
x1, y1 = 200, 300
x2, y2 = 600, 400
cropped_img = img[y1:y2, x1:x2]

# 后续预处理和OCR均使用裁剪后的图像
cropped_img = cv2.GaussianBlur(cropped_img, (5,5), 0)
_, cropped_img = cv2.threshold(cropped_img, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
cv2.imwrite('meter-cropped.jpg', cropped_img)

num = pytesseract.image_to_string(cropped_img, config=custom_config)
print(num)

4. 树莓派环境校验

确保依赖库是最新版本:

# 更新系统并安装最新Tesseract
sudo apt update && sudo apt install tesseract-ocr tesseract-ocr-eng -y
# 升级Python依赖
pip install --upgrade pytesseract opencv-python

验证步骤

  1. 先裁剪出精准的数字区域
  2. 执行高斯模糊+OTSU阈值预处理
  3. 使用--psm 6配置运行OCR
  4. 逐步调整参数(比如模糊窗口大小、PSM模式)直到得到稳定结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 05:42:46