Skip to content
Computer vision
All projects

SpandTranslate

Upload your pages; it finds the bubbles, translates the text into your language, erases the original lettering and typesets the translation back in. My own venture.

Role
Founder, sole developer
Duration
9 months, ongoing, 2026
Built with
Laravel, Vue.js, Inertia.js, Tailwind CSS, Model
SpandTranslate home page

Sorun

Why it exists

Translating a manga chapter is manual work: every bubble is read, translated, the original lettering is erased and the art repaired, then the translation is typeset back in. A single chapter takes hours. I wanted it to take one click.

Yaklaşım

Heavy work on the server

All the heavy work runs on the server: image processing on GPU servers, translation with AI models. Closing the tab does not stop the job, and only successfully translated pages are charged.

We did not use an off-the-shelf detector for the bubbles; we trained SpandZero on our own dataset.

The architecture scales horizontally: new GPU workers spin up on their own as work comes in and step back when the load drops. A single user can send 5 GB of images, 600 chapters, 18,000 pages at once; the system slices it up across workers, so nobody waits in line.

Nasıl çalışıyor

End to end

  1. Upload

    The whole chapter is dropped at once.

    zip, cbz, images
  2. Detect

    Our own model finds the bubbles and text.

    SpandZero
  3. Translate

    Translated with the chapter context kept.

    LLM
  4. Clean

    Original lettering is erased, the art repaired.

    GPU
  5. Typeset

    The translation is fitted in; edit and download.

    editor

Teknik özet

Technical summary
Server
Laravel 12, PHP 8.4
Interface
Vue 3 + Inertia, TypeScript
Editor
Konva canvas
Detection
SpandZero (our own model)
Image processing
GPU workers, Beam
Translation
LLMs via OpenRouter or your own key
Desktop
macOS and Windows app

Önemli değişiklik

Speed and trust

  • Small jobs stuck in line. Short jobs waited behind heavy ones. I added priority lanes; under the same load three clean-up jobs went from 124 s to 42 s.
  • A crashed server. When a GPU worker died its jobs hung. Now a live worker takes them over in about 45 s, down from 6 minutes.
  • Money safety. The same job is never charged twice and empty pages are never charged, guarded by automated tests.

Sonuç

of images per user, concurrently
5 GB
chapters at once
600
pages in one go
18,000
interface languages
23
translation languages
160+
export formats
including editable PSD
7

Ekranlar

Ne öğrendim

A long job should never depend on the user's browser tab. The longer a job runs, the more likely it is to stop halfway, so I built every step to resume where it left off.

The next branch is your project

Tell me in a few sentences what you want to build. I usually reply the same day, the next day at the latest.

Right now I am open to new work: freelance projects, remote or on site in Istanbul. A web platform, a model to train or a stubborn device; whichever it is, write or call.