RapidVideOCR:视频硬字幕提取

Posted Liekkas Kono

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RapidVideOCR:视频硬字幕提取相关的知识,希望对你有一定的参考价值。


简体中文 | English

目录

简介

  • 视频硬字幕提取,自动生成对应srt | txt文件。
  • 支持字幕语言:中文 | 英文 (其他可以支持的语言参见:支持语种列表)
  • 可加入QQ群:706807542
  • 更快更准确地提取视频硬字幕,并提供srt| txtl两种格式的输出:
    • 更快:与VideoSubFinder软件结合使用,提取关键字幕帧更快。
    • 更准:采用RapidOCR作为识别库。
    • 更方便:pip直接安装即可使用。
  • 该工具处于发展中。在使用过程中,如果遇到任何问题,欢迎提issue或者入群反馈。
  • 如果不愿意用的话,不用就好,不要影响自己心情。

TODO

  • 增加对VideoSubFinder软件提取字幕帧结果的处理接口
  • 叠字识别功能
  • 尝试将VideoSubFinder核心功能整合到本项目中,通过其开放的CLI mode
  • API docs

整体框架

提取字幕关键帧 OCR VideoSubFinder RapidVideOCR SRT

使用步骤

  1. 安装使用VideoSubFinder软件
  2. 安装rapid_videocr
    pip install rapid_videocr
    
  3. 使用RapidVideOCR工具
    • 脚本运行:
      from rapid_videocr import RapidVideOCR
      
      # RapidVideOCR有两个初始化参数
      # is_concat_rec: 是否用单张图识别,默认是False,也就是默认用单图识别
      # concat_batch: 叠图识别的图像张数,默认10,可自行调节
      extractor = RapidVideOCR()
      
      rgb_dir = 'test_files/TXTImages'
      save_dir = 'result'
      extractor(rgb_dir, save_dir)
      
    • 命令行运行:
      • Usage:
        $ rapid_videocr -h
        usage: rapid_videocr [-h] [-i IMG_DIR] [-s SAVE_DIR] [-o srt,txt,all]
                           [-m single,concat]
        
        optional arguments:
        -h, --help            show this help message and exit
        -i IMG_DIR, --img_dir IMG_DIR
                               The full path of RGBImages or TXTImages.
        -s SAVE_DIR, --save_dir SAVE_DIR
                               The path of saving the recognition result.
        -o srt,txt,all, --out_format srt,txt,all
                               Output file format. Default is "all"
        -m single,concat, --mode single,concat
                               Which mode to run (concat recognition or single
                               recognition), default is "single"
        -b CONCAT_BATCH, --concat_batch CONCAT_BATCH
                               The batch of concating image nums in concat
                               recognition mode. Default is 10.
        
      • Example:
        $ rapid_videocr -i RGBImages -s Results -o srt -m concat -b 10
        
  4. 查看结果
    • 前往save_dir目录下即可查看结果。
    • 值得注意的是,如果想要让视频播放软件自动挂载srt文件,需要更改srt文件名字为视频文件名字,且放到同一目录下,亦或者手动指定加载。

