English | 中文
从视频中提取硬编码字幕!
通过简单易用的图形界面从视频中提取硬编码(烧录)字幕。VideOCR 支持使用 PaddleOCR 引擎进行 100% 本地处理,以及使用 Google Lens 进行高精度文本识别的混合云端处理。所有配置均可通过点击轻松完成。
此仓库还提供了可与支持的 OCR 引擎结合使用的命令行版本 VideOCR。
最新版本集成了 PaddleOCR 的最新版本用于本地处理,并引入了全新的 Google Lens 混合模式。
您可以使用安装程序进行安装,也可以直接下载包含所有必需文件(包括可执行文件)的压缩包,解压到目标位置即可。
从发布页面下载压缩包,解压到目标位置。
如需将VideOCR添加到应用程序菜单,可在解压后的目录中打开终端并运行以下命令:
./install_videocr.sh
此命令将创建VideOCR的快捷方式。如需移除,可运行:
./uninstall_videocr.sh
导入视频后,可通过时间轴或左右方向键浏览视频内容。通过点击拖拽的方式在视频上绘制裁剪框,选择字幕区域。完成后,点击“运行”按钮开始字幕提取。
更多选项可在“高级设置”选项卡中配置,详细信息可参考CLI版本的参数说明。

解压压缩包后,在目标位置打开终端,运行以下命令:
.\videocr-cli.exe -h
./videocr-cli.bin -h
.\videocr-cli.exe --video_path "视频路径\example.mp4" --output "字幕保存路径\example.srt" --lang en --time_start "18:40" --use_gpu true
更多参数说明请参考下文。
在 CPU 上运行本地 PaddleOCR 过程可能较慢,建议搭配 GPU 使用。
或者,使用 google_lens 引擎可以将流程中最繁重的部分(文本识别)卸载到云端。对于没有强大 GPU 的用户来说,这是一个极佳且快速的选择(需要有效的网络连接)。
裁剪时,在文字上下方留出一定的缓冲空间以提高识别准确率,但不要将裁剪框设置得过大。
| 更高速度 | 更高准确率 | 备注 | |
|---|---|---|---|
| 输入视频质量 | 使用较低质量 | 使用较高质量 | 高分辨率视频的性能影响可通过裁剪减轻 |
frames_to_skip |
数值更高 | 数值更低 | 如需完全准确的时间戳,此参数需设为0。 |
SSIM阈值 |
阈值更低 | 阈值更高 | 若连续帧的SSIM超过此阈值,则跳过OCR。较低的值可显著减少OCR处理的帧数。 |
-
video_path待提取字幕的视频路径。
-
output字幕文件(.srt)保存路径。
-
ocr_engine选择用于文本检测和识别的 OCR 引擎。有效值为
paddleocr(默认)和google_lens。paddleocr在本地执行 100% 的文本检测和识别处理。google_lens采用混合处理模式,在本地使用 PaddleOCR 进行文本检测,并使用 Google Lens 进行文本识别。注意:google_lens模式需要有效的网络连接。 -
lang字幕语言。支持的语言及缩写取决于您选择的
ocr_engine。- 对于
paddleocr:请参考 PaddleOCR文档。 - 对于
google_lens:请参考 Google Lens文档。
- 对于
-
subtitle_position指定字幕在视频中的对齐方式,有助于提升识别准确率。
-
conf_threshold文字预测的置信度阈值。低于此值的文字将被忽略。默认值
75适用于大多数场景(仅适用 PaddleOCR)。若每行文字过少,可降低此值;若每行文字过多,可提高此值。
-
sim_threshold字幕行的相似度阈值。基于Levenshtein距离,高于此阈值的字幕行将被合并。默认值
80适用于大多数场景。若字幕行重复过多,可降低此值;若字幕行过少,可提高此值。
-
ssim_threshold若连续帧的SSIM超过此阈值,则该帧在第 1 步的初始过滤中将被视为相似帧并被丢弃。较低的值可显著减少需要进行OCR处理的图像数量。在字幕区域裁剪较精确的情况下,即使将此值降至 85 也能获得良好的效果。
-
post_processing启用后处理步骤,自动分析并修复缺失的空格(PaddleOCR常见问题)。目前仅支持英语、西班牙语、葡萄牙语、德语、意大利语和法语。详情请参考wordninja-enhanced仓库。
-
max_merge_gap合并相似字幕的最大时间间隔(秒)。默认值0.09(90毫秒)适用于大多数场景。
若发现相同字幕被错误分割为多条,可增加此值。
-
time_start和time_end仅提取视频片段中的字幕。时间戳仍以完整视频长度计算。
-
use_fullframe默认使用裁剪区域或底部三分之一帧进行OCR。设为
True时,将使用完整帧。 -
crop_x(2),crop_y(2),crop_width(2),crop_height(2) -
subtitle_alignment(2)字幕对齐。此参数允许您使用ASS(Advanced SubStation Alpha)标签控制视频帧内字幕的位置。有效值包括:
bottom-left、bottom-center、bottom-right、middle-left、middle-center、middle-right、top-left、top-center、top-right。 -
max_ocr_image_width在传递给OCR引擎之前缩小裁剪的图像帧,使其宽度不超过此设定值。较低的数值可缩短处理时间,但设置过低可能会降低OCR识别的准确率。
-
use_gpu设为
True时,使用GPU进行OCR。 -
use_angle_cls设为
True时,启用分类功能(仅适用 PaddleOCR)。 -
brightness_threshold若设置,亮度低于此阈值的像素将被置黑。有效范围为0(黑)至255(白)。适用于白色字幕的视频。
-
frames_to_skipOCR前跳过的帧数。调整时需注意视频的fps。
-
min_subtitle_duration短于此阈值的字幕将被忽略。
-
normalize_to_simplified_chinese在处理前将繁体中文字符转换为简体中文。仅适用于 "Chinese & English" 模式。旨在修复因 OCR 模型在简体文本中不一致地混入繁体字符而导致的字幕合并问题。
-
use_server_model默认使用轻量模型进行OCR。启用后将使用服务器模型,提升检测效果,但会消耗更多资源。建议仅在GPU版本中使用。
-
要求:
- Python 3.9或更高版本
- Windows:
- C++构建工具(如Visual Studio的“使用C++的桌面开发”套件)
- 7zip(需添加到PATH)
- Tkinter(Windows默认Python安装包含)
- Linux:
- 7zip
- Tkinter
- 建议安装dbus
-
步骤:
- 克隆仓库到目标位置:
git clone https://github.com/timminator/VideOCR.git
- 进入目录并安装依赖:
cd VideOCR python -m pip install --upgrade pip pip install . --group all
- 运行构建脚本:
python build.py --target cpu
更多信息可通过以下命令查看:
python build.py -h
- 克隆仓库到目标位置:

