| 特性 |
说明 |
|
🤖 Rust 原生 OCR |
|
⚡ 五阶段后处理管道 |
|
📦 9 种导出格式 |
|
🎬 智能场景检测 |
|
🔧 纯 Rust 后端 |
|
🛡️ 置信度校准引擎 |
|
📐 ROI 预设 |
|
📹 广泛视频格式 |
|
🎨 暗色/亮色主题 |
当前版本:v4.0.0 · 查看更新日志
# 前置依赖:Node.js 18+ · pnpm · Rust 1.82+ · FFmpeg
git clone https://github.com/Agions/CaptionFab.git
cd CaptionFab
pnpm install
pnpm tauri dev # 开发模式(热重载)
pnpm tauri build # 生产构建
导入视频 → 选择 ROI 区域 → 选择 OCR 引擎 → 开始提取 → 导出字幕
↓ ↓ ↓ ↓ ↓
拖拽/点击 底部字幕区 Tesseract.js 自动处理 SRT/VTT/ASS
┌──────────────────────────────────────────────────────────────────┐
│ CaptionFab v4.0.0 │
├──────────────────────────────────────────────────────────────────┤
│ │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ 前端 (Vue 3.5 + TypeScript + Vite) │ │
│ │ │ │
│ │ components/ composables/ core/ │ │
│ │ ├─ layout/ ├─ useExtractor.ts ├─ Pipeline.ts │ │
│ │ │ ├─ Panel.vue ├─ useOCREngine.ts ├─ Calibrator.ts│ │
│ │ │ ├─ Toolbar.vue ├─ usePlayer.ts ├─ SceneDetect.ts│ │
│ │ │ ├─ VideoPreview ├─ useBatchProc.ts └─ Exporter.ts │ │
│ │ │ └─ StatusBar.vue ├─ usePreprocessor.ts │ │
│ │ ├─ subtitle/ ├─ useSubList.ts stores/ │ │
│ │ │ ├─ List.vue ├─ useHotkeys.ts ├─ project.ts │ │
│ │ │ ├─ Card.vue └─ useTheme.ts ├─ subtitle.ts │ │
│ │ │ └─ SubExport.vue └─ settings.ts │ │
│ │ └─ video/ │ │
│ │ ├─ TimelineController utils/ │ │
│ │ └─ ROISelector ├─ image/ (deskew, morph, │ │
│ │ │ kernel, pixel ops) │ │
│ │ ├─ text.ts (CJK, langToScript)│ │
│ │ ├─ lru-cache.ts │ │
│ │ └─ detection.ts │ │
│ └────────────────────────────────────────────────────────────┘ │
│ │ Tauri IPC │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ 后端 (Rust + Tokio) │ │
│ │ │ │
│ │ commands/ │ │
│ │ ├─ video.rs FFprobe 元数据提取 │ │
│ │ ├─ scene.rs 场景检测(直方图+卡方检验) │ │
│ │ ├─ export.rs 9 种格式导出 │ │
│ │ ├─ file.rs 文件对话框 + 读写 │ │
│ │ ├─ system.rs 系统依赖检测 │ │
│ │ └─ ffmpeg.rs FFmpeg 命令封装 │ │
│ └────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘
| 层级 |
技术 |
版本 |
| 桌面框架 |
Tauri |
2.x |
| 前端框架 |
Vue 3 + TypeScript 5.9 + Vite 5 |
Vue 3.5 |
| 状态管理 |
Pinia |
2.x |
| 路由 |
GoRouter (Tauri 侧) |
— |
| 后端语言 |
Rust + Tokio |
2021 edition |
| OCR 引擎 |
Tesseract.js (WASM) |
5.x |
| 测试框架 |
Vitest |
193 个测试 |
| 文档 |
VitePress |
1.x |
CaptionFab/
├── src/ # 前端源码
│ ├── components/ # Vue 组件
│ │ ├── common/ # 通用组件 (Button, Modal, Toast...)
│ │ ├── layout/ # 布局组件 (Panel, Toolbar, VideoPreview...)
│ │ ├── subtitle/ # 字幕组件 (List, Card, SubExport...)
│ │ └── video/ # 视频组件 (Timeline, ROISelector...)
│ ├── composables/ # Vue 组合式函数
│ ├── core/ # 核心业务逻辑 (Pipeline, Calibrator, Exporter)
│ ├── stores/ # Pinia 状态管理
│ ├── utils/ # 工具函数
│ │ ├── image.ts # 图像处理 (灰度/对比度/模糊/缩放)
│ │ ├── image-deskew.ts # 文字倾斜矫正
│ │ ├── image-morph.ts # 形态学操作
│ │ ├── text.ts # CJK 检测 + 标点规范化
│ │ ├── lru-cache.ts # 泛型 LRU 缓存
│ │ └── detection.ts # 帧分析 + 空帧检测
│ └── types/ # TypeScript 类型定义
├── src-tauri/ # Rust 后端
│ ├── src/commands/ # Tauri 命令模块
│ └── Cargo.toml
├── docs/ # VitePress 文档站点
├── public/ # 静态资源
└── package.json
欢迎提交 Issue 和 Pull Request!详见 CONTRIBUTING.md。
# 开发流程
pnpm install # 安装依赖
pnpm test # 运行测试 (193 个)
pnpm lint # 代码检查
pnpm tauri dev # 启动开发服务器
本项目采用 MIT License 开源。