A translator built around the whole page
Koharu is not merely an OCR box with a translate button. It treats manga localization as a sequence: detect text and speech bubbles, recognize the writing, translate it, remove the original lettering, then render editable replacement text. That matters because each stage can fail independently. A good translation is still unusable if a detector misses a caption, an inpainting model damages the artwork, or the new lettering ignores vertical Japanese layout.
The app puts those stages into one desktop workspace and keeps them inspectable. Its feature list includes masks for cleanup, local or remote language-model backends, vertical CJK and right-to-left rendering, and layered PSD export. A translator can hand the result to an editor or letterer with text still editable, rather than treating the model output as a finished image.
Koharu is also local-first in a meaningful sense. Detection, OCR, inpainting, and language models can run on the user's computer. The README lists CUDA for NVIDIA hardware, HIP or ROCm for AMD on Windows, Metal for Apple Silicon, and Vulkan on Windows and Linux. CPU fallback is always available. Hosted language-model and translation connections remain optional choices rather than requirements.
Model choice is power and homework
The project does not pretend one model can understand and repair an entire page. It offers a staged stack with a dedicated layout detector, several OCR options, four inpainting families, and a long selection of local LLMs. OpenAI-compatible providers are supported too. This breadth lets users fit the workflow to a machine and source language instead of accepting one fixed pipeline.
It also creates a substantial testing matrix. Different OCR models may behave differently on stylized lettering, captions, or noisy scans. LaMa is a very different cleanup choice from a larger diffusion model. A small local LLM may fit modest hardware but lose context or nuance that a stronger remote model preserves. Koharu gives you the switches, but it cannot decide which combination is safe for a particular book. Build a representative test chapter before processing an archive. Include vertical dialogue, sound effects, text over artwork, small notes, and pages with unusual panel layouts.
Installation is easier than operation
The download story is strong for a machine-learning desktop app. Release 0.67.0 provides Windows, Linux, and Apple Silicon packages. Windows users can install through WinGet, while macOS users get a Homebrew cask. Building from source is much more involved: the README calls for Rust 1.95 or later, Bun, LLVM, and Ninja. Most translators should take a binary package.
A package does not remove the weight of the model stack. The selected vision, OCR, cleanup, and language models still need storage, memory, and working acceleration. CPU fallback is helpful for compatibility, but users should not read it as a promise of comfortable batch speed. Driver differences matter too, particularly while GPU and renderer work is moving quickly. The troubleshooting section exposes Rust logging levels, which is useful for bug reports but also signals that difficult failures may end in logs and GitHub discussion rather than a friendly repair wizard.
There is another firm boundary: current releases are desktop software. An open request from a user running the older headless Docker image says Docker support disappeared after version 0.61.2. The maintainer explained that the WebGPU canvas would require a separate WASM display route for the web setup, and supporting both paths adds too much work. Treat a NAS, shared web service, or unattended container deployment as unsupported unless that position changes.
The editing loop is the reason to choose it
Koharu's strongest argument over a batch translator is correction. Automatic detection saves the first pass, but editors can work with recognized text blocks, cleanup masks, rendered text, and exports in one place. Support for vertical CJK and right-to-left text shows awareness that comic lettering is not just placing horizontal English sentences into rectangles. PSD output provides an escape hatch when the built-in renderer is not enough.
That human loop is currently necessary, not optional. Issue #923 reports that switching among large images can produce black squares and make a hidden cleanup layer reappear in final renders. The maintainer asked the reporter to retest with the newest version, so the report is active rather than settled. Issue #928 traces an AMD Windows detection crash to a generic MIOpen error and asks for deeper logs. Another open report shows an obvious text area being missed by the detector. These are specific failure modes in the core path, not cosmetic complaints.
The pace of response is encouraging. Several window, shortcut, zoom, and compositor reports opened on August 14 were closed the next day, and release 0.67.0 shipped on August 15 with canvas restructuring, updated diffusion bindings, and updater fixes. The repository was pushed that same day. Its 98 open count includes issues and pull requests, while the recent issue list shows both active bug investigation and a high volume of change. That is healthy maintenance, but also evidence that the app is still settling.
Who should install it
Koharu is a strong trial for an individual translator or small team that wants private local inference and expects to review every page. It combines more of the real workflow than a narrow OCR tool, and the dual MIT or Apache 2.0 license makes experimentation easy. Start with one representative chapter, pin the version that produces good output, and keep editable exports.
Do not choose it for a hands-off production conveyor belt today. Large-page rendering, GPU-specific failures, and the absence of current headless support make that use riskier than the polished interface suggests. Used as an assistant with a human editor in control, Koharu can remove a large amount of mechanical work without pretending that localization itself has become automatic.