# teechinyean/pdf_translate-for-manga- architecture

> Architecture diagram of the GitHub repository teechinyean/pdf_translate-for-manga-, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/teechinyean/pdf_translate-for-manga-
- Repository: https://github.com/teechinyean/pdf_translate-for-manga-

## Overview

This is a local manga/PDF translation and redraw application, with a web backend coordinating page processing and downloads. The principal workflow is PDF upload, page extraction and text recognition, translation, removal of original lettering, Chinese typesetting, then PDF/image output; progress and previews support the user along the way. The README documents the detector, OCR, and export capabilities, while sampled code confirms the async pipeline, translation engine, and rendering responsibilities. Some internal wiring and unsampled feature implementations are represented only where the README supports them.

Main entry points: [`pdf_translate/core/pipeline.py`](https://github.com/teechinyean/pdf_translate-for-manga-/blob/main/pdf_translate/core/pipeline.py) (Async pipeline), [`pdf_translate/core/extractor.py`](https://github.com/teechinyean/pdf_translate-for-manga-/blob/main/pdf_translate/core/extractor.py) (Page extraction), [`pdf_translate/main.py`](https://github.com/teechinyean/pdf_translate-for-manga-/blob/main/pdf_translate/main.py) (Web backend), [`pdf_translate/core/engine.py`](https://github.com/teechinyean/pdf_translate-for-manga-/blob/main/pdf_translate/core/engine.py) (Translation engine)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web workflow"]
  node_backend["Web backend<br/>[main.py]"]
  node_pipeline["Async pipeline<br/>[pipeline.py]"]
  node_task_status["Progress and preview<br/>[main.py]"]
end

subgraph group_processing["Page processing"]
  node_page_extract["Page extraction<br/>[extractor.py]"]
  node_text_detect["Text detection"]
  node_text_ocr["Japanese OCR"]
  node_text_merge["Text organization"]
end

subgraph group_language["Text translation"]
  node_translator["Translation engine<br/>[engine.py]"]
  node_translator_backends["Translation providers"]
  node_terms["Series glossary<br/>[engine.py]"]
end

subgraph group_output["Image output"]
  node_inpaint["Text removal<br/>[renderer.py]"]
  node_lama_worker["LaMa worker<br/>[lama_worker.py]"]
  node_typeset["Chinese typesetting<br/>[renderer.py]"]
  node_export["PDF and images<br/>[renderer.py]"]
end

node_reader(("Reader"))

node_reader -->|"uploads PDF"| node_backend
node_backend -->|"starts task"| node_pipeline
node_pipeline -->|"extracts pages"| node_page_extract
node_page_extract -->|"finds text regions"| node_text_detect
node_page_extract -->|"recognizes text"| node_text_ocr
node_page_extract -->|"organizes lines"| node_text_merge
node_pipeline -->|"translates blocks"| node_translator
node_translator -.->|"uses provider"| node_translator_backends
node_translator -->|"extracts terms"| node_terms
node_pipeline -->|"redraws pages"| node_inpaint
node_inpaint -.->|"requests repair"| node_lama_worker
node_pipeline -->|"lays out translations"| node_typeset
node_pipeline -->|"exports results"| node_export
node_backend -->|"reports progress"| node_task_status
node_task_status -->|"shows status"| node_reader
node_export -->|"provides downloads"| node_reader

click node_backend "https://github.com/teechinyean/pdf_translate-for-manga-/blob/main/pdf_translate/main.py"
click node_pipeline "https://github.com/teechinyean/pdf_translate-for-manga-/blob/main/pdf_translate/core/pipeline.py"
click node_page_extract "https://github.com/teechinyean/pdf_translate-for-manga-/blob/main/pdf_translate/core/extractor.py"
click node_text_detect "https://github.com/teechinyean/pdf_translate-for-manga-/tree/main/pdf_translate/manga_translator_source/manga-image-translator-main/manga_translator/detection"
click node_text_ocr "https://github.com/teechinyean/pdf_translate-for-manga-/tree/main/pdf_translate/manga_translator_source/manga-image-translator-main/manga_translator/ocr"
click node_text_merge "https://github.com/teechinyean/pdf_translate-for-manga-/tree/main/pdf_translate/manga_translator_source/manga-image-translator-main/manga_translator/textline_merge"
click node_translator "https://github.com/teechinyean/pdf_translate-for-manga-/blob/main/pdf_translate/core/engine.py"
click node_translator_backends "https://github.com/teechinyean/pdf_translate-for-manga-/tree/main/pdf_translate/manga_translator_source/manga-image-translator-main/manga_translator/translators"
click node_terms "https://github.com/teechinyean/pdf_translate-for-manga-/blob/main/pdf_translate/core/engine.py"
click node_inpaint "https://github.com/teechinyean/pdf_translate-for-manga-/blob/main/pdf_translate/core/renderer.py"
click node_lama_worker "https://github.com/teechinyean/pdf_translate-for-manga-/blob/main/pdf_translate/core/lama_worker.py"
click node_typeset "https://github.com/teechinyean/pdf_translate-for-manga-/blob/main/pdf_translate/core/renderer.py"
click node_export "https://github.com/teechinyean/pdf_translate-for-manga-/blob/main/pdf_translate/core/renderer.py"
click node_task_status "https://github.com/teechinyean/pdf_translate-for-manga-/blob/main/pdf_translate/main.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_backend,node_pipeline,node_task_status toneBlue
class node_page_extract,node_text_detect,node_text_ocr,node_text_merge toneAmber
class node_translator,node_translator_backends,node_terms toneMint
class node_inpaint,node_lama_worker,node_typeset,node_export toneRose
class node_reader toneIndigo
```

## Components

### Web workflow

- [Web backend](https://github.com/teechinyean/pdf_translate-for-manga-/blob/main/pdf_translate/main.py): `pdf_translate/main.py`
- [Async pipeline](https://github.com/teechinyean/pdf_translate-for-manga-/blob/main/pdf_translate/core/pipeline.py): `pdf_translate/core/pipeline.py`
- [Progress and preview](https://github.com/teechinyean/pdf_translate-for-manga-/blob/main/pdf_translate/main.py): `pdf_translate/main.py`

### Page processing

- [Page extraction](https://github.com/teechinyean/pdf_translate-for-manga-/blob/main/pdf_translate/core/extractor.py): `pdf_translate/core/extractor.py`
- [Text detection](https://github.com/teechinyean/pdf_translate-for-manga-/tree/main/pdf_translate/manga_translator_source/manga-image-translator-main/manga_translator/detection): `pdf_translate/manga_translator_source/manga-image-translator-main/manga_translator/detection`
- [Japanese OCR](https://github.com/teechinyean/pdf_translate-for-manga-/tree/main/pdf_translate/manga_translator_source/manga-image-translator-main/manga_translator/ocr): `pdf_translate/manga_translator_source/manga-image-translator-main/manga_translator/ocr`
- [Text organization](https://github.com/teechinyean/pdf_translate-for-manga-/tree/main/pdf_translate/manga_translator_source/manga-image-translator-main/manga_translator/textline_merge): `pdf_translate/manga_translator_source/manga-image-translator-main/manga_translator/textline_merge`

### Text translation

- [Translation engine](https://github.com/teechinyean/pdf_translate-for-manga-/blob/main/pdf_translate/core/engine.py): `pdf_translate/core/engine.py`
- [Translation providers](https://github.com/teechinyean/pdf_translate-for-manga-/tree/main/pdf_translate/manga_translator_source/manga-image-translator-main/manga_translator/translators): `pdf_translate/manga_translator_source/manga-image-translator-main/manga_translator/translators`
- [Series glossary](https://github.com/teechinyean/pdf_translate-for-manga-/blob/main/pdf_translate/core/engine.py): `pdf_translate/core/engine.py`

### Image output

- [Text removal](https://github.com/teechinyean/pdf_translate-for-manga-/blob/main/pdf_translate/core/renderer.py): `pdf_translate/core/renderer.py`
- [LaMa worker](https://github.com/teechinyean/pdf_translate-for-manga-/blob/main/pdf_translate/core/lama_worker.py): `pdf_translate/core/lama_worker.py`
- [Chinese typesetting](https://github.com/teechinyean/pdf_translate-for-manga-/blob/main/pdf_translate/core/renderer.py): `pdf_translate/core/renderer.py`
- [PDF and images](https://github.com/teechinyean/pdf_translate-for-manga-/blob/main/pdf_translate/core/renderer.py): `pdf_translate/core/renderer.py`

### Other components

- **Reader**

## Connections

- Reader → Web backend: uploads PDF
- Web backend → Async pipeline: starts task
- Async pipeline → Page extraction: extracts pages
- Page extraction → Text detection: finds text regions
- Page extraction → Japanese OCR: recognizes text
- Page extraction → Text organization: organizes lines
- Async pipeline → Translation engine: translates blocks
- Translation engine → Translation providers: uses provider
- Translation engine → Series glossary: extracts terms
- Async pipeline → Text removal: redraws pages
- Text removal → LaMa worker: requests repair
- Async pipeline → Chinese typesetting: lays out translations
- Async pipeline → PDF and images: exports results
- Web backend → Progress and preview: reports progress
- Progress and preview → Reader: shows status
- PDF and images → Reader: provides downloads
