Traductor paralelo de EPUB de inglés a español, impulsado por LLMs (Ollama y Vertex AI).
- 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).
El proceso de traducción sigue un flujo de 5 pasos:
- Extracción: Se descifra y extrae el EPUB. Se identifican las etiquetas HTML que contienen texto (
<p>,<h1>-<h6>,<li>, etc.). - 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. - Ejecución Paralela: Un
ThreadPoolExecutordespacha 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. - Rotación de Regiones (Solo Vertex AI):
- Cuando una llamada a la API devuelve un error
429: Resource Exhausted, se activa elRegionRotator. - Selecciona una nueva región (de un pool de 9 regiones distribuidas globalmente).
- Re-inicializa
vertexaien esa nueva región y reintenta con un retroceso exponencial (backoff).
- Cuando una llamada a la API devuelve un error
- 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.
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
Regiones Soportadas: us-central1, us-west1, us-east4, europe-west1, europe-west4, asia-northeast1, asia-southeast1, us-east1, us-west4.
- Python 3.10+
- Ollama (para traducción local)
- Proyecto de Google Cloud (para Vertex AI)
pip install -r requirements.txt- Ollama: Asegúrate de que Ollama esté corriendo (
ollama serve). - Vertex AI: Coloca tu llave de cuenta de servicio como
google-credentials.jsonen la carpeta raíz. - Configuración: Ajusta
config.jsonpara cambiar modelos, colores de la interfaz o prompts.
python3 main.py| 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