Skip to content

Repository files navigation

Comic Translation System

Hệ thống hỗ trợ dịch truyện tranh/manga bán tự động bằng AI. Project thực hiện toàn bộ pipeline từ phát hiện vùng chữ, OCR, dịch nội dung, xóa chữ gốc và chèn bản dịch trở lại lên ảnh truyện.

Mục tiêu

Project được xây dựng để giảm khối lượng thao tác thủ công trong quy trình scanlation:

  • Phát hiện vùng chứa chữ trên trang truyện.
  • OCR nội dung tiếng gốc từ từng vùng.
  • Dịch sang ngôn ngữ đích bằng mô hình AI.
  • Xóa chữ cũ bằng inpainting.
  • Render bản dịch lại vào đúng vị trí trên ảnh.

Hệ thống ưu tiên bài toán manga Nhật -> Việt, nhưng kiến trúc đủ mở để mở rộng sang các ngôn ngữ khác.

Tính năng chính

  • Dịch một ảnh đơn lẻ hoặc cả chapter.
  • Hỗ trợ nhiều detector: yolo, craft, opencv.
  • Hỗ trợ OCR theo ngôn ngữ nguồn:
    • manga-ocr cho tiếng Nhật.
    • EasyOCR cho các ngôn ngữ khác.
  • Hỗ trợ dịch theo batch vùng text với ngữ cảnh giữa các trang.
  • Có từ điển/glossary để giữ tên riêng và thuật ngữ nhất quán.
  • Có pass bổ sung để bắt text ngoài speech bubble, giảm bỏ sót narration box hoặc chữ nổi.
  • Có bước làm sạch text để hạn chế lỗi ký tự ô vuông/ký tự hỏng trước khi render.
  • Có cơ chế căn chỉnh chữ trong khung để giảm chồng chéo khi dán bản dịch lên ảnh.
  • Hỗ trợ API và CLI để dễ tích hợp hoặc chạy thủ công.

Workflow

Pipeline xử lý một trang truyện gồm các bước:

  1. Detect vùng text hoặc speech bubble.
  2. OCR từng vùng để lấy text gốc.
  3. Dịch từng vùng sang ngôn ngữ đích.
  4. Xóa chữ cũ trên ảnh.
  5. Render bản dịch lên lại đúng vùng tương ứng.

Với chapter nhiều trang, hệ thống có thể xử lý theo batch và truyền ngữ cảnh giữa các trang liên tiếp để cải thiện tính nhất quán của bản dịch.

Kiến trúc thư mục

comic-translation-system/
├── src/
│   ├── app.py
│   ├── cli.py
│   ├── cli_chapter.py
│   ├── config/
│   │   ├── manga_dict.json
│   │   └── settings.py
│   ├── data/
│   │   ├── loaders.py
│   │   └── schemas.py
│   ├── pipelines/
│   │   ├── chapter_pipeline.py
│   │   ├── ocr_pipeline.py
│   │   ├── render_pipeline.py
│   │   └── translation_pipeline.py
│   ├── services/
│   │   ├── craft_detector.py
│   │   ├── dictionary.py
│   │   ├── image_service.py
│   │   ├── inpainting_service.py
│   │   ├── lama_inpainting_service.py
│   │   ├── ocr_service.py
│   │   ├── sam_masker.py
│   │   ├── text_detector.py
│   │   ├── translation_service.py
│   │   ├── vram_manager.py
│   │   └── yolo_detector.py
│   └── utils/
│       └── logger.py
├── tests/
├── output/
├── requirements.txt
├── run_chapter.py
└── README.md

Demo Kết Quả

Bạn có thể đính kèm ảnh ví dụ trong thư mục docs/examples/ để README hiển thị demo trực tiếp trên GitHub.

Khuyến nghị đặt tên file như sau:

  • docs/examples/page-015-before.jpg
  • docs/examples/page-015-after.jpg
  • docs/examples/page-dialogue-before.jpg
  • docs/examples/page-dialogue-after.jpg

Ví dụ hiển thị:

Ví dụ 1: Trước và Sau Khi Dịch

