Skip to content

Agions/SubLens

Repository files navigation

SubLens

SubLens

视频字幕提取工具 — 从视频中提取硬编码字幕,输出 SRT / VTT / ASS / JSON 等多种格式。

License: MIT Stars Tauri Vue Rust


功能特性

🤖 多引擎 OCR

引擎 技术 精度 速度 语言
PaddleOCR PP-OCRv5 深度学习 优秀 快(GPU) 80+
EasyOCR PyTorch 优秀 中等 80+
Tesseract.js LSTM + WASM 良好 最快 100+

✨ 智能后处理

  • 多轮 OCR — 同一区域识别多次,取最优结果
  • 文本正则化 — 全角/半角标点规范化
  • 置信度校准 — 混语/短文本/重复字符自动降权
  • 字幕合并 — Levenshtein 相似度智能去重
  • 场景检测 — 直方图 + 卡方检验跳过无字幕帧

📦 12 种导出格式

SRT · VTT · ASS · SSA · JSON · CSV · TXT · LRC · SBV · MD · STL · TTML

📋 ROI 预设

底部 · 顶部 · 左侧 · 右侧 · 中间 · 自定义 — 一键切换。

🎬 支持格式

MP4 · MKV · AVI · MOV · WebM · M4V · WMV · FLV · 3GP


快速开始

git clone https://github.com/Agions/SubLens.git
cd SubLens
pnpm install
pnpm tauri dev   # 开发模式
pnpm tauri build # 生产构建

前置依赖: Node.js 18+ · Rust 1.70+ · pnpm 8+ · FFmpeg


系统架构

 Frontend (Vue 3 + TypeScript)
┌─────────────────────────────────────────────────────────────┐
│  Files Tab  │  ROI Tab  │  OCR Tab  │  Export Tab  │  ⚙ Tab │
└──────────────────────────┬──────────────────────────────────┘
                           │ Tauri IPC
┌──────────────────────────┴──────────────────────────────────┐
│                  Backend (Rust / Tokio)                     │
│                                                               │
│   video   │  scene  │  export  │  file  │  system  │ utils│
│   ├─ ffmpeg (frame extract)   ├─ export_fmt (12 formats)     │
│   └─ ffmpeg (metadata)        └─ timestamp (SRT/VTT/ASS…)   │
└──────────────────────────────────────────────────────────────┘

项目结构

SubLens/
├── src/                       # Vue 3 前端
│   ├── components/           # Vue SFC 组件
│   │   ├── common/           # Button、Modal、Tooltip
│   │   ├── layout/           # ToolBar、SidePanel、VideoPreview
│   │   │   └── tabs/         # Files / Progress / ROI / OCR / Export / Settings
│   │   ├── video/            # ROISelector、Timeline
│   │   └── subtitle/         # SubtitleList、ExportDialog
│   ├── composables/          # 组合式函数(逻辑/UI 分离)
│   ├── stores/               # Pinia 状态管理
│   └── core/                 # 纯业务逻辑(可 Tree-shake / 独立测试)
│       ├── Pipeline.ts       # 5 阶段 OCR 后处理管道
│       ├── Exporter.ts       # 12 格式导出器
│       ├── SceneDetect.ts    # 直方图 + 卡方场景检测
│       └── Calibrator.ts     # 置信度校准
│
├── src-tauri/src/
│   ├── lib.rs               # Tauri 应用入口 + 命令注册
│   └── commands/            # Rust 命令层
│       ├── video.rs        # 元数据 + 帧提取
│       ├── export.rs       # 导出入口 + 类型(SubtitleItem、ExportFormat)
│       ├── export_fmt.rs   # 12 格式实现
│       ├── scene.rs        # 场景检测
│       ├── file.rs         # 文件对话框 + 读写
│       ├── system.rs       # 系统依赖诊断
│       ├── ffmpeg.rs       # FFmpeg / ffprobe 输出解析
│       ├── timestamp.rs    # 时间戳格式化(SRT/VTT/ASS/SSA/SBV)
│       ├── types.rs        # 共享类型(ROI)
│       ├── utils.rs        # 工具(TempFileGuard、UUID、脚本查找)
│       └── ocr.rs          # OCR 占位(已移至前端 WASM)
│
├── docs/                    # 文档(Markdown,无需构建)
│   ├── ARCHITECTURE.md     # 深度架构文档
│   ├── DEVELOPER_GUIDE.md  # 开发者指南
│   └── CHANGELOG.md        # 版本变更
│
└── public/                  # 静态资源

技术栈

层级 技术
桌面框架 Tauri 2.x
前端 Vue 3 + TypeScript + Vite + Pinia
后端 Rust(Tokio 异步运行时)
OCR Tesseract.js (WASM)、EasyOCR (PyTorch)、PaddleOCR
测试 Vitest

文档

文档 说明
docs/ARCHITECTURE.md 前后端分层、数据流、接口定义、命名规范
docs/DEVELOPER_GUIDE.md 环境搭建、调试、测试、添加新命令 / 新格式
docs/CHANGELOG.md 版本变更记录

License

MIT License

About

SubLens - 视频字幕提取工具,从视频中提取硬编码字幕,支持多种格式输出。Built with Tauri + Vue 3 + Rust.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Contributors