用 VideOCR 从视频里抠硬字幕
最近想拿一些英语视频当教学材料,需要把字幕提取出来给 AI 喂。以前一直用 网易见外 做语音转写,但结果很糟糕——专有名词乱拼、标点瞎加、断句完全看心情,每段都得手动过一遍。
关键是:这些视频本来就带着内嵌字幕,根本不需要语音识别,只需要把画面里的字读出来就行了。所以问题变成了视频 OCR。
翻了一圈,找到 VideOCR — 一个专门干这事的小工具。
VideOCR 是什么
一个带 GUI 的视频硬字幕提取工具,背后的 OCR 引擎是 PaddleOCR(百度开源),支持 200+ 种语言。也可以切换到 Google Lens 模式,利用云端做文字识别,速度更快。
有 Windows 版和 Linux 版,也提供了 Docker 镜像,不想装环境的话可以直接拉容器跑。
为什么它比语音识别好
语音转写(ASR)的问题是它只能猜字幕内容,遇到口音、背景音乐、多人重叠说话,基本靠不住。而内嵌字幕本身就是文本的精确呈现,OCR 直接读画面,不会有 ASR 那种"听错了"的错。
| 网易见外(ASR) | VideOCR | |
|---|---|---|
| 识别对象 | 语音 | 画面字幕 |
| 正确率 | 受口音/噪音/语速影响大 | 受画质/字体影响,字幕清晰时几乎 100% |
| 后处理 | 经常要改 | 几乎不用改 |
| 语言 | 中英为主 | 200+ 种 |
| 本地运行 | ❌ 必须上传 | ✅ 纯本地/自托管 |
怎么用
GUI 版最直观:导入视频,拖动时间轴定位字幕区域,画一个选框框住字幕行(左右留一点余量),点击 Run 就行了。输出是标准的 .srt 文件,可以直接拖进剪辑软件或作为 AI 上下文。
CLI 版适合批量处理:
.\videocr-cli.exe \
--video_path "lecture.mp4" \
--output "lecture.srt" \
--lang en \
--time_start "18:40" \
--use_gpu true关键参数:
--lang:字幕语言,PaddleOCR 支持 200+ 种--ssim_threshold:帧相似度阈值,值越低跳过的重复帧越多,速度越快。字幕区域选取精确的话,调到 85 都没问题--frames_to_skip:每隔几帧采样一次,想要精确时间戳就设 0--ocr_engine:paddleocr(本地)或google_lens(在线,更快)
Docker 用户:
docker run --rm -it --gpus all \
-v /path/to/videos:/data \
ghcr.io/timminator/videocr-cli-gpu-cuda12.9:latest \
--video_path /data/lecture.mp4 \
--output /data/lecture.srt \
--use_gpu true一些细节经验
- 选框不要贴着字 — 上下留点缓冲区,OCR 准确率更高;但选框也不要太大,不然会框进背景干扰
- PaddleOCR 跑 CPU 很慢 — 有独显一定开
--use_gpu;没独显用 Google Lens 模式 - 后处理补空格 —
--post_processing参数会修复 PaddleOCR 常见的缺空格问题(目前支持英/西/葡/德/意/法) - 中文简繁 — 有
--normalize_to_simplified_chinese参数,繁体自动转简体 - 亮度阈值 — 白字字幕可以设
--brightness_threshold把暗部涂黑,提升识别效果
适合什么场景
- 教学视频:把课堂录像的字幕提取出来,给 AI 做语料分析或生成练习题
- 外语影视:下载带内嵌字幕的外语片,提取字幕做精读 / 查词 / 对照翻译
- 演讲稿转文字:带字幕的 TED 类视频,一键出稿
只要视频本身有清晰的硬字幕,VideOCR 就是最直接的解法,比语音转写省心太多了。
