开源项目 · OCR 桌面工具
SubExtractor-OCR 视频字幕提取器
不用再暂停视频,一行行抄字幕。
把视频里有硬字幕的画面抽帧、裁出字幕区域,再交给 OCR 识别并合并成 SRT/TXT。不用再暂停视频一行行抄,适合整理课程、访谈和口播视频的文案。

- 类型
- 桌面字幕提取工具
- 技术
- Python + Qt/PySide6 + OpenCV
- 输出
- SRT / TXT
- OCR
- 本地 UMI-OCR 接口
工作流程
- 选择视频文件,可以一次加入多个。
- 按设定频率抽帧,只保留画面。
- 量取字幕所在的高度区间,作为裁剪区域。
- 把裁剪出的字幕图片交给 OCR 识别。
- 合并识别结果,输出
SRT和TXT。
适合字幕直接烧在画面里的视频。视频文件自带软字幕轨时,优先用播放器或 ffmpeg 直接提取字幕,速度和准确率都更好。
主要功能
批量文件
2.0 界面支持把多个视频加入列表,逐个处理并在日志里显示进度。
可调抽帧
按每秒抽帧数控制采样密度;字幕变化越快,需要的采样越密。
字幕区域裁剪
只把字幕所在的高度区间送去 OCR,减少画面其他文字和背景干扰。
繁简转换
可选把识别结果从繁体转成简体,方便后续整理文案。
进度与日志
抽帧、识别、合并三段进度分开显示,出错时先看日志定位是哪一步。
本地 OCR
默认调用本机 UMI-OCR 的 HTTP 接口,不把视频或截图上传到云端。
本地运行
先准备 Python 3.10+,安装依赖:
bash
pip install PySide6 opencv-python qt_material numpy python-dotenv opencc然后启动本机 UMI-OCR 的 HTTP 服务(默认地址 http://127.0.0.1:1224/api/ocr),再运行:
bash
python main.py如果 OCR 服务不在默认地址,用环境变量覆盖:
bash
UMI_OCR_URL=http://127.0.0.1:1224/api/ocr python main.py仓库里也有 dist/ 打包目录和 requirements.txt;想直接下载安装包,可以先看仓库 Releases,没有现成包时再按源码运行。
使用边界
OCR 的准确率取决于字幕字体、背景、分辨率和视频压缩。字幕区域裁不准、字体太花或画面抖动时,识别结果会变差;批量处理前建议先拿一个视频试跑,确认字幕高度区间。
1.0 版本仍有一些限制:不同视频的字幕位置可能不同,批量化需要逐个确认区域;处理是单线程的,长视频会比较慢。仓库 README 里也列了后续改进方向。
相关入口
开源项目
喜欢这页纸,就去 GitHub 点个 Star。
问题、建议或想要的功能,欢迎在仓库里提 Issue。