如何用本地OCR一键提取视频字幕?Video-subtitle-extractor 上手指南
【免费下载链接】video-subtitle-extractor视频硬字幕提取,生成srt文件。无需申请第三方API,本地实现文本识别。基于深度学习的视频字幕提取框架,包含字幕区域检测、字幕内容提取。A GUI tool for extracting hard-coded subtitle (hardsub) from videos and generating srt files.项目地址: https://gitcode.com/gh_mirrors/vi/video-subtitle-extractor
深夜补看一场错过直播的技术讲座,讲师语速飞快,字幕一闪而过。你想把那几句关键台词记进笔记,却发现回放根本没有字幕文件可下载——唯一办法是暂停、截图、再手动敲字。半小时的视频,光是打字就能耗掉一整晚。
其实这件事可以完全自动化:把画面里"焊死"在视频上的硬字幕识别出来,直接整理成可编辑的 srt 字幕文件。本地OCR视频字幕提取工具Video-subtitle-extractor(以下简称 VSE)就是为此而生的开源方案——不依赖任何在线服务,装上就能跑。
🎬 一句话认识它:一个把"视频字幕"变成"文本文件"的本地工具箱
VSE 做的事可以用一句话概括:打开一个视频,框选字幕出现的位置,点一下运行,它就帮你把字幕逐行识别出来,生成 srt 字幕文件(也可输出 txt)。
和常见的云端 OCR 方案相比,"本地运行"这个特点带来了三个实打实的好处:
- 隐私安全:视频全程不出你的电脑,不会上传到任何服务器,敏感素材也能放心处理
- 零 API 费用:不需要申请百度、阿里等第三方 OCR 服务的密钥,也就不存在按次计费和额度耗尽的问题
- 不限次数:想提多少提多少,批量处理大量视频也不会被限流
下面是 VSE 实际运行时的界面:视频播放区中,正在出现的英文字幕被绿色框实时高亮;右侧面板可以切换语言、识别模式与硬件加速开关;下方的任务列表和日志区域会实时显示每一段视频的处理进度与耗时。
🚀 三步搞定第一次本地字幕提取
从零到拿到第一份字幕文件,只需要走完下面三步。
第一步:准备好 Python 3.12 以上的环境
建议用虚拟环境安装,避免依赖和系统其他项目互相干扰:
python -m venv videoEnv # Windows:videoEnv\Scripts\activate # macOS / Linux:source videoEnv/bin/activate第二步:获取项目并安装依赖
git clone https://gitcode.com/gh_mirrors/vi/video-subtitle-extractor cd video-subtitle-extractor pip install -r requirements.txt有 NVIDIA 显卡的朋友,可以按项目文档的指引把 PaddlePaddle 换成 GPU 版本以启用 CUDA 加速;AMD / Intel 显卡用户则对应使用 DirectML 版本。拿不准时先装 CPU 版本跑通流程,之后再升级也不迟。
第三步:处理你的第一段视频
- 图形界面:运行
python gui.py - 命令行模式:运行
python ./backend/main.py
以 GUI 为例,操作路径非常直观:点击"打开"选择视频 → 调整字幕区域框选位置 → 在右侧选择字幕语言和识别模式 → 点击运行,等待进度条走完即可。
小提示:仓库的test/目录里自带英语、日语、韩语等多段测试视频,第一次上手可以直接拿它们练手,省去找素材的功夫。另外记得,视频文件和项目路径都不要包含中文和空格,这是项目文档里明确提醒过的"未知错误"高发区。
🔍 原理不神秘:找黑板、抄笔记、对答案
VSE 的完整流程听起来复杂,但拆开看只有三步,用教室里的场景就能讲明白。
第一步,找黑板——字幕区域检测。
视频帧里文字可能出现在任何角落,所以系统会先在每一帧里定位"文字集中出现的位置",也就是字幕区域。你在 GUI 里手动框选的那个范围,本质上就是告诉它"黑板在这"。这一步的核心逻辑在backend/tools/subtitle_detect.py,而记录区域坐标的数据结构定义在backend/bean/subtitle_area.py。
第二步,抄笔记——OCR 文本识别。
定位到"黑板"之后,就要把上面的字一个个抄下来。这一步由backend/tools/ocr.py负责,它调用的是项目自带的 PP-OCRv5 系列深度学习模型,模型文件就放在backend/models/V5/目录下。抄写质量好不好,很大程度上取决于你选的语言模型是否匹配视频内容。
第三步,对答案、删重复——字幕后处理。
抄下来的文字往往带着重复行、错别字和时间轴错位,不能直接用。backend/tools/reformat.py会负责去除重复字幕、按时间排序、修正常见错误,最终输出规整的 srt 文件。顺便说一句,项目里那张backend/configs/typoMap.json修正表,就是给"对答案"环节准备的——你可以在里面手动指定"哪些词要被替换或删除"。
下面的架构图展示了 VSE 界面的模块划分思路:视频播放区、输出信息区、运行按钮与进度条各司其职,右侧的弹出框则用于确认操作。理解了这个布局,操作起来会更有方向感。
视频字幕提取工具界面架构设计图:播放区、信息区与运行控制区模块划分清晰
💡 进阶玩法:从"能跑"到"用好"
跑通第一段视频之后,下面这些能力能让你真正把它用顺手。
多语言识别。VSE 支持包括中英日韩、繁简体中文、阿拉伯语、俄语、西班牙语等在内共 87 种语言的识别。新手操作建议:先在右侧面板确认字幕语言选项,再根据视频类型在backend/models/V5/下核对对应的语言模型是否存在。
硬件加速。项目支持 CUDA、DirectML、CPU 与 ONNX 四种运行模式。新手建议:NVIDIA 显卡优先选 CUDA 模式;AMD / Intel 的核显或 APU 用户选 DirectML 模式,都能获得明显比纯 CPU 更快的处理速度。
三种识别模式。"快速"用轻量模型,速度最快;"精准"逐帧检测、几乎不漏字幕但非常慢;"自动"会按当前硬件自动选模型,属于均衡之选。新手建议:先跑"快速"模式看看效果,如果发现丢字幕较多,再切换"精准"模式重跑。
批量提取。一次选择多个视频可以排队处理,特别适合处理分辨率、字幕区域一致的系列视频。注意:批量任务要求所有视频的字幕位置保持一致,否则识别区域会错位。
自定义错字修正。编辑backend/configs/typoMap.json,就能把经常识别错的词统一替换掉,也能把水印、台标这类不想要的文字直接清空。这是提升字幕质量成本最低的手段,强烈建议用起来。
⚠️ 避坑手册:新手最容易踩的三个坑
坑一:路径带中文或空格,程序报奇怪错误。原因:底层组件对中文和空格路径支持不佳。 解法:把视频和项目都放在纯英文、无空格的目录下,再重新运行。
坑二:GPU 版本装好后,运行时报 cuda / cudnn 相关错误。原因:显卡驱动版本与所选的 CUDA 版本不匹配。 解法:先确认自己的显卡型号和驱动版本,再对照项目文档选择对应的 CUDA 或 DirectML 方案;实在搞不定,先退回 CPU 版本保证能用。
坑三:模型加载失败或下载卡住。原因:网络不稳定,或模型文件不完整。 解法:确认backend/models/V5/下各模型的配置文件与参数文件齐全,必要时重新下载后解压覆盖。
写在最后
字幕本来就不该只是"看得见却摸不着"的画面元素。借助 VSE 这样的本地OCR工具,一段视频里的每一句话都能变成可搜索、可编辑、可翻译的文本资产——无论你是想给课程做双语笔记,还是给自媒体视频配外挂字幕,它都能帮你把重复劳动省下来。
这个项目仍在持续迭代,如果你在使用的过程中发现了问题或想到了更好的点子,不妨在项目的 Issue 区留下你的反馈,说不定下一个版本的功能就来自你的建议。现在,去test/里挑一段视频,亲手体验一下"字幕自己蹦出来"的感觉吧。
【免费下载链接】video-subtitle-extractor视频硬字幕提取,生成srt文件。无需申请第三方API,本地实现文本识别。基于深度学习的视频字幕提取框架,包含字幕区域检测、字幕内容提取。A GUI tool for extracting hard-coded subtitle (hardsub) from videos and generating srt files.项目地址: https://gitcode.com/gh_mirrors/vi/video-subtitle-extractor
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考