Skip to content

a2ngell/DeepManga

Repository files navigation

Manga Translator Pro

Read in English | Türkçe

English

Manga Translator Pro is an automated manga translation tool designed to streamline the localization process. It leverages advanced OCR (Optical Character Recognition) and AI-powered translation to convert manga pages from various languages into Turkish (or other target languages) while preserving the original visual layout.

Features

  • Dual Interface Modes: Launches in a modern Web UI (Flask + Socket.IO) by default, or runs in a Desktop GUI (CustomTkinter) via the --gui flag.
  • Advanced OCR Engines: Supports PaddleOCR and RapidOCR with optional GPU/DirectML hardware acceleration via ONNX Runtime.
  • Multi-Provider AI Translations: Integrated with Google Gemini API (Gemini 1.5 Flash/Pro, Gemma) and Cerebras API (extremely fast LLaMA models).
  • Multi-API Key Rotation: Automatically rotates through multiple API keys to bypass rate limits and quotas for large-batch translations.
  • Environment Configuration: Supports secure API key setup via .env files or system environment variables, keeping configurations clean and safe for Git.
  • Hybrid Text Cleaning: Erases original text cleanly from speech bubbles using Solid Color Fill or OpenCV Inpainting.
  • Custom Glossary (Terminology): Enforces translation consistency by letting you define translation term mappings.
  • Webtoon Viewer Generator: Automatically compiles translated chapters into a clean, local webtoon reader site, with one-command staging for free Netlify deployment.
  • Instant Notifications: Integrates Discord Webhooks and Telegram bots for instant alerts on translation status.

How It Works

1. Optical Character Recognition (OCR)

The application uses PaddleOCR to detect text regions.

  • Preprocessing: Images are processed (though upscaling is currently disabled for Webtoon optimization) to enhance text visibility.
  • Detection: It identifies text bounding boxes and extracts the text content.
  • Grouping: Detected text blocks are grouped logically based on reading order (Top-to-Bottom, Right-to-Left for Manga) to form coherent sentences.

2. AI Translation (Gemini Integration)

The extracted text is sent to Google's Gemini models for translation.

  • Prompt Engineering: A specific system prompt is used to instruct Gemini to act as a "Professional Webtoon Localizer".
  • Context Rules: The prompt includes strict rules for:
    • Noise Discrimination: Ignoring OCR artifacts.
    • Logical Reconstruction: Reordering words for natural phrasing.
    • Cultural Adaptation: Using appropriate honorifics and modern Turkish slang.
    • JSON Output: Ensuring the response is a valid JSON object for easy parsing.
  • Batching: Text from multiple bubbles (or pages) is batched into a single API call to maximize efficiency and maintain context.

System Prompt (The "Secret Sauce")

The quality of the translation relies heavily on the system prompt used to instruct Gemini. Here is the core prompt we use:

You are a **Professional Webtoon Localizer** for the Turkish market.
Your goal is NOT just to translate words, but to **adapt the story** so it feels originally written in Turkish.

**CORE DIRECTIVES (Strict Rules):**

1. **NOISE DISCRIMINATION (Anti-Hallucination):**
    * **Rule:** Input text is messy. You must distinguish between *actual words* and *OCR noise* (random chars like "DF", "VV", "ABHCH").
    * **Action:** Translate ONLY the actual words. If a part is unreadable garbage, **discard it completely**. Do NOT invent/hallucinate a meaning for nonsense.

2. **LOGICAL RECONSTRUCTION (The Brain):**
    * **Rule:** OCR often scrambles word order.
    * **Action:** Before translating, **mentally reconstruct** the broken sentences into logical English.
    * *Example:* "WHY YOU DID" -> Read as "WHY DID YOU" -> Translate as "NEDEN YAPTIN".

3. **CULTURAL TERMS & HONORIFICS:**
    * **Rule:** Terms like "Oppa", "Hyung", "Senpai" indicate a relationship, NOT possession.
    * **Action:** Do **NOT** add possessive suffixes ('-m') unless the source explicitly says "MY Oppa".
    * *Example:* "OPPA?" -> "OPPA?" or "ABİ?" (Correct). **"OPPAM?" (WRONG).**

