# Obsidian KB - 待办事项 ## 📌 当前任务:解决硬字幕 OCR 问题 ### ✅ 已完成 1. [x] 分析硬字幕提取问题 - 发现 oneDNN 兼容性问题 - 发现 PaddleOCR 参数错误 2. [x] 禁用 oneDNN - 设置环境变量 FLAGS_use_mkldnn=0 - 写入 ~/.bashrc 3. [x] 修复 PaddleOCR 参数 - 更新 `use_angle_cls` → `use_textline_orientation` - 移除不支持的 `show_log` 参数 4. [x] 安装 EasyOCR - 安装 EasyOCR 1.7.2 - 测试 EasyOCR 初始化成功 5. [x] 创建 EasyOCR 处理器 - 新文件:`src/extractors/easyocr_processor.py` - 支持简体中文识别 - 避免所有 oneDNN 兼容性问题 ### ⏳ 待完成 - [ ] 1. 修改硬字幕提取器,支持双 OCR 引擎 - 在 `hard_subtitle_extractor.py` 中添加引擎选择逻辑 - 根据 `config.hard_subtitle.engine` 参数选择使用 PaddleOCR 或 EasyOCR - 保持向后兼容性 - [ ] 2. 更新配置文件 - 添加 `hard_subtitle.engine` 配置项(`paddleocr` | `easyocr`) - 默认值设为 `easyocr`(更稳定) - 更新配置文档 - [ ] 3. 实际测试 EasyOCR 字幕提取 - 使用真实视频测试硬字幕提取 - 对比 EasyOCR 和 PaddleOCR 的识别效果 - 测试处理速度和准确度 - [ ] 4. 性能优化(可选) - 优化帧提取逻辑(当前只提取 4 帧有问题) - 调整抽帧间隔和最大帧数 - 考虑多线程/多进程加速 - [ ] 5. 文档更新 - 更新 SKILL.md 中的硬字幕提取说明 - 添加 OCR 引擎选择指南 - 记录 EasyOCR 优势和限制 --- ## 📋 备注 ### 问题记录 - **PaddleOCR oneDNN 问题**:即使设置环境变量,仍出现兼容性错误 ``` (Unimplemented) ConvertPirAttribute2RuntimeAttribute not support [pir::ArrayAttribute] ``` - **帧提取异常**:12:48的视频只提取了4帧(应该150+帧) ### EasyOCR 优势 - ✅ 不依赖 PaddlePaddle - ✅ 安装简单 - ✅ 无底层框架兼容性问题 - ✅ 支持 70+ 种语言 - ✅ 活跃维护 ### EasyOCR 限制 - ⚠️ 中文准确度略低于 PaddleOCR - ⚠️ 首次初始化需要下载模型(约 40MB) - ⚠️ 处理速度可能略慢 --- ## 🔗 相关文件 - `src/extractors/ocr_processor.py` - PaddleOCR 处理器 - `src/extractors/easyocr_processor.py` - EasyOCR 处理器(新建) - `src/extractors/hard_subtitle_extractor.py` - 硬字幕提取器 - `src/extractors/bilibili_extractor.py` - B站提取器(调用硬字幕提取) - `.disable_onednn.sh` - 禁用 oneDNN 脚本 --- 创建时间:2026-02-09 08:02 最后更新:2026-02-09 08:02