更新日志(more

  • 😀2023-03-14 v2.1.3 update:

    • 修复输入TXTImages目录且叠字识别时错误
  • 😜2023-03-12 v2.1.2 update:

    • 修复索引错误,#22

从 YouTube 视频中提取自动字幕

【中文标题】从 YouTube 视频中提取自动字幕【英文标题】:Extract automatic captions from YouTube video 【发布时间】:2012-12-10 09:48:26 【问题描述】:

我在时遇到问题。

我尝试使用http://video.google.com/timedtext?type=track&v=3wszM2SA12E&name=Automatic&lang=en 方法,但该方法仅适用于那些具有命名曲目的视频。例如,这个没有任何命名的轨道(只有自动字幕)并且没有加载:rrkrvAUbU9Y

有几个网络应用程序可以做到这一点(如http://www.serpsite.com/youtube-subtitles-download-tool/ 和http://mo.dbxdb.com/),但我需要一个脚本,因为我想将它用于我的研究。

任何人有任何想法得到这个的正确方法是什么? YouTube 的 API 有一些关于字幕的内容,但仅适用于注册用户,而上面的应用程序适用于所有视频,我怀疑它们只是从页面中捕获 html 代码(尽管这也是可能的)。一定有办法……请帮忙!

【问题讨论】:

注册用户不使用api是什么原因? @Drifter:你问这个好像拥有 YouTube 帐户是每个人与生俱来的权利。仅仅因为你有一个,并不意味着每个人都可以拥有一个。许多人被法律禁止终身使用 YouTube 帐户。其他人则被无故任意拒绝注册。其他人已经在其他地方拥有足够的帐户,无法管理更多;保留凭证和拥有账户既是负担也是责任。其他人不喜欢被监视。 【参考方案1】:

您需要先调用另一个 API:http://video.google.com/timedtext?type=list&v=3wszM2SA12E

这将为您提供可用曲目的列表。在您的情况下,只能获得一首曲目:id="0" name="Automatic" lang_code="en" lang_original="English" lang_translated="English" lang_default="true"

在这个特定的视频中,我可以通过名称name=Automatic 获得曲目:

https://video.google.com/timedtext?type=track&v=3wszM2SA12E&name=Automatic&lang=en

但是对于另一个视频id= 工作正常:

http://video.google.com/timedtext?type=track&v=zenMEj0cAC4&id=0&lang=en

【讨论】:

此 API 是否已关闭?【参考方案2】:

这是我花了一些时间后的建议:

Js 库:https://github.com/syzer/youtube-captions-scraper => 支持自动生成字幕。

以下2种快捷方式不支持自动生成字幕

获取字幕列表:http://video.google.com/timedtext?type=list&v=lT3vGaOLWqE 获取带有track id的字幕:http://video.google.com/timedtext?type=track&v=lT3vGaOLWqE&id=0&lang=en

快速下载:http://downsub.com/?url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Dag_EJRhMfOM

【讨论】:

【参考方案3】:

从页面获取数据的一个好方法是使用 file_get_contents 但这仅适用于如果视频具有“CC”或字幕按钮,但当它存在时,您可以获得所有文本不幸的是,xml文件中的元素正如“Youtube to caption”服务之一所记录的那样,它需要youtuber启用的字幕才能获取字幕,所以不幸的是,如果没有启用“CC”,您将无法从视频中获取字幕,但是如果你仍然想要你可以在 xml 文件上使用 file_get_contents,然后找到所有的“文本”标签,然后将它们转换为标题。

【讨论】:

【参考方案4】:

我查看了 downsub.com,发现以下 API 调用似乎适用于自动生成的字幕:

https://www.youtube.com/api/timedtext?expire=1491547251&v=YD1tc8lRsdQ&sparams=asr_langs%2Ccaps%2Cv%2Cexpire&hl=en_US&signature=6241BAB9F7E9DB164AFE496B40B4DA4B58B463FD.D7FEC5B2CC81721AF9928215343509E280FEF6BD&asr_langs=pt%2Cit%2Ces%2Cru%2Cfr%2Cko%2Cde%2Cja%2Cnl%2Cen&key=yttt1&caps=asr&kind=asr&lang=en

【讨论】:

我猜他们正在使用 YT 合作伙伴 API。我想你确实注意到了 expire 参数和签名。

以上是关于RapidVideOCR:视频硬字幕提取的主要内容,如果未能解决你的问题,请参考以下文章

我需要一些关于 SRT 字幕文本处理的想法

SRT字幕格式

如何在保持文本结构(标题/副标题/正文)的同时进行 PDF 文本提取的 OCR

什么软件可以把Mp4视频里的字幕提取出来?

如何使用youtube-dl刻录/硬编码已下载的youtube视频的字幕

如何映射用ffmpeg和视频字幕提取的帧? (帧精度问题)