doc
Some checks failed
build_docker / essential (pull_request) Has been cancelled
build_docker / build_cpu (pull_request) Has been cancelled
build_docker / build_gpu (pull_request) Has been cancelled
build_docker / build_easyocr (pull_request) Has been cancelled
build_docker / build_easyocr_gpu (pull_request) Has been cancelled
build_docker / build_doctr (pull_request) Has been cancelled
build_docker / build_doctr_gpu (pull_request) Has been cancelled
build_docker / build_raytune (pull_request) Has been cancelled
Some checks failed
build_docker / essential (pull_request) Has been cancelled
build_docker / build_cpu (pull_request) Has been cancelled
build_docker / build_gpu (pull_request) Has been cancelled
build_docker / build_easyocr (pull_request) Has been cancelled
build_docker / build_easyocr_gpu (pull_request) Has been cancelled
build_docker / build_doctr (pull_request) Has been cancelled
build_docker / build_doctr_gpu (pull_request) Has been cancelled
build_docker / build_raytune (pull_request) Has been cancelled
This commit is contained in:
@@ -1,24 +1,18 @@
|
||||
# Desarrollo específico de la contribución
|
||||
|
||||
Este capítulo presenta el desarrollo completo del estudio comparativo y la optimización de hiperparámetros de sistemas OCR. Se estructura según el tipo de trabajo "Comparativa de soluciones" establecido por las instrucciones de UNIR: planteamiento de la comparativa, desarrollo de la comparativa, y discusión y análisis de resultados.
|
||||
El presente capítulo constituye el núcleo técnico de este trabajo fin de máster. Siguiendo la estructura de "Comparativa de soluciones" establecida por las instrucciones de UNIR, se desarrollan tres fases interrelacionadas: el planteamiento y ejecución del benchmark comparativo, el proceso de optimización de hiperparámetros mediante Ray Tune, y finalmente el análisis e interpretación de los resultados obtenidos.
|
||||
|
||||
## Planteamiento de la comparativa
|
||||
|
||||
### Introducción
|
||||
|
||||
Esta sección presenta los resultados del estudio comparativo realizado entre tres soluciones OCR de código abierto: EasyOCR, PaddleOCR y DocTR. Los experimentos fueron documentados en el notebook `ocr_benchmark_notebook.ipynb` del repositorio. El objetivo es identificar el modelo base más prometedor para la posterior fase de optimización de hiperparámetros.
|
||||
Antes de abordar la optimización de hiperparámetros, era necesario seleccionar el motor OCR que serviría como base para la experimentación. Para ello, se realizó un estudio comparativo entre tres soluciones de código abierto representativas del estado del arte: EasyOCR, PaddleOCR y DocTR. Los experimentos, documentados en el notebook `ocr_benchmark_notebook.ipynb` del repositorio, permitieron identificar el modelo más prometedor para la fase de optimización posterior.
|
||||
|
||||
### Identificación del Problema
|
||||
|
||||
El reconocimiento óptico de caracteres (OCR) en documentos académicos en español presenta desafíos específicos que no han sido ampliamente abordados en la literatura:
|
||||
El reconocimiento óptico de caracteres en documentos académicos en español presenta desafíos específicos que la literatura no ha abordado en profundidad. A diferencia de los benchmarks estándar en inglés, los documentos académicos hispanohablantes combinan características ortográficas propias —acentos, eñes, diéresis y signos de puntuación invertidos— con layouts estructuralmente complejos.
|
||||
|
||||
1. **Layouts complejos**: Los documentos académicos combinan texto corrido, tablas, listas numeradas, encabezados multinivel y notas al pie.
|
||||
|
||||
2. **Caracteres específicos del español**: Acentos (á, é, í, ó, ú), eñe (ñ), diéresis (ü) y signos de puntuación invertidos (¿, ¡).
|
||||
|
||||
3. **Formato formal**: Tipografía profesional con múltiples fuentes, tamaños y estilos (negrita, cursiva).
|
||||
|
||||
4. **Calidad variable**: Documentos digitales de alta calidad pero con posibles artefactos de compresión PDF.
|
||||
Los documentos académicos típicos incluyen texto corrido entremezclado con tablas, listas numeradas, encabezados multinivel y notas al pie, lo que complica significativamente la tarea de ordenación del texto reconocido. A esto se suma el uso de tipografía profesional con múltiples fuentes, tamaños y estilos (negrita, cursiva), que puede confundir a los modelos de reconocimiento. Aunque los PDFs digitales suelen tener alta calidad, pueden contener artefactos de compresión que degradan la legibilidad de caracteres pequeños o de bajo contraste.
|
||||
|
||||
### Alternativas Evaluadas
|
||||
|
||||
@@ -213,30 +207,19 @@ Esta riqueza de configuración permite explorar sistemáticamente el espacio de
|
||||
|
||||
4. **Ejecución en CPU**: Todos los experimentos se realizaron en CPU, limitando la exploración de configuraciones que podrían beneficiarse de aceleración GPU.
|
||||
|
||||
### Resumen de la Sección
|
||||
### Síntesis del Benchmark
|
||||
|
||||
Esta sección ha presentado:
|
||||
El benchmark comparativo ha permitido identificar PaddleOCR como la solución más prometedora para la fase de optimización, gracias a su combinación de rendimiento base aceptable (~5-6% CER), alta configurabilidad del pipeline y documentación técnica completa. Sin embargo, el análisis también reveló limitaciones importantes: el tamaño reducido del benchmark (5 páginas), la restricción a un único tipo de documento, y la extracción automática del ground truth que puede introducir errores en layouts complejos. Estas limitaciones se tendrán en cuenta al interpretar los resultados de la fase de optimización.
|
||||
|
||||
1. La identificación del problema y los criterios de éxito establecidos
|
||||
2. La configuración detallada del benchmark con tres soluciones OCR
|
||||
3. Los resultados cuantitativos y cualitativos obtenidos
|
||||
4. La justificación de la selección de PaddleOCR para optimización
|
||||
5. Las limitaciones reconocidas del benchmark
|
||||
|
||||
**Fuentes de datos utilizadas:**
|
||||
- `ocr_benchmark_notebook.ipynb`: Código del benchmark
|
||||
- Documentación oficial de PaddleOCR
|
||||
**Fuentes de datos:** `ocr_benchmark_notebook.ipynb` y documentación oficial de PaddleOCR.
|
||||
|
||||
## Desarrollo de la comparativa: Optimización de hiperparámetros
|
||||
|
||||
### Introducción
|
||||
|
||||
Esta sección describe el proceso de optimización de hiperparámetros de PaddleOCR utilizando Ray Tune con el algoritmo de búsqueda Optuna. Los experimentos fueron implementados en [`src/run_tuning.py`](https://github.com/seryus/MastersThesis/blob/main/src/run_tuning.py) con la librería de utilidades [`src/raytune_ocr.py`](https://github.com/seryus/MastersThesis/blob/main/src/raytune_ocr.py), y los resultados se almacenaron en [`src/results/`](https://github.com/seryus/MastersThesis/tree/main/src/results).
|
||||
Una vez seleccionado PaddleOCR como motor base, el siguiente paso fue explorar sistemáticamente su espacio de configuración para identificar los hiperparámetros que maximizan el rendimiento en documentos académicos en español. Para ello se empleó Ray Tune con el algoritmo de búsqueda Optuna, una combinación que permite explorar eficientemente espacios de búsqueda mixtos (parámetros continuos y categóricos). Los experimentos se implementaron en [`src/run_tuning.py`](https://github.com/seryus/MastersThesis/blob/main/src/run_tuning.py) con apoyo de la librería [`src/raytune_ocr.py`](https://github.com/seryus/MastersThesis/blob/main/src/raytune_ocr.py), almacenándose los resultados en [`src/results/`](https://github.com/seryus/MastersThesis/tree/main/src/results).
|
||||
|
||||
La optimización de hiperparámetros representa una alternativa al fine-tuning tradicional que no requiere:
|
||||
- Acceso a GPU dedicada
|
||||
- Dataset de entrenamiento etiquetado
|
||||
- Modificación de los pesos del modelo
|
||||
Esta aproximación ofrece ventajas significativas frente al fine-tuning tradicional: no requiere datasets de entrenamiento etiquetados, no modifica los pesos del modelo preentrenado, y puede ejecutarse con hardware de consumo cuando se dispone de aceleración GPU.
|
||||
|
||||
### Configuración del Experimento
|
||||
|
||||
@@ -870,36 +853,19 @@ xychart-beta
|
||||
2. La variabilidad del tiempo es moderada (std = 0.53 s/página), con algunos trials más lentos debido a configuraciones con módulos de preprocesamiento activos.
|
||||
3. En comparación, la ejecución en CPU requiere ~69 segundos/página (82× más lento), lo que justifica el uso de GPU para optimización y producción.
|
||||
|
||||
### Resumen de la Sección
|
||||
### Síntesis de la Optimización
|
||||
|
||||
Esta sección ha presentado:
|
||||
Los 64 trials ejecutados con Ray Tune y aceleración GPU revelaron patrones claros en el comportamiento de PaddleOCR. El hallazgo más significativo es que los parámetros estructurales —`textline_orientation` y `use_doc_orientation_classify`— tienen mayor impacto que los umbrales numéricos: activarlos reduce el CER medio de 12.40% a 3.76%. En cuanto a umbrales, valores bajos de `text_det_thresh` (~0.05) benefician el rendimiento, mientras que `use_doc_unwarping` resulta innecesario para PDFs digitales.
|
||||
|
||||
1. **Configuración del experimento**: Arquitectura Docker Compose, dataset de 45 páginas, espacio de búsqueda de 7 dimensiones, ejecución con GPU RTX 3060
|
||||
El mejor trial alcanzó un CER de 0.79%, cumpliendo el objetivo de CER < 2%. No obstante, la validación sobre el dataset completo de 45 páginas arrojó un CER de 7.72%, evidenciando sobreajuste al subconjunto de optimización de 5 páginas. Aun así, esto representa una mejora del 12.8% respecto al baseline (8.85%), demostrando el valor de la optimización sistemática incluso cuando la generalización es imperfecta.
|
||||
|
||||
2. **Resultados estadísticos**:
|
||||
- CER medio: 2.30% (std: 2.20%)
|
||||
- CER mínimo (mejor trial): **0.79%**
|
||||
- 67.2% de trials con CER < 2%
|
||||
|
||||
3. **Hallazgos clave**:
|
||||
- `textline_orientation=True` y `use_doc_orientation_classify=True` son críticos
|
||||
- `text_det_thresh` bajo (0.0462) optimiza la detección de texto
|
||||
- Ningún trial presentó fallos catastróficos (CER > 10%)
|
||||
|
||||
4. **Mejora en dataset completo**: CER reducido de 8.85% a 7.72% (reducción del 12.8%)
|
||||
|
||||
5. **Observación sobre generalización**: El mejor trial (0.79%) no generalizó completamente al dataset completo (7.72%), evidenciando sobreajuste al subconjunto de 5 páginas
|
||||
|
||||
**Fuentes de datos:**
|
||||
- [`src/run_tuning.py`](https://github.com/seryus/MastersThesis/blob/main/src/run_tuning.py): Script principal de optimización
|
||||
- [`src/raytune_ocr.py`](https://github.com/seryus/MastersThesis/blob/main/src/raytune_ocr.py): Librería de utilidades Ray Tune
|
||||
- [`src/results/raytune_paddle_results_20260119_122609.csv`](https://github.com/seryus/MastersThesis/blob/main/src/results/raytune_paddle_results_20260119_122609.csv): Resultados CSV de los 64 trials
|
||||
**Fuentes de datos:** [`src/run_tuning.py`](https://github.com/seryus/MastersThesis/blob/main/src/run_tuning.py), [`src/raytune_ocr.py`](https://github.com/seryus/MastersThesis/blob/main/src/raytune_ocr.py), [`src/results/raytune_paddle_results_20260119_122609.csv`](https://github.com/seryus/MastersThesis/blob/main/src/results/raytune_paddle_results_20260119_122609.csv).
|
||||
|
||||
## Discusión y análisis de resultados
|
||||
|
||||
### Introducción
|
||||
|
||||
Esta sección presenta un análisis consolidado de los resultados obtenidos en las fases de benchmark comparativo y optimización de hiperparámetros. Se discuten las implicaciones prácticas, se evalúa el cumplimiento de los objetivos planteados y se identifican las limitaciones del estudio.
|
||||
Los resultados obtenidos en las secciones anteriores requieren un análisis que trascienda los números individuales para comprender su significado práctico. En esta sección se consolidan los hallazgos del benchmark comparativo y la optimización de hiperparámetros, evaluando hasta qué punto se han cumplido los objetivos planteados y qué limitaciones condicionan la generalización de las conclusiones.
|
||||
|
||||
### Resumen Consolidado de Resultados
|
||||
|
||||
@@ -1117,28 +1083,13 @@ La optimización de hiperparámetros puede ser insuficiente cuando:
|
||||
|
||||
4. **Requisitos de CER < 0.5%**: Puede requerir fine-tuning para alcanzar precisiones muy altas.
|
||||
|
||||
### Resumen del Capítulo
|
||||
### Síntesis del Capítulo
|
||||
|
||||
Este capítulo ha presentado el desarrollo completo de la contribución:
|
||||
A lo largo de este capítulo se ha desarrollado el proceso completo de evaluación y optimización de sistemas OCR para documentos académicos en español. El benchmark comparativo inicial permitió seleccionar PaddleOCR como motor base gracias a su combinación de rendimiento y configurabilidad. La posterior optimización con Ray Tune y Optuna, ejecutada sobre 64 trials con aceleración GPU, identificó los parámetros críticos para maximizar el rendimiento: `textline_orientation`, `use_doc_orientation_classify` y `text_det_thresh`.
|
||||
|
||||
**Planteamiento de la comparativa:**
|
||||
- Evaluación de EasyOCR, PaddleOCR y DocTR
|
||||
- Selección de PaddleOCR por su configurabilidad
|
||||
Los resultados cuantifican tanto los logros como las limitaciones del enfoque. El mejor trial individual alcanzó un CER de 0.79%, cumpliendo holgadamente el objetivo de CER < 2%. Sin embargo, la validación sobre el dataset completo de 45 páginas reveló un CER de 7.72%, lo que representa una mejora del 12.8% respecto al baseline (8.85%) pero evidencia sobreajuste al subconjunto de optimización. Esta observación es valiosa: indica que futuros trabajos deberían emplear subconjuntos de optimización más representativos o aplicar técnicas de regularización.
|
||||
|
||||
**Desarrollo de la comparativa:**
|
||||
- 64 trials de Ray Tune con Optuna usando GPU RTX 3060
|
||||
- Identificación de `textline_orientation`, `use_doc_orientation_classify` y `text_det_thresh` como críticos
|
||||
- CER mínimo alcanzado en trial individual: **0.79%**
|
||||
|
||||
**Discusión y análisis:**
|
||||
- Mejora del CER en dataset completo de 8.85% a 7.72% (reducción del **12.8%**)
|
||||
- Mejor trial: 0.79% CER (cumple objetivo CER < 2%)
|
||||
- Identificación de sobreajuste y recomendaciones prácticas
|
||||
|
||||
**Resultados principales**:
|
||||
- El objetivo de CER < 2% se cumple en el mejor trial (0.79%)
|
||||
- La generalización al dataset completo (7.72%) revela sobreajuste que requiere trabajo futuro
|
||||
- La optimización de hiperparámetros con GPU es viable y eficiente (82× más rápido que CPU)
|
||||
Desde el punto de vista práctico, la infraestructura dockerizada desarrollada y la aceleración GPU (82× más rápida que CPU) demuestran la viabilidad de esta metodología tanto para experimentación como para despliegue en producción.
|
||||
|
||||
**Fuentes de datos:**
|
||||
- [`src/run_tuning.py`](https://github.com/seryus/MastersThesis/blob/main/src/run_tuning.py): Script principal de optimización
|
||||
|
||||
Reference in New Issue
Block a user