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

使用Python的Tesseract提取视频帧数字失败求助

视频帧数字识别偏差及不稳定问题的解决方案

你当前的代码在图像预处理和Tesseract配置上存在核心问题,导致本该识别为7.7或77的内容被误识别为17、717甚至4,且结果不稳定:

  • 固定阈值和单一形态学膨胀无法有效抑制视频帧的噪点,光照波动也会影响阈值效果
  • OCR配置未限定识别字符集,且PSM模式适配性差,导致无关干扰被误判为数字

优化后的完整代码

import cv2
import pytesseract
import re

def getText(filename):
    img = cv2.imread(filename)
    if not img.any():
        return ""
    
    # 转为灰度图,简化处理流程
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    
    # 自适应高斯阈值,应对局部光照变化
    thresh = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
                                   cv2.THRESH_BINARY_INV, 11, 2)
    
    # 裁剪目标区域(请根据实际帧确认坐标,确保完全覆盖数字及小数点)
    cropped_thresh = thresh[120:410, 300:800]
    
    # 形态学操作:先腐蚀去噪,再膨胀强化数字边缘
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (2, 2))
    cropped_thresh = cv2.erode(cropped_thresh, kernel, iterations=1)
    cropped_thresh = cv2.dilate(cropped_thresh, kernel, iterations=1)
    
    # Tesseract配置:限定仅识别数字和小数点,指定单行文本模式
    custom_config = r'--psm 7 -c tessedit_char_whitelist=0123456789.'
    txt = pytesseract.image_to_string(cropped_thresh, config=custom_config).strip()
    
    # 后处理:提取有效数字格式,过滤无效内容
    # 优先匹配标准数字格式(整数或带小数点)
    valid_match = re.match(r'^\d+\.?\d*$', txt)
    if valid_match:
        return valid_match.group()
    # 若匹配失败,提取所有数字和小数点
    cleaned = re.sub(r'[^0-9.]', '', txt)
    return cleaned if cleaned else ""

关键优化说明

  1. 预处理优化

    • 替换HSV通道为灰度图,简化处理同时保留数字对比度
    • 改用自适应高斯阈值,比固定OTSU阈值更适配视频帧的光照波动,避免局部过暗/过亮导致的数字丢失
    • 调整形态学操作顺序(先腐蚀后膨胀),有效去除图像噪点,同时强化数字边缘,减少识别干扰
  2. OCR配置调整

    • 使用--psm 7将图像视为单行文本,完全匹配数字的显示场景
    • 通过tessedit_char_whitelist限定仅识别数字和小数点,从根源上避免无关字符的误识别
  3. 结果后处理

    • 用正则表达式过滤无效内容,优先提取符合格式的数字;若识别结果有冗余字符,自动清理后保留有效部分

额外建议

  • 检查裁剪区域坐标[120:410, 300:800],确保完全覆盖目标数字(包括小数点),避免因裁剪遗漏导致识别错误
  • 对于视频连续帧,可对多帧识别结果取众数或加权平均,进一步提升结果稳定性
  • 确保安装的Tesseract为最新版本,旧版本可能存在数字识别的已知bug

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 20:35:06