Professional AI-powered tool for removing hard-coded subtitles from videos and images
Features | Installation | Usage | Configuration | CLI | Troubleshooting
Video Subtitle Remover Pro uses real AI neural networks to remove hard-coded subtitles and text watermarks from videos and images. Unlike simple blur or crop methods, it intelligently fills in removed areas with content that matches the surrounding video.
Based on YaoFANGUK/video-subtitle-remover, enhanced with a professional interface, real LaMa inpainting, multi-engine detection, and 12-language support.
- Real AI Inpainting — LaMa neural network for high-quality subtitle removal (via
simple-lama-inpainting) - Multi-Engine Detection — PaddleOCR > EasyOCR > OpenCV fallback chain (automatic)
- 12 Language Support — English, Chinese, Japanese, Korean, French, German, Spanish, Portuguese, Russian, Arabic, Hindi, Italian
- GPU Acceleration — NVIDIA CUDA, AMD/Intel DirectML, and CPU fallback
- Subtitle Region Selector — Draw a rectangle on the first frame to target specific areas
- Batch Processing — Queue files or drag entire folders for automated processing
- Before/After Preview — Side-by-side comparison of completed items
- Dark Professional UI — Catppuccin-inspired theme with real-time progress
- Audio Preservation — Automatically preserves original audio via FFmpeg
- Settings Persistence — All settings saved/restored between sessions
- CI/CD Releases — Automated Windows builds via GitHub Actions
| Component | Minimum | Recommended |
|---|---|---|
| OS | Windows 10 | Windows 11 |
| CPU | Intel i5 / AMD Ryzen 5 | Intel i7 / AMD Ryzen 7 |
| RAM | 8 GB | 16+ GB |
| GPU | Any (CPU mode) | NVIDIA RTX 2060+ |
| VRAM | - | 6+ GB |
| Python | 3.10 | 3.12 |
- Download or clone this repository
- Double-click
Run_VSR_Pro.bat— first run automatically:- Creates a virtual environment
- Detects your GPU and installs appropriate packages
- Installs PaddleOCR, EasyOCR, and LaMa inpainting
- Launches the application
cd VideoSubtitleRemover
# Create virtual environment
python -m venv venv
.\venv\Scripts\activate
# Install PyTorch (choose one):
# NVIDIA:
pip install torch==2.7.0 torchvision==0.22.0 --index-url https://download.pytorch.org/whl/cu118
# CPU:
pip install torch==2.7.0 torchvision==0.22.0 --index-url https://download.pytorch.org/whl/cpu
# Install dependencies
pip install -r requirements.txt
# Run
python VideoSubtitleRemover.pywinget install ffmpeg- Launch via
Run_VSR_Pro.bat - Add files — Click to browse, right-click for folders, or drag & drop
- Select algorithm — LAMA (recommended), STTN, or ProPainter
- Set language if subtitles are non-English
- Optionally set region — Click "Set Region" to draw a rectangle on the subtitle area
- Start Processing and monitor progress
- Click filename to preview, double-click completed item to open output
| Algorithm | Inpainting Engine | Speed | Quality | Best For |
|---|---|---|---|---|
| LAMA | Neural (LaMa) | Medium | Best | Images, animations, general use |
| STTN | OpenCV fallback | Fast | Good | Real-world videos |
| ProPainter | OpenCV fallback | Medium | Good | Motion-heavy videos |
LAMA is the recommended mode — it uses a real neural network for inpainting. STTN and ProPainter currently use OpenCV inpainting as fallback until model weights are integrated.
The app automatically selects the best available engine:
| Priority | Engine | Install | Languages |
|---|---|---|---|
| 1 | PaddleOCR | pip install paddleocr |
80+ |
| 2 | EasyOCR | pip install easyocr |
80+ |
| 3 | OpenCV fallback | Built-in | Any (threshold-based) |
Process files from the command line:
python -m backend.processor -i input.mp4 -o output.mp4 -m lama --lang en --crf 20| Flag | Description | Default |
|---|---|---|
-i, --input |
Input file path | Required |
-o, --output |
Output file path | Required |
-m, --mode |
Algorithm (sttn/lama/propainter) | sttn |
-g, --gpu |
GPU device ID (-1 for CPU) | 0 |
-l, --lang |
Detection language | en |
--crf |
Output quality (15-35, lower=better) | 23 |
--skip-detection |
Use manual region only | Off |
--fast |
LAMA fast mode | Off |
--no-audio |
Strip audio | Off |
Settings are stored in %APPDATA%\VideoSubtitleRemoverPro\settings.json and persist across sessions.
| Setting | Description | Default | Range |
|---|---|---|---|
| Neighbor Stride | STTN temporal window | 10 | 5-30 |
| Reference Length | STTN reference frames | 10 | 5-30 |
| Max Load Frames | Batch size | 30 | 10-100 |
| CRF Quality | Output quality (lower=better) | 23 | 15-35 |
CUDA out of memory
- Reduce Max Load Frames in Advanced Settings
- Switch to LAMA mode (lower VRAM)
- Use CPU mode as fallback
No audio in output
- Install FFmpeg:
winget install ffmpeg - Ensure "Preserve original audio" is checked
Poor detection accuracy
- Try changing the detection language to match your subtitles
- Use "Set Region" to manually define the subtitle area
- Install PaddleOCR for best detection accuracy
Application won't start
- Ensure Python 3.10+ is installed
- Delete
venvfolder and re-run setup - Check the log file:
%APPDATA%\VideoSubtitleRemoverPro\vsr_pro.log
- GUI log panel (collapsible, click "Open Log File" for full log)
- File log:
%APPDATA%\VideoSubtitleRemoverPro\vsr_pro.log(5MB rotating)
VideoSubtitleRemover/
├── VideoSubtitleRemover.py # Main GUI application
├── backend/
│ ├── __init__.py # Module exports
│ └── processor.py # Core processing (detection + inpainting)
├── setup.py # First-time environment setup
├── Run_VSR_Pro.bat # Windows launcher
├── build_exe.bat # PyInstaller build script
├── requirements.txt # Python dependencies
├── .github/workflows/
│ └── build.yml # CI/CD release workflow
├── assets/ # Application assets
├── models/ # AI model weights (auto-downloaded)
└── output/ # Default output location
- Original project: YaoFANGUK/video-subtitle-remover
- LaMa inpainting: simple-lama-inpainting
- EasyOCR: JaidedAI/EasyOCR
- STTN: Learning Joint Spatial-Temporal Transformations
- ProPainter: sczhou/ProPainter
This project is licensed under the Apache License 2.0.
Video Subtitle Remover Pro -- Built by SysAdminDoc