4. **GRAMMATICAL ACCURACY:**
    * **Rule:** Be careful with object suffixes.
    * *Example:* "Hold that bastard" -> "O piçi tut" (Specific object), NOT "O piçini tut" (Possessive error).

5. **INTENT & TONE (The Soul):**
    * **Audience:** Turkish Gen Z / Youth. Use **Modern Istanbul Turkish**.
    * **Style:** Natural, spoken grammar (e.g., "Gelicem" instead of "Geleceğim").
    * **Context:** "Hard to ignore" -> "Gözden kaçırmak imkansız" (Not literal).
    * **Avoid:** Old/Ottoman Turkish (e.g., "Şahadet" -> "İfade").

6. **FLUENT SENTENCE STRUCTURE:**
    * **Rule:** Avoid word-for-word translation of questions. 
    * **Example:** "What do you mean by that?" should be "Ne demek istiyorsun?" or "Ne diyorsun?" instead of the long formal version.

7. **VIOLENCE & ACTION CONTEXT:**
    * **Rule:** In fight or threat scenes, use direct and impactful language.
    * **Example:** "I'll smash his head" -> "Kafasını patlatacağım" or "Kafasını dağıtacağım".

8. **CONVERSATIONAL ADAPTATION:**
    * **Rule:** If a sentence feels too "English" in Turkish, rewrite it completely to sound like a native.
    * **Action:** Ensure the subject-object-verb balance is natural.

Why Gemini? (Smart Quota Management)

We specifically chose Google's Gemini and Gemma models due to their high performance and generous free tier.

  • Batch Processing: The application intelligently groups text from 20 pages into a single API request.
  • Unlimited Free Usage: By minimizing the number of requests through batching, you can translate a massive amount of content without ever hitting the daily limit (approx. 15,000 requests/day for Flash/Gemma models). This effectively makes the tool free to use for personal projects.

3. Text Rendering

  • Font Selection: The tool prioritizes animeace2_reg.ttf (standard manga font), falling back to arial.ttf if needed.
  • Smart Wrapping: A custom algorithm balances line lengths to fit text naturally into "balloon" shapes.
  • Inpainting: The original text is removed using OpenCV's inpainting techniques to create a clean canvas for the new text.

Installation

Prerequisites

GPU Support (Recommended)

To enable GPU acceleration for PaddleOCR (faster processing), you must install the GPU version of PaddlePaddle. Note: The current UI toggle for GPU is disabled pending further testing, but the backend supports it if configured correctly.

Refer to the PaddlePaddle Installation Page for CUDA/cuDNN requirements.

Dependencies

Install the required Python packages:

pip install -r requirements.txt

Key Libraries:

  • paddlepaddle / paddleocr
  • customtkinter
  • opencv-python
  • google-generativeai
  • Pillow

Usage

To start the application, run:

python app.py

By default, this will launch the Web UI mode at http://localhost:5000 and open your default browser. If you prefer to run the GUI (Tkinter) mode, pass the --gui flag:

python app.py --gui

Configuration & API Keys

For security and deployment (such as uploading to GitHub), you can configure the application in two ways:

  1. Environment Variables (Recommended for GitHub/Production): Copy .env.example to .env and fill in your API keys:
    copy .env.example .env
    Supported variables:
    • GEMINI_API_KEY: Your Gemini API Key (or a list of comma-separated keys for multi-key rotation).
    • CEREBRAS_API_KEY: Your Cerebras API Key (or a list of comma-separated keys).
    • DISCORD_WEBHOOK: Webhook URL for Discord notifications.
    • TELEGRAM_BOT_TOKEN & TELEGRAM_CHAT_ID: Telegram bot token and chat ID.
  2. Configuration File: Copy config.json.example to config.json and customize your settings.
    copy config.json.example config.json

Important

Before using the application, ensure you set your Gemini API key. If you do not provide an API key, the tool will fallback to basic Google Translate. This significantly degrades quality as it cannot establish context between speech bubbles, making the translation difficult to read.

Fonts used

The application uses the following fonts for rendering:

  • Comic Neue Bold (ComicNeue-Bold.ttf): Fetched automatically if missing.
  • Anime Ace 2.0 BB (animeace2_reg.ttf): Primary font for manga dialogue.
  • Arial (arial.ttf): Fallback font for special characters.

