Make template readable

This commit is contained in:
2025-12-15 23:03:36 +01:00
parent 2fc91e2a64
commit 723b86f33a
29 changed files with 7814 additions and 169 deletions

View File

@@ -1,8 +1,8 @@
# Capítulo 4: Desarrollo Específico de la Contribución
# 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 (4.1), desarrollo de la comparativa (4.2), y discusión y análisis de resultados (4.3).
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.
## 4.1 Planteamiento de la Comparativa: Soluciones OCR
## Planteamiento de la comparativa
### 4.1.1 Introducción
@@ -14,6 +14,8 @@ Esta sección presenta los resultados del estudio comparativo realizado entre tr
Se utilizó el documento "Instrucciones para la redacción y elaboración del TFE" del Máster Universitario en Inteligencia Artificial de UNIR, ubicado en la carpeta `instructions/`.
**Tabla 3.** *Características del dataset de evaluación.*
| Característica | Valor |
|----------------|-------|
| Número de páginas evaluadas | 5 (páginas 1-5 en benchmark inicial) |
@@ -21,6 +23,8 @@ Se utilizó el documento "Instrucciones para la redacción y elaboración del TF
| Idioma | Español |
| Resolución de conversión | 300 DPI |
*Fuente: Elaboración propia.*
#### Configuración de los Modelos
Según el código en `ocr_benchmark_notebook.ipynb`:
@@ -63,6 +67,8 @@ def evaluate_text(reference, prediction):
Del archivo `results/ai_ocr_benchmark_finetune_results_20251206_113206.csv`, se obtienen los siguientes resultados de PaddleOCR para las páginas 5-9 del documento:
**Tabla 4.** *Resultados de PaddleOCR por página (benchmark inicial).*
| Página | WER | CER |
|--------|-----|-----|
| 5 | 12.16% | 6.33% |
@@ -71,6 +77,8 @@ Del archivo `results/ai_ocr_benchmark_finetune_results_20251206_113206.csv`, se
| 8 | 8.13% | 1.54% |
| 9 | 10.61% | 5.58% |
*Fuente: `results/ai_ocr_benchmark_finetune_results_20251206_113206.csv`.*
**Promedio PaddleOCR (páginas 5-9):**
- CER medio: ~5.22%
- WER medio: ~10.95%
@@ -79,12 +87,16 @@ Del archivo `results/ai_ocr_benchmark_finetune_results_20251206_113206.csv`, se
Según la documentación del notebook `ocr_benchmark_notebook.ipynb`, los tres modelos evaluados representan diferentes paradigmas de OCR:
**Tabla 5.** *Comparativa de arquitecturas OCR evaluadas.*
| Modelo | Tipo | Componentes | Fortalezas Clave |
|--------|------|-------------|------------------|
| **EasyOCR** | End-to-end (det + rec) | DB + CRNN/Transformer | Ligero, fácil de usar, multilingüe |
| **PaddleOCR (PP-OCR)** | End-to-end (det + rec + cls) | DB + SRN/CRNN | Soporte multilingüe robusto, pipeline configurable |
| **DocTR** | End-to-end (det + rec) | DB/LinkNet + CRNN/SAR/VitSTR | Orientado a investigación, API limpia |
*Fuente: Documentación oficial de cada herramienta (JaidedAI, 2020; PaddlePaddle, 2024; Mindee, 2021).*
#### Ejemplo de Salida OCR
Del archivo CSV, un ejemplo de predicción de PaddleOCR para la página 8:
@@ -135,7 +147,7 @@ Esta sección ha presentado:
- `results/ai_ocr_benchmark_finetune_results_20251206_113206.csv`: Resultados numéricos
- Documentación oficial de PaddleOCR
## 4.2 Desarrollo de la Comparativa: Optimización de Hiperparámetros
## Desarrollo de la comparativa: Optimización de hiperparámetros
### 4.2.1 Introducción
@@ -147,6 +159,8 @@ Esta sección describe el proceso de optimización de hiperparámetros de Paddle
Según los outputs del notebook:
**Tabla 6.** *Entorno de ejecución del experimento.*
| Componente | Versión/Especificación |
|------------|------------------------|
| Python | 3.11.9 |
@@ -155,6 +169,8 @@ Según los outputs del notebook:
| Ray | 2.52.1 |
| GPU | No disponible (CPU only) |
*Fuente: Outputs del notebook `src/paddle_ocr_fine_tune_unir_raytune.ipynb`.*
#### Dataset
Se utilizó un dataset estructurado en `src/dataset/` creado mediante el notebook `src/prepare_dataset.ipynb`:
@@ -219,6 +235,8 @@ tuner = tune.Tuner(
Del archivo CSV de resultados (`raytune_paddle_subproc_results_20251207_192320.csv`):
**Tabla 7.** *Estadísticas descriptivas de los 64 trials de Ray Tune.*
| Estadística | CER | WER | Tiempo (s) | Tiempo/Página (s) |
|-------------|-----|-----|------------|-------------------|
| **count** | 64 | 64 | 64 | 64 |
@@ -230,6 +248,8 @@ Del archivo CSV de resultados (`raytune_paddle_subproc_results_20251207_192320.c
| **75%** | 4.03% | 13.20% | 350.14 | 69.93 |
| **max** | 51.61% | 59.45% | 368.57 | 73.63 |
*Fuente: `src/raytune_paddle_subproc_results_20251207_192320.csv`.*
#### Mejor Configuración Encontrada
Según el análisis del notebook:
@@ -276,13 +296,17 @@ Correlación de Pearson entre parámetros y métricas de error (del notebook):
Según el análisis del notebook, este parámetro booleano tiene el mayor impacto:
**Tabla 8.** *Impacto del parámetro textline_orientation en las métricas de error.*
| textline_orientation | CER Medio | WER Medio |
|---------------------|-----------|-----------|
| True | ~3.76% | ~12.73% |
| False | ~12.40% | ~21.71% |
**Interpretación del notebook**:
> "7x better CER with textline_orientation=True. And the variance is much tighter — more reliable results. For Spanish business documents with mixed layouts (tables, headers, addresses), orientation classification helps PaddleOCR correctly order text lines."
*Fuente: Análisis del notebook `src/paddle_ocr_fine_tune_unir_raytune.ipynb`.*
**Interpretación**:
El CER medio es ~3.3x menor con `textline_orientation=True` (3.76% vs 12.40%). Además, la varianza es mucho menor, lo que indica resultados más consistentes. Para documentos en español con layouts mixtos (tablas, encabezados, direcciones), la clasificación de orientación ayuda a PaddleOCR a ordenar correctamente las líneas de texto.
#### Análisis de Fallos
@@ -301,18 +325,26 @@ Ejemplo de trial con fallo catastrófico:
Del análisis final del notebook ejecutando sobre las 24 páginas:
**Tabla 9.** *Comparación baseline vs configuración optimizada (24 páginas).*
| Modelo | CER | WER |
|--------|-----|-----|
| PaddleOCR (Baseline) | 7.78% | 14.94% |
| PaddleOCR-HyperAdjust | 1.49% | 7.62% |
*Fuente: Ejecución final en notebook `src/paddle_ocr_fine_tune_unir_raytune.ipynb`.*
#### Métricas de Mejora
**Tabla 10.** *Análisis de la mejora obtenida.*
| Métrica | Baseline | Optimizado | Mejora Absoluta | Reducción Error |
|---------|----------|------------|-----------------|-----------------|
| CER | 7.78% | 1.49% | -6.29 pp | 80.9% |
| WER | 14.94% | 7.62% | -7.32 pp | 49.0% |
*Fuente: Elaboración propia a partir de los resultados experimentales.*
#### Interpretación (del notebook)
> "La optimización de hiperparámetros mejoró la precisión de caracteres de 92.2% a 98.5%, una ganancia de 6.3 puntos porcentuales. Aunque el baseline ya ofrecía resultados aceptables, la configuración optimizada reduce los errores residuales en un 80.9%."
@@ -348,7 +380,7 @@ Esta sección ha presentado:
- `src/raytune_paddle_subproc_results_20251207_192320.csv`: Resultados de 64 trials
- `src/paddle_ocr_tuning.py`: Script de evaluación
## 4.3 Discusión y Análisis de Resultados
## Discusión y análisis de resultados
### 4.3.1 Introducción