Video-subtitle-extractor (VSE)

视频硬字幕提取,生成srt文件。无需申请第三方API,本地实现文本识别。基于深度学习的视频字幕提取框架,包含字幕区域检测、字幕内容提取。『A GUI tool for extracting hard-coded subtitle (hardsub) from videos and generating srt files.』

Github stars Tracking Chart

简体中文 | English

项目简介

License
python version
support os

Video-subtitle-extractor (vse) 是一款将视频中的硬字幕提取为外挂字幕文件(srt格式)的软件。
主要实现了以下功能:

  • 提取视频中的关键帧
  • 检测视频帧中文本的所在位置
  • 识别视频帧中文本的内容
  • 过滤非字幕区域的文本,去除水印(台标)文本
  • 去除重复字幕行,生成srt字幕文件
  • 支持视频字幕批量提取(打开文件的时候选择多个视频)
  • 多语言:支持中文/英文日语韩语阿拉伯语繁体中文法语德语俄语西班牙语葡萄牙语意大利语字幕的提取
  • 多模式:
    • 快速 - 快速提取字幕但可能丢字幕(推荐)
    • 精准 - 不丢字幕但速度较慢

使用说明

  • 有使用问题请加群讨论,QQ群:210150985

  • 视频以及程序路径请不要带中文和空格,否则可能出现未知错误!!!

如:以下存放视频和代码的路径都不行

D:\下载\vse\运行程序.exe(路径含中文)

E:\study\kaoyan\sanshang youya.mp4 (路径含空格)

  • 直接下载压缩包解压运行,如果不能运行再按照下面的教程,尝试源码安装conda环境运行

下载地址

  • Windows 单文件版本: vse.exe 提取码:17uj

(双击直接运行,每次打开时会有一点慢,推荐小白使用)

  • Windows GPU版本: vse_windows_GPU.7z 提取码:r911

  • Windows CPU版本: vse_windows_CPU.zip 提取码:1vi6

  • MacOS CPU版本: vse_macOS_CPU.dmg 提取码:7gbo

PS: 若无法下载,请前往 Release 下载

项目特色

  • 采用本地进行OCR识别,无需设置调用任何API,不需要接入百度、阿里等在线OCR服务即可本地完成文本识别
  • 支持GPU加速,GPU加速后可以获得更高的准确率与更快的提取速度
  • (CLI版本) 无需用户手动设置字幕区域,项目通过文本检测模型自动检测字幕区域
  • (GUI版本) 图形化界面

点击【打开】后选择视频文件,调整字幕区域,点击【运行】

有任何改进意见请在ISSUES中提出

演示

  • GUI版:
  • 点击查看视频教程 👇

GPU版本安装教程

在线运行

  • 使用Google Colab Notebook(免费GPU):

PS: Google Colab只能运行CLI版本

源码使用说明

1. 下载安装Miniconda

  • Windows: Miniconda3-py38_4.11.0-Windows-x86_64.exe

  • MacOS:Miniconda3-py38_4.11.0-MacOSX-x86_64.pkg

  • Linux: Miniconda3-py38_4.11.0-Linux-x86_64.sh

2. 创建并激活虚机环境

(1)切换到源码所在目录:

cd <源码所在目录>

例如:如果你的源代码放在D盘的tools文件下,并且源代码的文件夹名为video-subtitle-extractor,就输入 cd D:/tools/video-subtitle-extractor-main

(2)创建激活conda环境

conda create -n videoEnv python=3.8
conda activate videoEnv

3. 安装依赖文件

请确保你已经安装 python 3.8+,使用conda创建项目虚拟环境并激活环境 (建议创建虚拟环境运行,以免后续出现问题)

  • CPU用户 (Mac用户) :

    • 安装依赖:
      pip install -r requirements.txt
      
  • GPU用户(有N卡): 要达到高精度的识别率请使用GPU版

    • 安装CUDA和cuDNN

    • 安装paddlepaddle:

      • windows:

        python -m pip install paddlepaddle-gpu==2.4.2.post117 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html
        
      • Linux:

        python -m pip install paddlepaddle-gpu==2.4.2.post117 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html
        

        如果安装cuda 10.2,请对应安装7.6.5的cuDNN,并使用对应cuda版本的paddlepaddle,请不要使用cuDNN v8.x 和 cuda 10.2的组合

        如果安装cuda 11.2,请对应安装8.1.1的cuDNN,并使用对应cuda版本的paddlepaddle,30系列以上的显卡驱动可能不支持 cuda 11.2及以下版本的安装

    • 安装其他依赖:

      pip install -r requirements_gpu.txt
      

4. 运行程序

  • 运行图形化界面版本(GUI)
python gui.py
  • 运行命令行版本(CLI)
python ./backend/main.py

常见问题与解决方案

1. 运行不正常/没有结果/cuda及cudnn问题

解决方案:根据自己的显卡型号、显卡驱动版本,安装对应的cuda与cudnn

2. CondaHTTPError

将项目中的.condarc放在用户目录下(C:\Users\<你的用户名>),如果用户目录已经存在该文件则覆盖

解决方案:https://zhuanlan.zhihu.com/p/260034241

3. Windows下出现geos_c.dll错误

    _lgeos = CDLL(os.path.join(sys.prefix, 'Library', 'bin', 'geos_c.dll'))
  File "C:\Users\Flavi\anaconda3\envs\subEnv\lib\ctypes\__init__.py", line 364, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: [WinError 126] 找不到指定的模块。

解决方案:

  1. 卸载Shapely
pip uninstall Shapely -y
  1. 使用conda重新安装Shapely
conda install Shapely             

4. Nuitka打包代码闪退

使用Nuitka版本0.6.19,将conda虚拟环境Lib文件夹下site-packages的所有文件复制到dependencies文件夹中,把paddle库dataset下image.py的有关subprocess代码全部注释了,使用以下打包命令:

 python -m nuitka --standalone --mingw64 --include-data-dir=D:\vse\backend=backend --include-data-dir=D:\vse\dependencies=dependencies  --nofollow-imports --windows-icon-from-ico=D:\vse\design\vse.ico --plugin-enable=tk-inter,multiprocessing --output-dir=out .\gui.py

编译成单个文件(pip安装zstandard可以减小体积)

 python -m nuitka --standalone --windows-disable-console --mingw64 --lto no --include-data-dir=D:\vse\backend=backend --include-data-dir=D:\vse\dependencies=dependencies  --nofollow-imports --windows-icon-from-ico=D:\vse\design\vse.ico --plugin-enable=tk-inter,multiprocessing --output-dir=out --onefile .\gui.py

社区支持

Jetbrains 全家桶支持

本项目开发所使用的IDE由Jetbrains支持。

Main metrics

Overview
Name With OwnerYaoFANGUK/video-subtitle-extractor
Primary LanguagePython
Program language (Language Count: 3)
Platform
License:Apache License 2.0
所有者活动
Created At2020-10-04 18:01:25
Pushed At2025-05-19 09:02:11
Last Commit At
Release Count6
Last Release Name2.0.3 (Posted on )
First Release Name0.0.1 (Posted on )
用户参与
Stargazers Count7.4k
Watchers Count47
Fork Count770
Commits Count506
Has Issues Enabled
Issues Count317
Issue Open Count208
Pull Requests Count39
Pull Requests Open Count6
Pull Requests Close Count10
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private