Convierte imágenes de apuntes manuscritos, documentos PDF y contenido matemático a código LaTeX usando Mathpix OCR y OpenRouter AI.
- Python 3.7+ instalado en tu sistema
- Git para clonar el repositorio
git clone https://github.com/tu-usuario/latex-translator.git
cd latex-translator# Crear entorno virtual
python -m venv .venv
# Activar entorno virtual
# En Linux/Mac:
source .venv/bin/activate
# En Windows:
# .venv\Scripts\activate# Instalar dependencias básicas
pip install -r requirements.txt
# Instalar soporte para PDF (opcional pero recomendado)
pip install pdf2image
# Instalar Mathpix OCR (opcional)
pip install mpxpy# Configurar OpenRouter (obligatorio para procesamiento de apuntes)
export OPENROUTER_API_KEY="tu-api-key-de-openrouter"
# Configurar Mathpix (opcional, para contenido matemático)
export MATHPIX_APP_ID="tu-app-id"
export MATHPIX_APP_KEY="tu-app-key"Nota: Para hacer permanentes estas variables, añádelas a tu archivo ~/.bashrc o ~/.zshrc.
mis_apuntes/
├── documento.pdf
├── imagen1.jpg
├── imagen2.png
└── carpeta_apuntes/
├── pagina1.jpg
├── pagina2.jpg
└── pagina3.jpg
# Procesar todo en el directorio actual
python latex_translator.py
# Procesar directorio específico
python latex_translator.py --input ./mis_apuntes --output ./resultados
# Usar modo automático (recomendado)
python latex_translator.py --mode auto
# Solo LaTeX sin metadata
python latex_translator.py --format latex --no-metadata- Mathpix: ~$0.004 USD por página (dependiendo del contenido)
- Google Gemini 2.5 Flash: ~$0.004 USD por página (dependiendo del contenido)
- Modelos más avanzados: Varían según el modelo seleccionado
- ✅ Excelente para texto y ecuaciones matemáticas
- ✅ Reconocimiento preciso de símbolos matemáticos
- ❌ NO soporta TikZ (no puede replicar diagramas o dibujos en LaTeX)
- ❌ Limitado a contenido textual y matemático
- ✅ Excelente para texto y ecuaciones
- ✅ Soporte para TikZ (puede replicar diagramas y dibujos en LaTeX)
- ✅ Capacidad de interpretar contenido visual complejo
- ✅ Flexibilidad para diferentes tipos de contenido
- Para contenido matemático puro: Mathpix o Gemini 2.5 Flash
- Para apuntes con diagramas: Modelos de visión como Claude 3.5 Sonnet o GPT-4
- Para costo/rendimiento: Gemini 2.5 Flash (equilibrio perfecto)
La herramienta detecta automáticamente el tipo de entrada y se comporta de forma inteligente:
| Entrada | Salida | Comportamiento |
|---|---|---|
documento.pdf |
documento.md |
1 archivo unificado con todo el LaTeX del PDF |
imagen1.jpgimagen2.jpg |
imagen1.mdimagen2.md |
1 archivo por imagen |
carpeta_apuntes/├─ img1.jpg ├─ img2.jpg |
unified_carpeta_apuntes.md |
1 archivo unificado con todo el LaTeX de la carpeta |
# Entrada/Salida
--input, -i Directorio de entrada (default: directorio actual)
--output, -o Directorio de salida (default: ./latex_output)
# Modo de Procesamiento
--mode, -m Modo: auto, mathpix, openrouter (default: auto)
--format, -f Formato: markdown, latex, both (default: markdown)
# Configuración
--no-skip Procesar archivos incluso si ya fueron procesados
--batch-size Tamaño del lote para procesamiento (default: 10)
--timeout Timeout de API en segundos (default: 30)
--confidence-threshold Umbral mínimo de confianza (0-100, default: 0)
--no-metadata Excluir metadata del output
--no-unified Procesar archivos individualmente, sin documentos unificados
# Información
--stats Mostrar estadísticas de la base de datos
--version Mostrar información de versión
--help Mostrar ayuda completa# Procesar carpeta completa de apuntes
python latex_translator.py --input ./apuntes_matematicas --output ./latex_resultados --mode openrouter
# Usar modelo específico para apuntes con diagramas
python latex_translator.py --input ./apuntes --output ./resultados --mode openrouter --openrouter-model "anthropic/claude-3.5-sonnet"# Usar Mathpix para ecuaciones y fórmulas
python latex_translator.py --input ./formulas --output ./resultados --mode mathpix --format latex
# Usar Gemini para contenido matemático con buen costo/rendimiento
python latex_translator.py --input ./formulas --output ./resultados --mode openrouter --openrouter-model "google/gemini-2.5-flash"# Procesar sin metadata para obtener solo LaTeX
python latex_translator.py --format latex --no-metadata --no-skip
# Procesar con modelo económico
python latex_translator.py --mode openrouter --openrouter-model "google/gemini-2.5-flash" --no-metadata# Usar modelo avanzado para replicar diagramas en TikZ
python latex_translator.py --input ./diagramas --output ./resultados --mode openrouter --openrouter-model "anthropic/claude-3.5-sonnet"
# Usar GPT-4 para contenido visual complejo
python latex_translator.py --input ./diagramas --output ./resultados --mode openrouter --openrouter-model "openai/gpt-4"# Escaneas tus apuntes con Adobe Scan y obtienes un PDF
# Luego procesas ese PDF directamente:
python latex_translator.py --input "Adobe Scan 19 oct 2025.pdf" --output ./resultados --mode openrouter
# O si tienes varios PDFs de Adobe Scan en una carpeta:
python latex_translator.py --input ./escaneos_adobe --output ./latex_resultados
# Para contenido matemático puro, usar Mathpix:
python latex_translator.py --input "Adobe Scan 19 oct 2025.pdf" --output ./resultados --mode mathpixNota: Adobe Scan genera PDFs que la herramienta procesa perfectamente, manteniendo el orden y estructura de tus apuntes escaneados.
latex-translator/
├── latex_translator.py # Herramienta principal
├── requirements.txt # Dependencias básicas
├── README.md # Este archivo
├── prompts/ # Prompts de procesamiento
│ └── default_prompt.md # Instrucciones para OpenRouter
└── LICENSE # Licencia MIT
# Verificar que la variable esté configurada
echo $OPENROUTER_API_KEY
# Si no aparece, configurarla de nuevo
export OPENROUTER_API_KEY="tu-api-key"# Instalar pdf2image
pip install pdf2image# Instalar mpxpy (opcional)
pip install mpxpy# Forzar reprocesamiento de todos los archivos
python latex_translator.py --no-skip
# Ver estadísticas de procesamiento
python latex_translator.py --statsPuedes crear prompts personalizados en la carpeta prompts/:
# Crear prompt personalizado
cp mi_prompt.md prompts/
# La herramienta lo usará automáticamenteEste proyecto está bajo la Licencia MIT - ver el archivo LICENSE para más detalles.
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
- ✅ Compatibilidad completa con OpenRouter y Mathpix
- ✅ Soporte para PDF y formatos de imagen (JPG, PNG, etc.)
- ✅ Comportamiento inteligente por tipo de entrada
- ✅ Salida organizada en Markdown con LaTeX dentro de bloques de código
- ✅ CLI profesional con todas las opciones configurables
- ✅ Base de datos para evitar reprocesamiento
- ✅ Manejo robusto de errores y logging
¡Listo para convertir tus apuntes manuscritos a LaTeX profesional! 🎉