Before After
Before After

Cài đặt

1. Clone project

git clone <your-repo-url>
cd comic-translation-system

2. Tạo môi trường ảo

python -m venv .venv

Windows:

.venv\Scripts\Activate.ps1

Linux/macOS:

source .venv/bin/activate

3. Cài dependencies

pip install -r requirements.txt

Cấu hình

Project đọc cấu hình từ file .env.

Ví dụ:

USE_LOCAL_LLM=true
LOCAL_LLM_URL=https://api.minimax.io/v1
LOCAL_LLM_MODEL=MiniMax-M2.5
LOCAL_LLM_API_KEY=your_api_key

OPENROUTER_API_KEY=
GEMINI_API_KEY=

Lưu ý:

  • Không commit API key thật lên GitHub.
  • Nên tạo .env.example hoặc xóa key thật trước khi public repo.

Cách chạy

Dịch một ảnh đơn

python src/cli.py "C:\path\to\page.jpg" --source ja --target vi --detector yolo --inpainter opencv

Dịch cả chapter

python run_chapter.py "C:\path\to\chapter_folder"

Hoặc chạy bản CLI đầy đủ:

python src/cli_chapter.py "C:\path\to\chapter_folder" --source ja --target vi --detector yolo --inpainter opencv --out "C:\path\to\output"

Chạy API

python src/app.py

Sau đó có thể dùng các endpoint chính:

  • POST /api/translate
  • GET /api/status/{task_id}
  • GET /api/download/{task_id}
  • GET /api/languages
  • GET /api/config
  • GET /api/vram

Công nghệ sử dụng

  • Python
  • FastAPI
  • OpenCV
  • Pillow
  • manga-ocr
  • EasyOCR
  • YOLO
  • CRAFT
  • LaMa Inpainting
  • MiniMax / Local LLM / các backend LLM tương thích OpenAI-style API

Điểm mạnh hiện tại

  • Pipeline tách lớp rõ ràng, dễ nâng cấp từng bước.
  • Có thể thay detector, OCR backend và translator backend.
  • Đã bổ sung xử lý text ngoài bubble để giảm bỏ sót.
  • Có bước làm sạch text để hạn chế lỗi ký tự xấu khi render.
  • Có cải tiến căn chỉnh chữ để giảm chồng chéo trong khung truyện.

Hạn chế hiện tại

  • Chất lượng OCR và detect phụ thuộc khá nhiều vào chất lượng ảnh đầu vào.
  • Một số trang có SFX phức tạp hoặc chữ nền tối vẫn cần tinh chỉnh thêm.
  • Bản dịch vẫn có thể cần hậu kiểm thủ công để tự nhiên hơn trong ngữ cảnh hội thoại.
  • Bộ test hiện tại cần tiếp tục cập nhật để phản ánh đúng pipeline mới.

Hướng phát triển

  • Cải thiện detect cho text dọc, narration box và SFX.
  • Tăng chất lượng typography khi render lại text.
  • Tối ưu prompt dịch để thoại tự nhiên hơn.
  • Tăng độ ổn định của API và batch pipeline.
  • Hoàn thiện test và chuẩn hóa môi trường triển khai.

Ứng dụng thực tế

Project phù hợp cho:

  • Demo đồ án AI / Computer Vision / NLP.
  • Nghiên cứu OCR và dịch truyện tranh.
  • Công cụ hỗ trợ scanlation bán tự động.
  • Nền tảng để phát triển hệ thống dịch truyện hoàn chỉnh hơn trong tương lai.

Ghi chú khi public lên GitHub

Trước khi đưa repo lên GitHub, nên kiểm tra:

  • Xóa toàn bộ API key thật trong .env.
  • Bỏ các file output không cần thiết nếu repo muốn gọn.
  • Giữ lại một số ảnh demo trước/sau trong docs/examples/.
  • Cập nhật link clone và ảnh minh họa theo repo thật.

License

Bạn có thể dùng MIT License hoặc license phù hợp với mục đích phát hành của project.

About

AI-powered comic translation pipeline for manga pages and chapters.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages