Skip to content

Agions/CaptionFab

Repository files navigation

CaptionFab

CaptionFab

智能硬编码字幕提取工具 — 从视频中精准提取字幕,支持 9 种专业格式输出

Version Tests License Tauri Vue Rust ONNX


✨ 核心特性

特性 说明
🤖 Rust 原生 OCR
五阶段后处理管道
📦 9 种导出格式
🎬 智能场景检测
🔧 纯 Rust 后端
🛡️ 置信度校准引擎
📐 ROI 预设
📹 广泛视频格式
🎨 暗色/亮色主题

📦 下载

当前版本:v4.0.0 · 查看更新日志

平台 下载链接
Windows x64 captionfab-v4.0.0-x64-setup.exe
macOS (Intel) captionfab-v4.0.0-x64.dmg
macOS (Apple Silicon) captionfab-v4.0.0-aarch64.dmg
Linux (Debian/Ubuntu) captionfab-v4.0.0-amd64.deb

🚀 快速开始

安装开发环境

# 前置依赖: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 开源。


🙏 致谢

项目 用途
Tauri 轻量级桌面应用框架
Vue.js 响应式前端框架
Tesseract.js WASM OCR 引擎
FFmpeg 视频处理
Pinia Vue 状态管理

Made with ❤️ by Agions

GitHub · Issues · Releases

About

CaptionFab - 专业硬编码字幕提取工具,从视频中精准提取字幕,支持多种格式输出。基于 Tauri + Vue 3 + Rust 构建。

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Contributors