Skip to content

damkandev/etranslator

Repository files navigation

eTranslator 📖

Traductor paralelo de EPUB de inglés a español, impulsado por LLMs (Ollama y Vertex AI).

🚀 Características Principales

  • Procesamiento en Paralelo: Traduce múltiples bloques simultáneamente usando ThreadPoolExecutor.
  • Chunking Dinámico: División inteligente que respeta la estructura HTML y los límites de tokens.
  • Rotación de Regiones: Failover automático y balanceo de carga entre regiones de Google Cloud para Vertex AI.
  • Interfaz en Tiempo Real: Visualización de tokens en streaming y tarjetas de estado individuales para cada bloque.
  • Robustez en Fallos: Manejo híbrido de EPUB (EbookLib + fallback de lectura directa de Zip).

🧠 Lógica del Algoritmo

El proceso de traducción sigue un flujo de 5 pasos:

  1. Extracción: Se descifra y extrae el EPUB. Se identifican las etiquetas HTML que contienen texto (<p>, <h1>-<h6>, <li>, etc.).
  2. Fragmentación Dinámica (Dynamic Chunking): En lugar de una división rígida, el algoritmo calcula un tamaño ideal de bloque basado en el conteo de caracteres. Intenta agrupar tantos párrafos como sea posible sin exceder el límite max_safe_chars, manteniendo la integridad de las oraciones.
  3. Ejecución Paralela: Un ThreadPoolExecutor despacha las tareas de traducción. Cada trabajador maneja un único bloque, comunicándose a través de una cola segura para hilos para enviar los tokens a la interfaz.
  4. Rotación de Regiones (Solo Vertex AI):
    • Cuando una llamada a la API devuelve un error 429: Resource Exhausted, se activa el RegionRotator.
    • Selecciona una nueva región (de un pool de 9 regiones distribuidas globalmente).
    • Re-inicializa vertexai en esa nueva región y reintenta con un retroceso exponencial (backoff).
  5. Reensamblaje Impecable: El algoritmo mapea las etiquetas traducidas de vuelta a sus posiciones originales en el DOM HTML usando BeautifulSoup, asegurando que el diseño, las imágenes y los elementos no traducibles permanezcan intactos.

🌍 Estrategia de Rotación de Regiones

Para maximizar la cuota de la API y evitar límites estrictos por región, eTranslator implementa una Ruta de Failover Regional:

graph TD
    A[Llamada API] --> B{¿Error 429?}
    B -- No --> C[Éxito]
    B -- Yes --> D[Rotar Región]
    D --> E[Init Vertex AI en Nueva Región]
    E --> F[Retroceso Exponencial]
    F --> A
Loading

Regiones Soportadas: us-central1, us-west1, us-east4, europe-west1, europe-west4, asia-northeast1, asia-southeast1, us-east1, us-west4.


🛠️ Uso

1. Requisitos Previos

  • Python 3.10+
  • Ollama (para traducción local)
  • Proyecto de Google Cloud (para Vertex AI)

2. Configuración

pip install -r requirements.txt

3. Ajustes

  • Ollama: Asegúrate de que Ollama esté corriendo (ollama serve).
  • Vertex AI: Coloca tu llave de cuenta de servicio como google-credentials.json en la carpeta raíz.
  • Configuración: Ajusta config.json para cambiar modelos, colores de la interfaz o prompts.

4. Ejecución

python3 main.py

⚙️ Configuración (config.json)

Grupo Clave Descripción
api gemini_models Modelos preferidos para Vertex AI.
translation max_workers Número de hilos concurrentes.
translation default_chunk_size Caracteres ideales por bloque.
ui colors Personalización completa del tema Catppuccin Mocha.

hecho con café por Damian Panes

About

epub translator

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages