Skip to content

Agions/HardSubX

Repository files navigation

HardSubX

HardSubX

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


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

About

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.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors