> Optimización sistemática de hiperparámetros de **PaddleOCR (PP-OCRv5)** mediante **Ray Tune** con **Optuna** para mejorar el reconocimiento óptico de caracteres en documentos académicos en español.
Optimizar el rendimiento de PaddleOCR para documentos académicos en español mediante ajuste de hiperparámetros, alcanzando un **CER inferior al 2%** sin requerir fine-tuning del modelo ni recursos GPU dedicados.
1.**`textline_orientation=True` es crítico**: Reduce el CER en un 69.7%. Para documentos con layouts mixtos (tablas, encabezados), la clasificación de orientación de línea es esencial.
2.**Umbral `text_det_thresh` importante**: Correlación -0.52 con CER. Valores óptimos entre 0.4-0.5. Valores < 0.1 causan fallos catastróficos (CER >40%).
3.**Componentes innecesarios para PDFs digitales**: `use_doc_orientation_classify` y `use_doc_unwarping` no mejoran el rendimiento en documentos académicos digitales.
---
## Requisitos
| Componente | Versión |
|------------|---------|
| Python | 3.11.9 |
| PaddlePaddle | 3.2.2 |
| PaddleOCR | 3.3.2 |
| Ray | 2.52.1 |
| Optuna | 4.6.0 |
| jiwer | (para métricas CER/WER) |
| PyMuPDF | (para conversión PDF) |
---
## Uso
### Preparar dataset
```bash
# Ejecutar prepare_dataset.ipynb para convertir PDF a imágenes y extraer ground truth
- **Dataset**: Instrucciones para la elaboración del TFE (UNIR), 24 páginas
- **Resultados Ray Tune (PRINCIPAL)**: `src/raytune_paddle_subproc_results_20251207_192320.csv` - 64 trials de optimización con todas las métricas y configuraciones
# PASO 2: Aplicar contenido de docs/ a la plantilla UNIR
python3 apply_content.py
# Output: thesis_output/plantilla_individual.htm
# PASO 3: Abrir en Word y finalizar documento
# - Abrir thesis_output/plantilla_individual.htm en Microsoft Word
# - Ctrl+A → F9 para actualizar todos los índices
# - IMPORTANTE: Ajustar manualmente el tamaño de las imágenes para legibilidad
# (seleccionar imagen → clic derecho → Tamaño y posición → ajustar al ancho de página)
# - Guardar como .docx
```
### Notas Importantes para Edición en Word
1.**Ajuste de imágenes**: Las figuras Mermaid pueden requerir ajuste manual de tamaño para ser legibles. Seleccionar cada imagen y ajustar al ancho de texto (~16cm).
2.**Actualización de índices**: Después de cualquier cambio, usar Ctrl+A → F9 para regenerar índices.
3.**Formato de código**: Los bloques de código usan Consolas 9pt. Verificar que no se corten líneas largas.
- Eliminación automática de textos de instrucción de la plantilla
---
## Trabajo Pendiente para Completar el TFM
### Contexto: Limitaciones de Hardware
Este trabajo adoptó la estrategia de **optimización de hiperparámetros** en lugar de **fine-tuning** debido a:
- **Sin GPU dedicada**: Ejecución exclusivamente en CPU
- **Tiempo de inferencia elevado**: ~69 segundos/página en CPU
- **Fine-tuning inviable**: Entrenar modelos de deep learning sin GPU requeriría tiempos prohibitivos
La optimización de hiperparámetros demostró ser una **alternativa efectiva** al fine-tuning, logrando una reducción del 80.9% en el CER sin reentrenar el modelo.
### Tareas Completadas
- [x]**Estructura docs/ según plantilla UNIR**: Todos los capítulos siguen numeración exacta (1.1, 1.2, etc.)
- [x]**Añadir diagramas Mermaid**: 7 diagramas añadidos (pipeline OCR, arquitectura Ray Tune, gráficos de comparación)
- [x]**Generar documento TFM unificado**: Script `apply_content.py` genera documento completo desde docs/
- [x]**Convertir Mermaid a PNG**: Script `generate_mermaid_figures.py` genera figuras automáticamente
### Tareas Pendientes
#### 1. Validación del Enfoque (Prioridad Alta)
- [ ]**Validación cruzada en otros documentos**: Evaluar la configuración óptima en otros tipos de documentos en español (facturas, formularios, contratos) para verificar generalización
- [ ]**Ampliar el dataset**: El dataset actual tiene solo 24 páginas. Construir un corpus más amplio y diverso (mínimo 100 páginas)
- [ ]**Validación del ground truth**: Revisar manualmente el texto de referencia extraído automáticamente para asegurar su exactitud
- [ ]**Explorar `text_det_unclip_ratio`**: Este parámetro quedó fijado en 0.0. Incluirlo en el espacio de búsqueda podría mejorar resultados
- [ ]**Comparativa con fine-tuning** (si se obtiene acceso a GPU): Cuantificar la brecha de rendimiento entre optimización de hiperparámetros y fine-tuning real
- [ ]**Evaluación con GPU**: Medir tiempos de inferencia con aceleración GPU para escenarios de producción
#### 3. Documentación y Presentación (Prioridad Alta)
- [ ]**Crear presentación**: Preparar slides para la defensa del TFM
- [ ]**Revisión final del documento**: Verificar formato, índices y contenido en Word
#### 4. Extensiones Futuras (Opcional)
- [ ]**Herramienta de configuración automática**: Desarrollar una herramienta que determine automáticamente la configuración óptima para un nuevo tipo de documento
- [ ]**Benchmark público para español**: Publicar un benchmark de OCR para documentos en español que facilite comparación de soluciones
- [ ]**Optimización multi-objetivo**: Considerar CER, WER y tiempo de inferencia simultáneamente
### Recomendación de Próximos Pasos
1.**Inmediato**: Abrir documento generado en Word, actualizar índices (Ctrl+A, F9), guardar como .docx
2.**Corto plazo**: Validar en 2-3 tipos de documentos adicionales para demostrar generalización
3.**Para la defensa**: Crear presentación con visualizaciones de resultados
---
## Licencia
Este proyecto es parte de un Trabajo Fin de Máster académico.