Test Environment

This application has been tested and verified on the following configuration:

  • OS: Windows 10
  • GPU: AMD Radeon RX 6700 XT
  • CPU: AMD Ryzen 5 5600
  • RAM: 16 GB

⚖️ License & Disclaimer

This project is licensed under the MIT License - see the LICENSE file for details.

  • Ownership: The software ownership remains with the developer.
  • Free Usage: The software is free to use, modify, and distribute.
  • Disclaimer: The software is provided "as-is", without warranty of any kind. The author/developer shall not be held liable or responsible for any claims, damages, legal issues (e.g., processing copyrighted materials), API costs, or other liabilities arising from the use of this software.

Türkçe

Manga Translator Pro, yerelleştirme sürecini kolaylaştırmak için tasarlanmış otomatik bir manga çeviri aracıdır. Gelişmiş OCR (Optik Karakter Tanıma) ve yapay zeka destekli çeviri kullanarak manga sayfalarını çeşitli dillerden Türkçeye (veya diğer hedef dillere) çevirirken orijinal görsel düzeni korur.

Özellikler

  • Çift Arayüz Modu: Varsayılan olarak modern bir Web UI (Flask + Socket.IO) başlatır, --gui parametresi verildiğinde ise Masaüstü GUI (CustomTkinter) modunda açılır.
  • Gelişmiş OCR Motorları: PaddleOCR ve ONNX Runtime aracılığıyla GPU/DirectML donanım hızlandırmalı RapidOCR desteği.
  • Çoklu Yapay Zeka Sağlayıcısı: Google Gemini API (Gemini 1.5 Flash/Pro, Gemma) ve ultra hızlı Cerebras API (LLaMA modelleri) ile entegrasyon.
  • Çoklu API Anahtarı Rotasyonu: Kota ve istek sınırlarını aşmak için birden fazla API anahtarı arasında otomatik geçiş yapar.
  • Çevre Değişkeni Desteği: API anahtarlarınızı .env veya sistem değişkenlerinde güvenle saklayabilmeniz için dahili dotenv desteği.
  • Hibrit Metin Temizleme: Konuşma balonlarındaki orijinal metinleri OpenCV Inpainting veya Düz Renk Dolgu yöntemleriyle temizler.
  • Özel Terimler Sözlüğü (Glossary): Çevirilerde tutarlılık sağlamak için kelime veya isim bazlı özel çeviri kuralları tanımlama imkanı.
  • Webtoon Okuyucu Oluşturucu: Çevrilen bölümleri tarayıcıda okumak üzere yerel bir siteye dönüştürür ve tek komutla ücretsiz Netlify dağıtımına hazırlar.
  • Anlık Bildirimler: İşlem başladığında, bittiğinde veya hata oluştuğunda Discord Webhook'ları ve Telegram botları üzerinden bildirim gönderimi.

Nasıl Çalışır?

1. Optik Karakter Tanıma (OCR)

Uygulama, metin bölgelerini algılamak için PaddleOCR kullanır.

  • Ön İşleme: Metin görünürlüğünü artırmak için görüntüler işlenir (Webtoon optimizasyonu için yükseltme şu anda devre dışıdır).
  • Algılama: Metin sınırlayıcı kutularını tanımlar ve metin içeriğini çıkarır.
  • Gruplama: Algılanan metin blokları, anlamlı cümleler oluşturmak için okuma sırasına (Manga için Yukarıdan Aşağıya, Sağdan Sola) göre mantıksal olarak gruplandırılır.

2. Yapay Zeka Çevirisi (Gemini Entegrasyonu)

