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

如何从滚动字幕视频中提取文本并保存为TXT文件?

从滚动字幕视频提取唯一文本的解决方案

问题描述

从视频逐帧OCR提取滚动字幕时,会因帧内容重复得到大量冗余文本,需要提取完整且唯一的字幕内容。

原代码的问题

原代码仅通过判断文本结尾是否带-来识别滚动字幕,但未做去重处理,导致重复文本大量累积;同时未利用定义的置信度阈值,也没有针对滚动字幕的跨行续接逻辑优化。

改进后的代码

import cv2
import easyocr

# 初始化EasyOCR识别器(支持英文)
reader = easyocr.Reader(['en'])

# 打开目标视频文件
video = cv2.VideoCapture('path/to/video')

# 配置关键参数
confidence_threshold = 0.65  # OCR结果置信度阈值
frame_skip = 5  # 跳帧间隔,减少重复检测
processed_lines = set()  # 存储已处理的文本行,用于去重
current_partial_line = ""  # 处理跨行续接的不完整文本

while True:
    ret, frame = video.read()
    if not ret:
        break

    # 跳帧处理,降低重复检测频率
    if int(video.get(cv2.CAP_PROP_POS_FRAMES)) % frame_skip != 0:
        continue

    # 帧预处理:转灰度+二值化,提升OCR准确率
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    _, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)

    # 带置信度的OCR识别,保留细节用于过滤
    results = reader.readtext(binary, detail=1, paragraph=True, text_threshold=0.50)

    for result in results:
        text = result[1]
        confidence = result[2]
        # 过滤低置信度结果
        if confidence < confidence_threshold:
            continue

        # 处理跨行续接:如果当前有未完成的行,先拼接
        if current_partial_line:
            text = current_partial_line.rstrip('-') + text
            current_partial_line = ""

        # 判断是否是不完整的行(结尾带-,说明下帧会续接)
        if text.endswith('-'):
            current_partial_line = text
            continue

        # 去重:仅保留未处理过的文本行
        if text not in processed_lines:
            processed_lines.add(text)

# 处理最后可能剩余的不完整行
if current_partial_line:
    processed_lines.add(current_partial_line.rstrip('-'))

# 将唯一文本写入输出文件
with open('output.txt', 'w', encoding='utf-8') as f:
    for line in sorted(processed_lines):
        f.write(line + '\n')

关键改进点

  • 跳帧处理:通过frame_skip参数跳过部分帧,减少重复OCR的次数,提升效率
  • 去重机制:用processed_lines集合存储已提取的文本,避免重复内容写入
  • 跨行续接处理:追踪末尾带-的不完整行,和下一帧的对应文本拼接,保证内容完整
  • 置信度过滤:利用定义的阈值过滤低可信度的OCR结果,提升文本准确性
  • 文件写入优化:使用覆盖写入(w模式)而非追加,避免多次运行时的内容重复

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 12:18:29