Cross references
Some checks failed
build_docker / essential (push) Successful in 1s
build_docker / build_paddle_ocr (push) Successful in 5m6s
build_docker / build_raytune (push) Has been cancelled
build_docker / build_easyocr_gpu (push) Has been cancelled
build_docker / build_doctr (push) Has been cancelled
build_docker / build_doctr_gpu (push) Has been cancelled
build_docker / build_paddle_ocr_gpu (push) Has started running
build_docker / build_easyocr (push) Has been cancelled
Some checks failed
build_docker / essential (push) Successful in 1s
build_docker / build_paddle_ocr (push) Successful in 5m6s
build_docker / build_raytune (push) Has been cancelled
build_docker / build_easyocr_gpu (push) Has been cancelled
build_docker / build_doctr (push) Has been cancelled
build_docker / build_doctr_gpu (push) Has been cancelled
build_docker / build_paddle_ocr_gpu (push) Has started running
build_docker / build_easyocr (push) Has been cancelled
This commit is contained in:
@@ -1,11 +1,7 @@
|
||||
# Desarrollo específico de la contribución
|
||||
|
||||
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. Estas fases son tres: planteamiento y ejecución del benchmark comparativo, optimización de hiperparámetros mediante Ray Tune, y análisis e interpretación de los resultados.
|
||||
|
||||
## Planteamiento de la comparativa
|
||||
|
||||
### Introducción
|
||||
|
||||
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 los informes de métricas y en los CSV de resultados del repositorio, permitieron identificar el modelo más prometedor para la fase de optimización posterior.
|
||||
|
||||
### Identificación del Problema
|
||||
@@ -18,7 +14,7 @@ Los documentos académicos típicos incluyen texto corrido con índice, listas n
|
||||
|
||||
Se seleccionaron tres soluciones OCR de código abierto representativas del estado del arte:
|
||||
|
||||
**Tabla 20.** *Soluciones OCR evaluadas en el benchmark comparativo.*
|
||||
**Tabla 20.** *Soluciones OCR del benchmark.*
|
||||
|
||||
| Solución | Desarrollador | Versión | Justificación de selección |
|
||||
|----------|---------------|---------|----------------------------|
|
||||
@@ -205,20 +201,16 @@ Esta riqueza de configuración permite explorar sistemáticamente el espacio de
|
||||
|
||||
2. **Único tipo de documento**: Documentos académicos de UNIR únicamente. Otros tipos de documentos (facturas, formularios, contratos) podrían presentar resultados diferentes.
|
||||
|
||||
3. **Ground truth automático**: El texto de referencia se extrajo programáticamente del PDF, lo cual puede introducir errores en el orden de lectura cuando hay secciones con encabezados y saltos de línea.
|
||||
|
||||
4. **Referencia CPU separada**: Los tiempos en CPU se midieron en un experimento independiente y solo se usan como comparación de rendimiento frente a GPU.
|
||||
3. **Referencia CPU separada**: Los tiempos en CPU se midieron en un experimento independiente y solo se usan como comparación de rendimiento frente a GPU.
|
||||
|
||||
### Síntesis del Benchmark
|
||||
|
||||
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 competitivo, 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 el orden de lectura cuando hay secciones con encabezados y saltos de línea. Estas limitaciones se tendrán en cuenta al interpretar los resultados de la fase de optimización.
|
||||
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 competitivo, alta configurabilidad del pipeline y documentación técnica completa. Estas limitaciones se tendrán en cuenta al interpretar los resultados de la fase de optimización.
|
||||
|
||||
**Fuente:** [`docs/metrics/metrics.md`](https://seryus.ddns.net/unir/MastersThesis/src/branch/main/docs/metrics/metrics.md), [`src/results/*.csv`](https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/*.csv), documentación oficial de PaddleOCR.
|
||||
|
||||
## Desarrollo de la comparativa: Optimización de hiperparámetros
|
||||
|
||||
### Introducción
|
||||
|
||||
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://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/run_tuning.py) con apoyo de la librería [`src/raytune_ocr.py`](https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/raytune_ocr.py), almacenándose los resultados en [`src/results`](https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results). 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
|
||||
@@ -538,7 +530,7 @@ La clase `ImageTextDataset` gestiona la carga de pares imagen-texto desde la est
|
||||
|
||||
El espacio de búsqueda se definió considerando los hiperparámetros más relevantes identificados en la documentación de PaddleOCR, utilizando `tune.choice()` para parámetros booleanos y `tune.uniform()` para umbrales continuos. La implementación está disponible en [`src/raytune/raytune_ocr.py`](https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/raytune/raytune_ocr.py) (ver Anexo A).
|
||||
|
||||
**Tabla 30.** *Descripción detallada del espacio de búsqueda.*
|
||||
**Tabla 30.** *Espacio de búsqueda: parámetros.*
|
||||
|
||||
| Parámetro | Tipo | Rango | Descripción |
|
||||
|-----------|------|-------|-------------|
|
||||
@@ -694,7 +686,7 @@ Configuración óptima:
|
||||
|
||||
#### Análisis de Correlación
|
||||
|
||||
Se calculó la correlación de Pearson entre los parámetros de configuración (codificados como 0/1 en el caso de booleanos) y las métricas de error:
|
||||
Se calculó la correlación de Pearson entre los parámetros de configuración (codificados como 0/1 en el caso de booleanos) y las métricas de error. Para interpretar la magnitud de las correlaciones se siguieron criterios habituales en investigación cuantitativa:
|
||||
|
||||
**Tabla 36.** *Correlación de parámetros con CER.*
|
||||
|
||||
@@ -831,7 +823,7 @@ La configuración óptima identificada se evaluó sobre el dataset completo de 4
|
||||
|
||||
**Fuente:** [`docs/metrics/metrics_paddle.md`](https://seryus.ddns.net/unir/MastersThesis/src/branch/main/docs/metrics/metrics_paddle.md).
|
||||
|
||||
> **Nota sobre generalización:** El mejor trial individual (5 páginas) alcanzó un CER de 0.79%, cumpliendo el objetivo de CER < 2%. Sin embargo, al aplicar la configuración al dataset completo de 45 páginas, el CER aumentó a 7.72%, evidenciando sobreajuste al subconjunto de entrenamiento. Esta diferencia es un hallazgo importante que se discute en la sección de análisis.
|
||||
> **Nota sobre generalización:** El contraste entre el mejor trial y la validación en el dataset completo evidencia sobreajuste al subconjunto de entrenamiento. Esta diferencia se analiza en la sección de resultados consolidados.
|
||||
|
||||
#### Métricas de Mejora
|
||||
|
||||
@@ -848,11 +840,11 @@ La configuración óptima identificada se evaluó sobre el dataset completo de 4
|
||||
|
||||
**Fuente:** [`docs/metrics/metrics_paddle.md`](https://seryus.ddns.net/unir/MastersThesis/src/branch/main/docs/metrics/metrics_paddle.md).
|
||||
|
||||
**Figura 18.** *Reducción de errores: baseline vs optimizado (45 páginas).*
|
||||
**Figura 18.** *Reducción de errores (baseline vs optimizado).*
|
||||
|
||||
```mermaid
|
||||
---
|
||||
title: "Reducción de errores: Baseline vs Optimizado (45 páginas)"
|
||||
title: "Reducción de errores (baseline vs optimizado)"
|
||||
config:
|
||||
theme: base
|
||||
themeVariables:
|
||||
@@ -901,14 +893,12 @@ Observaciones:
|
||||
|
||||
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. Al activarlos se reduce el CER medio de 4.73% a 1.74%. En cuanto a umbrales, valores bajos de `text_det_thresh` (aprox. 0.05) benefician el rendimiento, mientras que `use_doc_unwarping` resulta innecesario para PDFs digitales.
|
||||
|
||||
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.
|
||||
La optimización logró mejoras claras frente al baseline en el dataset completo, aunque la generalización quedó limitada por el tamaño del subconjunto de ajuste.
|
||||
|
||||
**Fuente:** [`src/run_tuning.py`](https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/run_tuning.py), [`src/raytune_ocr.py`](https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/raytune_ocr.py), [`src/results/raytune_paddle_results_20260119_122609.csv`](https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/raytune_paddle_results_20260119_122609.csv).
|
||||
|
||||
## Discusión y análisis de resultados
|
||||
|
||||
### Introducción
|
||||
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user