Çıkarılan metin, çeviri için Google'ın Gemini modellerine gönderilir.

  • Prompt Mühendisliği: Gemini'ye "Profesyonel Webtoon Yerelleştiricisi" gibi davranması talimatını vermek için özel bir sistem istemi kullanılır.
  • Bağlam Kuralları: İstem şunlar için katı kurallar içerir:
    • Gürültü Ayırt Etme: OCR hatalarını yok sayma.
    • Mantıksal Yeniden Yapılandırma: Doğal ifadelendirme için kelimeleri yeniden sıralama.
    • Kültürel Uyarlama: Uygun hitap şekillerini ve modern Türkçe argoyu kullanma.
    • JSON Çıktısı: Yanıtın kolay ayrıştırma için geçerli bir JSON nesnesi olmasını sağlama.
  • Toplu İşleme: Verimliliği en üst düzeye çıkarmak ve bağlamı korumak için birden fazla balondan (veya sayfadan) gelen metin tek bir API çağrısında toplanır.

Sistem İstemi ("Gizli Sos")

Çevirinin kalitesi, büyük ölçüde Gemini'ye talimat vermek için kullanılan sistem istemine bağlıdır. İşte kullandığımız temel istem:

(İstem İngilizce olarak korunmuştur çünkü AI modeline bu dilde talimat verilmektedir)

You are a **Professional Webtoon Localizer** for the Turkish market.
Your goal is NOT just to translate words, but to **adapt the story** so it feels originally written in Turkish.

**CORE DIRECTIVES (Strict Rules):**
... (Yukarıdaki İngilizce bölümdeki kuralların aynısı)

Neden Gemini? (Akıllı Kota Yönetimi)

Yüksek performansı ve cömert ücretsiz katmanı nedeniyle özellikle Google'ın Gemini ve Gemma modellerini seçtik.

  • Toplu İşleme: Uygulama, 20 sayfadan gelen metni akıllıca tek bir API isteğinde gruplandırır.
  • Sınırsız Ücretsiz Kullanım: Toplu işleme yoluyla istek sayısını en aza indirerek, günlük sınıra (Flash/Gemma modelleri için yaklaşık 15.000 istek/gün) hiç takılmadan çok büyük miktarda içeriği çevirebilirsiniz. Bu, aracı kişisel projeler için etkili bir şekilde ücretsiz hale getirir.

3. Metin Oluşturma

  • Yazı Tipi Seçimi: Araç, animeace2_reg.ttf (standart manga yazı tipi) önceliklendirir, gerekirse arial.ttf kullanır.
  • Akıllı Kaydırma: Metni "balon" şekillerine doğal olarak sığdırmak için satır uzunluklarını dengeleyen özel bir algoritma kullanır.
  • Inpainting: Orijinal metin, yeni metin için temiz bir tuval oluşturmak üzere OpenCV'nin inpainting teknikleri kullanılarak kaldırılır.

Kurulum

Gereksinimler

GPU Desteği (Önerilen)

PaddleOCR için GPU hızlandırmasını (daha hızlı işlem) etkinleştirmek için PaddlePaddle'ın GPU sürümünü yüklemelisiniz. Not: Mevcut UI GPU geçişi daha fazla test yapılana kadar devre dışı bırakılmıştır, ancak arka uç doğru yapılandırılırsa bunu destekler.

CUDA/cuDNN gereksinimleri için PaddlePaddle Kurulum Sayfasına bakın.

Bağımlılıklar

Gerekli Python paketlerini yükleyin:

pip install -r requirements.txt

Temel Kütüphaneler:

  • paddlepaddle / paddleocr
  • customtkinter
  • opencv-python
  • google-generativeai
  • Pillow

Kullanım

Uygulamayı başlatmak için:

python app.py

Varsayılan olarak bu komut Web UI (Arayüzü) modunu http://localhost:5000 adresinde başlatır ve tarayıcınızı otomatik olarak açar. Eğer Masaüstü (GUI/Tkinter) modunu başlatmak isterseniz --gui parametresini kullanabilirsiniz:

python app.py --gui

Yapılandırma ve API Anahtarları

