当前位置: 首页 > news >正文

VSR字幕检测模块PaddleOCR模型升级:从PP-OCRv4到PP-OCRv5​(当前最新的PaddleOCR模型)

文章目录

      • 问题描述
      • 飞浆OCR新旧模型对比
    • 一、VSR项目的字幕检测逻辑
      • 1. 文本检测算法的位置
      • 2. PaddleOCR 模型的位置与加载逻辑
      • 3. 文字检测的完整流程
      • 总结
    • 二、依赖准备
      • 1. paddlepaddle包
      • 2. 文本检测模型下载(最新v5)
    • 三、VSR字幕检测模块更新
      • 1. **修改 `SubtitleDetect` 类的初始化方法(添加控制参数)**
      • 2. **替换文本检测模型为 PP-OCRv5(提高检测能力)**
      • 3. **修改检测方法,支持返回置信度并添加保存逻辑**
      • 4. **在帧检测流程中传入帧号(用于保存命名)**
      • 核心改进点总结

问题描述

video-subtitle-remover是基于AI的图片/视频硬字幕去除、文本水印去除,无损分辨率生成去字幕、去水印后的图片/视频文件。虽然之前更新了多sub_areas和字幕过滤逻辑(VSR(video-subtitle-remover)字幕修复项目,多区域框选,字幕筛选逻辑功能实现),但是发现还是有一些字幕修复不了。比如:

  • 帧间不稳定,字幕时而被消除,时而存在
  • 部分艺术字未被消除

而且,我排除了修复工具(LAMA)的问题,在另一个项目WatermarkRemover,提供了区域修复的接口,我注释掉其字幕筛选的逻辑,直接修复固定区域,则不会出现上述问题。

飞浆OCR新旧模型对比

此外,笔者检查了原作者使用的字幕检查模型,发现是两年前更新的(https://github.com/YaoFANGUK/video-subtitle-remover/tree/main/backend/models)…
在这里插入图片描述

所以我去PaddleOCR查看了官方的更新日志,以及modle_list。
在这里插入图片描述

在这里插入图片描述

一、VSR项目的字幕检测逻辑

1. 文本检测算法的位置

文本检测的核心逻辑集中在 SubtitleDetect 类中(位于 video-subtitle-remover/backend/main.py),主要通过以下方法实现:
- text_detector 方法:初始化 PaddleOCR 的文本检测器(TextDetector),指定检测算法为 DB(见代码中 args.det_algorithm = 'DB')。

  • detect_subtitle 方法:调用检测器对单帧图像进行文本检测,返回文本框坐标(dt_boxes)。
  • get_coordinates 方法:将检测到的文本框坐标转换为统一的矩形区域(xmin, xmax, ymin, ymax),用于后续生成掩码去除字幕。

2. PaddleOCR 模型的位置与加载逻辑

项目中已内置 PaddleOCR 的检测模型,无需单独下载,模型路径通过配置文件指定:

  • backend/config.py 中,明确定义了检测模型的路径:

    DET_MODEL_BASE = os.path.join(BASE_DIR, 'models')
    DET_MODEL_PATH = os.path.join(DET_MODEL_BASE, MODEL_VERSION, 'ch_det')
    

    其中 MODEL_VERSION = 'V4',因此完整路径为 backend/models/V4/ch_det

  • 模型文件的完整性检查:代码会自动检测该路径下是否存在完整的模型文件(如 inference.pdiparams),如果不存在,会通过 Filesplit 合并预分割的小文件生成完整模型(见 config.py 中的合并逻辑)。这也是你无需手动下载模型的原因——模型文件已拆分后随项目分发,运行时自动合并。

3. 文字检测的完整流程

  1. 初始化检测器SubtitleDetect 类在初始化时,通过 text_detector 方法加载 PaddleOCR 的 DB 算法模型,支持 ONNX 格式转换(通过 convertToOnnxModelIfNeeded 方法)以提升推理效率。

  2. 逐帧检测:在 find_subtitle_frame_no 方法中,通过 cv2.VideoCapture 读取视频帧,调用 detect_subtitle 逐帧检测文本框,并通过 get_coordinates 转换为矩形区域。

  3. 区域过滤与统一:检测到的文本框会根据自定义字幕区域(sub_area)过滤,并通过 unify_regions 方法统一连续帧中相似的文本区域,减少帧间波动(避免字幕闪烁)。

  4. 生成掩码:最终检测到的文本区域会用于生成掩码(create_mask),配合后续的修复算法(如 STTN、LAMA)去除字幕。

总结

项目通过内置的 PaddleOCR 模型(路径 backend/models/V4/ch_det)和 DB 检测算法实现文字检测,模型文件随项目分发(拆分后自动合并),无需手动下载。核心逻辑在 SubtitleDetect 类中,完成从帧读取、文本检测到区域处理的全流程,为后续字幕去除提供精准的掩码区域。ion模块文档位置
PaddleOCR提供的text_detection模块的文档,包含输入输出参数控制、离线加载模型等
https://github.com/PaddlePaddle/PaddleOCR/blob/main/docs/version3.x/module_usage/text_detection.md

二、依赖准备

http://www.dtcms.com/a/593410.html

相关文章:

  • AbMole小课堂丨Tirzepatide:GIP/GLP-1双重受体激动剂在糖尿病、肥胖症、心脏保护等动物模型中的研究应用
  • Flutlab使用指南及功能介绍
  • Datawhale coze-ai-assistant task1
  • 平潭建设局网站首页渭南网站建设网站建设
  • 非小号是根据国外哪个网站做的网站开发是前端还是
  • 标量-向量-矩阵-基础知识
  • 九江风机叶片断裂引安全隐忧 物联网技术或成风电安全新防线
  • 【three.js】实现玻璃材质时,出现黑色/白色像素噪点
  • 低功耗蓝牙芯片CH9141蓝牙串口透传方案
  • 保山网站建设报价黄金网站下载免费
  • 【如何通过LoadRunner在Visual Studio中开发单元测试?】
  • MySQL + Java 常规八股(2 w字 + 不定期更新)
  • 黄石网站建设哪家好北京网站改版有哪些好处
  • 深入解析QSettings:Qt应用程序的配置管理利器
  • uvx安装
  • 物理服务器都有哪些作用?
  • AI场景开放:打造人机共生新图景
  • 广西 南宁 微信微网站开发上海专业网站建设机构
  • S16 排序算法--堆排序
  • KUKA机械臂使用EthernetKRL配置与C#上位机实现TCP通讯
  • IU5516:3μ低功耗,直通跟随模式,2.0A降压DCDC,适用于摄像头、智能门锁、机器人
  • 20251110易灵思的FPGA打开debugger模式
  • SQLAlchemy 插入数据报错:Data too long for column ‘password_hash’
  • 政务内网网站群建设方案网页设计模板 中文
  • 互联网大厂Java求职面试实战:Spring Boot到Kubernetes的技术问答
  • 合规安全的整形医院系统服务商排名
  • 贵州贵州省住房和城乡建设厅网站做游戏音频下载网站
  • 块状数组超级兵器:区间动态排名问题
  • 在网站开发中如何设置用户登录网站查看
  • SAP FICO资产主数据创建接口