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.
- Dual Interface Modes: Launches in a modern Web UI (Flask + Socket.IO) by default, or runs in a Desktop GUI (CustomTkinter) via the
--guiflag. - 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
.envfiles 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.
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.
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.
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.
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.
- Font Selection: The tool prioritizes
animeace2_reg.ttf(standard manga font), falling back toarial.ttfif 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.
- Python 3.8+
- PaddleOCR: Follow the official installation guide for your specific hardware.
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.
Install the required Python packages:
pip install -r requirements.txtKey Libraries:
paddlepaddle/paddleocrcustomtkinteropencv-pythongoogle-generativeaiPillow
To start the application, run:
python app.pyBy 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 --guiFor security and deployment (such as uploading to GitHub), you can configure the application in two ways:
- Environment Variables (Recommended for GitHub/Production):
Copy
.env.exampleto.envand fill in your API keys:Supported variables:copy .env.example .env
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.
- Configuration File:
Copy
config.json.exampletoconfig.jsonand 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.
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.
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
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.
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.
- Çift Arayüz Modu: Varsayılan olarak modern bir Web UI (Flask + Socket.IO) başlatır,
--guiparametresi 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ı
.envveya 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.
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.
Çı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.
Ç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ı)
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.
- Yazı Tipi Seçimi: Araç,
animeace2_reg.ttf(standart manga yazı tipi) önceliklendirir, gerekirsearial.ttfkullanı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.
- Python 3.8+
- PaddleOCR: Donanımınız için resmi kurulum kılavuzunu izleyin.
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.
Gerekli Python paketlerini yükleyin:
pip install -r requirements.txtTemel Kütüphaneler:
paddlepaddle/paddleocrcustomtkinteropencv-pythongoogle-generativeaiPillow
Uygulamayı başlatmak için:
python app.pyVarsayı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 --guiGüvenlik ve dağıtım kolaylığı için (GitHub'a yüklemeden önce) uygulamayı iki şekilde yapılandırabilirsiniz:
- Çevre Değişkenleri (Önerilen - GitHub / Canlı Ortam):
.env.exampledosyasını.envolarak kopyalayıp API anahtarlarınızı girin:Desteklenen değişkenler:copy .env.example .env
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.
- Yapılandırma Dosyası:
config.json.exampledosyasınıconfig.jsonolarak 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.
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.
Çevrilmiş mangaları okumak için yerel bir web sitesi oluşturabilirsiniz. Bu, mangaları tarayıcı üzerinden webtoon formatında okumanızı sağlar.
- Uygulama ile çeviri ve işlemleri tamamlayın (
outputklasörü dolduktan sonra). - Site Oluşturma/Güncelleme: Aşağıdaki komutu çalıştırarak site veritabanını güncelleyin:
python create_site.py
- Siteyi Açma:
site/index.htmldosyasını tarayıcınızda açın.
Siteyi arkadaşlarınızla paylaşmak veya internete yüklemek için public_html klasörünü kullanabilirsiniz.
- Hazırlık:
Bu komut,
python prepare_deploy.py
public_htmladında, yüklemeye hazır temiz bir klasör oluşturur. - Yükleme:
- Netlify Drop sitesine gidin.
public_htmlklasörünü sayfaya sürükleyip bırakın.- Siteniz saniyeler içinde yayında!
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.
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
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.