Güvenlik ve dağıtım kolaylığı için (GitHub'a yüklemeden önce) uygulamayı iki şekilde yapılandırabilirsiniz:

  1. Çevre Değişkenleri (Önerilen - GitHub / Canlı Ortam): .env.example dosyasını .env olarak kopyalayıp API anahtarlarınızı girin:
    copy .env.example .env
    Desteklenen değişkenler:
    • GEMINI_API_KEY: Gemini API Anahtarınız (veya rotasyonlu kullanım için virgülle ayrılmış anahtar listesi).
    • CEREBRAS_API_KEY: Cerebras API Anahtarınız.
    • DISCORD_WEBHOOK: Discord bildirimleri için Webhook adresi.
    • TELEGRAM_BOT_TOKEN & TELEGRAM_CHAT_ID: Telegram bot tokenı ve sohbet kimliği.
  2. Yapılandırma Dosyası: config.json.example dosyasını config.json olarak kopyalayarak ayarlarınızı özelleştirebilirsiniz:
    copy config.json.example config.json

Important

Uygulamayı kullanmadan önce Gemini API anahtarınızı tanımladığınızdan emin olun. Eğer API anahtarı girmezseniz, araç temel Google Çeviri'ye geçiş yapacaktır. Bu durum, balonlar arası bağlam kurulamadığı için çeviri kalitesini önemli ölçüde düşürür ve okumayı zorlaştırır.

Kullanılan Yazı Tipleri

Uygulama, oluşturma için aşağıdaki yazı tiplerini kullanır:

  • Comic Neue Bold (ComicNeue-Bold.ttf): Eksikse otomatik olarak indirilir.
  • Anime Ace 2.0 BB (animeace2_reg.ttf): Manga diyalogları için birincil yazı tipi.
  • Arial (arial.ttf): Özel karakterler için yedek yazı tipi.

🚀 Web Manga Okuyucu (Webtoon Viewer)

Çevrilmiş mangaları okumak için yerel bir web sitesi oluşturabilirsiniz. Bu, mangaları tarayıcı üzerinden webtoon formatında okumanızı sağlar.

Kurulum ve Kullanım

  1. Uygulama ile çeviri ve işlemleri tamamlayın (output klasörü dolduktan sonra).
  2. Site Oluşturma/Güncelleme: Aşağıdaki komutu çalıştırarak site veritabanını güncelleyin:
    python create_site.py
  3. Siteyi Açma: site/index.html dosyasını tarayıcınızda açın.

Yayınlama (Netlify - Ücretsiz)

Siteyi arkadaşlarınızla paylaşmak veya internete yüklemek için public_html klasörünü kullanabilirsiniz.

  1. Hazırlık:
    python prepare_deploy.py
    Bu komut, public_html adında, yüklemeye hazır temiz bir klasör oluşturur.
  2. Yükleme:
    • Netlify Drop sitesine gidin.
    • public_html klasörünü sayfaya sürükleyip bırakın.
    • Siteniz saniyeler içinde yayında!

🌡️ Sıcaklık Ayarları (Temperature)

LLM'lerin (Gemini) yaratıcılık seviyesini kontrol edebilirsiniz.

  • Main (0.7): Varsayılan. Dengeli ve doğal çeviriler için idealdir.
  • QC (0.1): Kalite kontrol ve JSON düzeltmeleri için kullanılır. Düşük olması halüsinasyonları önler.

Test Ortamı

Bu uygulama aşağıdaki konfigürasyonda test edilmiş ve doğrulanmıştır:

  • İşletim Sistemi: Windows 10
  • GPU: AMD Radeon RX 6700 XT
  • CPU: AMD Ryzen 5 5600
  • RAM: 16 GB

⚖️ Lisans ve Sorumluluk Reddi

Bu proje MIT Lisansı ile lisanslanmıştır - detaylar için LICENSE dosyasına bakabilirsiniz.

  • Sahiplik: Yazılımın tüm sahipliği asıl geliştiriciye aittir.
  • Ücretsiz Kullanım: Yazılım herkes için ücretsizdir; kopyalanabilir, değiştirilebilir ve dağıtılabilir.
  • Sorumluluk Reddi: Yazılım "olduğu gibi" sunulmaktadır. Yapımcı/geliştirici; telif hakkı bulunan materyallerin işlenmesinden doğabilecek yasal sorunlardan, API maliyetlerinden, veri kayıplarından veya yazılımın kullanımından kaynaklanabilecek herhangi bir zarardan hiçbir şekilde sorumlu veya yükümlü tutulamaz.

About

Manga Translator Pro — Automated manga translation tool with PaddleOCR, Gemini AI, and multi-provider API support. Python Flask web UI + Desktop GUI.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors