Comic Translate: A Python Pipeline for Manga and BD Translation
AI comic and manga translator app/browser extension for automatically translating comics, manga, manhwa, BDs, fumetti, and more in multiple languages and formats (Images, PDF, EPUB, CBR, CBZ etc).
At a glance
- What is it?
- Comic Translate chains a detection model, several OCR engines, a LaMa inpainting model and an LLM translator into a PySide6 desktop app and a browser extension. It is the right tool when your source is a scanned or downloaded comic file and your target language is not English, and the wrong tool when you need GPU acceleration without building from source.
- Who is it for?
- Adopt Comic Translate if you read downloaded comic files (CBZ, CBR, PDF, EPUB) in Korean, Japanese, French or Chinese and you are willing to pay for LLM translation quality. Do not adopt it if you need GPU acceleration from the packaged desktop build, since the README states that acceleration is only available when running from source, or if you cannot install WinRAR or 7-Zip for CBR input.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 5 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The gap Comic Translate was built to fill
The README opens with a direct claim about the existing tool set: many automatic manga translators exist, but very few handle comics of other kinds in other languages. That is the gap. A French bande dessinee, an Italian fumetto or a Dutch album has different page geometry, different lettering conventions and a different language pair than the Japanese-to-English case that most tooling targets. The project lists English, Korean, Japanese, French, Simplified Chinese, Traditional Chinese, Russian, German, Dutch, Spanish and Italian as source languages, with translation targets beyond that set. The audience is readers who already have files on disk: scans, purchased downloads, PDFs, EPUBs, CBR and CBZ archives. It is not aimed at someone who wants to read a licensed title in a storefront viewer, and the browser extension exists for the narrower case of reading on websites directly.
The four-stage pipeline and where each model sits
The README breaks processing into detection, OCR, inpainting, translation and rendering, and names the model behind each stage. Detection uses an RT-DETR-v2 model published as bubble-and-text-detector, trained on 11k comic images spanning manga, webtoons and Western comics, with algorithmic segmentation applied to the boxes the detector returns. OCR is not one engine but three defaults: manga-ocr for Japanese, Pororo for Korean, and PPOCRv5 for everything else. Gemini 2.0 Flash and Microsoft Azure Vision are listed as optional OCR backends usable for any supported language. Inpainting, the step that erases the original lettering from the segmented region, uses a LaMa model finetuned on manga and anime. Translation is where the project's argument lives: the README asserts that for a couple dozen languages a SOTA LLM such as GPT-4 beats Google Translate, Papago and DeepL, and that the gap is widest for distant pairs like Korean to English and Japanese to English. Rendering then draws translated text back into the cleaned region. The data flow is linear per page: detect, segment, read, erase, translate, draw.
Installing from source and the uv workflow
The packaged desktop app for Windows and macOS comes from comic-translate.com, and the README notes two OS-level friction points: Windows SmartScreen requires More info then Run anyway, and macOS requires Settings, Privacy and Security, then Open Anyway. The important constraint is stated plainly: GPU acceleration is currently only available when running from source. So the source path is the one that matters for anyone with an NVIDIA card. It requires Python 3.12 with Add python.exe to PATH ticked during setup, git, and uv. The sequence is git clone of the repository, cd comic-translate, uv init --python 3.12, then uv add -r requirements.txt --compile-bytecode. For NVIDIA hardware the README recommends uv pip install onnxruntime-gpu. Launch is uv run comic.py, which starts the PySide6 GUI. Updating means git pull followed by the same uv add command, with a note that uv init should only be rerun if uv was not used for the original install. That note is worth reading twice, because rerunning init on an existing environment is the kind of step that quietly resets state.
CBR files, fonts and the errors you will actually hit
Two failure modes are documented rather than hidden. CBR is a RAR archive, and the app shells out to an external tool to read it. If WinRAR or 7-Zip is not installed, or is installed but its directory is not on PATH, the app raises RarCannotExec with the message Cannot find working tool. The fix is to add the install folder, for example C:\Program Files\WinRAR on Windows, to PATH. The second is fonts. The README instructs you to make sure the selected font supports the characters of the target language. This is not a cosmetic note. If you translate into a script your chosen font lacks, the rendering stage has nothing to draw, and the pipeline has no fallback described in the material. Neither of these is a bug in the models. They are integration boundaries, and they are the two most likely reasons a first run produces nothing useful.
Manual Mode and why it exists
Automatic Mode is not presented as infallible. The README lists the failure cases by name: no text detected, incorrect OCR, insufficient cleaning. Version 2.0 added Manual Mode for exactly these situations. The workflow described is to undo the image and toggle Manual Mode, then make corrections by hand. This is a meaningful design admission. A pipeline that chains a detector, an OCR engine, an inpainting model and an LLM has four places to go wrong, and errors compound: a missed bubble is never translated, a misread character becomes a mistranslation, and leftover lettering from weak inpainting sits underneath the new text. Manual Mode is the escape hatch, and its presence tells you the maintainers expect automatic results to need review on real pages. The README also notes that in Automatic Mode a processed image loads into the viewer immediately while the rest continue translating, so reading and processing overlap. Navigation is arrow keys, zoom is Ctrl plus mouse wheel, and trackpad gestures work for viewing.
What this costs you beyond the download
The translation stage depends on SOTA LLMs, and the README names GPT-4 and Gemini 2.0 Flash. That implies API usage, which implies an account, a key and per-token cost that scales with page count. A long-running series is a recurring bill, not a one-time purchase. The alternative is a local model if the app supports one, but the material does not describe local translation backends, so treat that as unverified. Maintenance has its own shape: releases v2.8.6, v2.8.7 and v2.8.8 all landed in the first eleven days of August 2026, which is a fast cadence. Fast cadences mean fixes arrive quickly and also that pinned dependencies drift. On licensing, the repository is Apache-2.0, which permits commercial use and modification with the usual notice and patent terms. That covers the code. It does not cover the models the app downloads or the comics you feed it, and it says nothing about the rights attached to a translated derivative of a copyrighted work. Those are separate questions and this is not legal advice.
How it differs from manga-image-translator
The closest comparison in this space is manga-image-translator, which also detects text, OCRs it, inpaints and re-renders. The difference is in the translation step and the input scope. manga-image-translator is built around manga, with Japanese and a handful of other source languages as the centre of gravity, and it runs as a command-line and web tool. Comic Translate is built around a desktop GUI and a browser extension, and its stated reason for existing is the non-Japanese, non-manga case: French BDs, Italian fumetti, Dutch albums, Chinese manhua, Korean webtoons. Its translation backend is an LLM API rather than a dedicated machine translation model, which is the project's core bet. That bet buys better handling of distant language pairs and costs money per page plus a network dependency. If you want a fully offline pipeline with no API key, that difference is decisive against Comic Translate.
Who should adopt it, and what to check first
Adopt it if your library is files on disk in one of the eleven listed source languages, you read on Windows or macOS, and you accept an LLM bill for translation quality that dedicated MT engines do not reach on distant pairs. Skip it if you need packaged GPU acceleration, since that requires the source install; if your archive format is CBR and you cannot install WinRAR or 7-Zip and put it on PATH; or if you need a fully offline translator. Before your first real page, confirm three things: a font covering your target script is installed and selected, your source language is matched by the right OCR engine (manga-ocr for Japanese, Pororo for Korean, PPOCRv5 otherwise), and your translation credentials work. The first page will tell you more than the README can, because the four-stage chain either produces clean lettering or it does not.
Editorial conclusion
Adopt Comic Translate if you read downloaded comic files (CBZ, CBR, PDF, EPUB) in Korean, Japanese, French or Chinese and you are willing to pay for LLM translation quality. Do not adopt it if you need GPU acceleration from the packaged desktop build, since the README states that acceleration is only available when running from source, or if you cannot install WinRAR or 7-Zip for CBR input. Before committing, verify three things: that your target language has a font on your machine that covers its character set, that your chosen OCR engine handles your source language, and that your LLM API key or local model path is accepted by the translation step.
Community notes