SkillAgentSearch skills...

HardSubX

A professional video hard subtitle extraction tool with OCR. Extract hardcoded subtitles from any video and output SRT, VTT, ASS, JSON and more. Built with Tauri + Vue 3 + Rust.

Install / Use

/learn @Agions/HardSubX

README

HardSubX

<div align="center"> <img src="logo.svg" width="120" height="120" alt="HardSubX" /> </div> <div align="center">

Professional video hard subtitle extraction tool. Extract hardcoded subtitles from any video and output SRT, VTT, ASS, JSON and more. Built with Tauri + Vue 3 + Rust.

License: MIT Stars GitHub Actions Tauri Vue Rust

</div>

Key Features

Frame-Accurate Extraction

Every subtitle maps to exact video frames. View source frames directly from the subtitle list.

Multi-Engine OCR

| Engine | Technology | Accuracy | Speed | Languages | |:---|:---|:---:|:---:|:---:| | PaddleOCR | PP-OCRv5 Deep Learning | Excellent | Fast | 80+ | | EasyOCR | PyTorch | Good | Medium | 80+ | | Tesseract.js | LSTM + WASM | Good | Fastest | 100+ |

Smart Post-Processing

  • Multi-pass OCR: recognize multiple times, take the best result
  • Text normalization: full-width to half-width punctuation, Chinese typo correction
  • Confidence calibration: mixed language / short text / repeated chars auto-degraded
  • Subtitle merge: Levenshtein similarity auto-deduplication

9 Export Formats

| Format | Frame-Mapped | Best For | |:---|:---:|:---| | SRT | No | Universal subtitle players | | WebVTT | No | Web video | | ASS | No | Anime fansub, advanced styling | | JSON | Yes | Frame-accurate editing | | CSV | Yes | Spreadsheet analysis | | TXT | No | Plain text | | LRC | No | Lyrics | | SBV | No | YouTube subtitles | | SSA | No | Legacy subtitle format |

Supported Input Video

MP4 · MKV · AVI · MOV · WebM


Quick Start

# Clone the repo
git clone https://github.com/Agions/HardSubX.git
cd HardSubX

# Install frontend dependencies
pnpm install

# Run in development mode
pnpm tauri dev

# Build production package
pnpm tauri build

CLI

# Basic extraction
hardsubx-cli extract video.mp4 --output ./subs

# Multi-format output
hardsubx-cli extract video.mp4 --format srt,vtt,json --output ./subs

# Specify ROI region + OCR engine
hardsubx-cli extract video.mp4 --roi bottom --ocr paddle --lang ch,en

# Custom confidence threshold
hardsubx-cli extract video.mp4 --confidence 80

# Preview a specific frame
hardsubx-cli preview video.mp4 --frame 1500

# Show video metadata
hardsubx-cli info video.mp4

# Display help
hardsubx-cli --help

Tech Stack

| Layer | Technology | |:---|:---| | Desktop Framework | Tauri 2.x | | Frontend | Vue 3 + TypeScript | | Backend | Rust | | OCR Engines | Tesseract.js (WASM), PaddleOCR (Native), EasyOCR | | State Management | Pinia | | Build Tool | Vite |


Project Structure

HardSubX/
├── src/                         # Vue frontend
│   ├── components/             # Vue components
│   │   ├── common/            # Button, Modal, Tooltip
│   │   ├── layout/           # ToolBar, SidePanel, VideoPreview
│   │   ├── video/            # ROISelector, Timeline
│   │   └── subtitle/         # SubtitleList, ExportDialog
│   ├── composables/           # Vue composables
│   │   ├── useOCREngine.ts   # OCR engine + post-processing
│   │   ├── useVideoPlayer.ts
│   │   └── useBatchProcessor.ts
│   └── stores/               # Pinia stores
│
├── src-tauri/                 # Rust backend
│   └── src/commands/         # Tauri IPC commands
│       ├── video.rs
│       ├── ocr.rs
│       └── export.rs
│
├── docs/                     # Documentation
│   ├── index.md
│   ├── getting-started.md
│   ├── cli.md
│   └── architecture.md
│
└── cli/                     # Node.js CLI tool

License

MIT License

Related Skills

View on GitHub
GitHub Stars14
CategoryContent
Updated14m ago
Forks1

Languages

Vue

Security Score

95/100

Audited on Apr 8, 2026

No findings