Chapter numbering fix

This commit is contained in:
2025-12-15 23:28:21 +01:00
parent 41a85cf9fc
commit 5f81eaed04
7 changed files with 198 additions and 84 deletions

View File

@@ -1,14 +1,14 @@
# Desarrollo específico de la contribución
# 4. 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.
## Planteamiento de la comparativa
## 4.1. Planteamiento de la comparativa
### 4.1.1 Introducción
### 4.1.1. 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.
### 4.1.2 Configuración del Experimento
### 4.1.2. Configuración del Experimento
#### Dataset de Evaluación
@@ -61,7 +61,7 @@ def evaluate_text(reference, prediction):
return {'WER': wer(reference, prediction), 'CER': cer(reference, prediction)}
```
### 4.1.3 Resultados del Benchmark
### 4.1.3. Resultados del Benchmark
#### Resultados de PaddleOCR (Datos del CSV)
@@ -107,7 +107,7 @@ Del archivo CSV, un ejemplo de predicción de PaddleOCR para la página 8:
- `titulacióon` en lugar de `titulación` (carácter duplicado)
- `Apa` en lugar de `APA` (capitalización)
### 4.1.4 Justificación de la Selección de PaddleOCR
### 4.1.4. Justificación de la Selección de PaddleOCR
#### Criterios de Selección
@@ -128,13 +128,13 @@ Basándose en los resultados obtenidos y la documentación del benchmark:
- Alta configurabilidad de hiperparámetros de inferencia
- Pipeline modular que permite experimentación
### 4.1.5 Limitaciones del Benchmark
### 4.1.5. Limitaciones del Benchmark
1. **Tamaño reducido**: Solo 5 páginas evaluadas en el benchmark comparativo inicial
2. **Único tipo de documento**: Documentos académicos de UNIR únicamente
3. **Ground truth**: El texto de referencia se extrajo automáticamente del PDF, lo cual puede introducir errores en layouts complejos
### 4.1.6 Resumen de la Sección
### 4.1.6. Resumen de la Sección
Esta sección ha presentado:
@@ -147,13 +147,13 @@ Esta sección ha presentado:
- `results/ai_ocr_benchmark_finetune_results_20251206_113206.csv`: Resultados numéricos
- Documentación oficial de PaddleOCR
## Desarrollo de la comparativa: Optimización de hiperparámetros
## 4.2. Desarrollo de la comparativa: Optimización de hiperparámetros
### 4.2.1 Introducción
### 4.2.1. 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 el notebook `src/paddle_ocr_fine_tune_unir_raytune.ipynb` y los resultados se almacenaron en `src/raytune_paddle_subproc_results_20251207_192320.csv`.
### 4.2.2 Configuración del Experimento
### 4.2.2. Configuración del Experimento
#### Entorno de Ejecución
@@ -229,7 +229,7 @@ tuner = tune.Tuner(
- **Número de trials**: 64
- **Trials concurrentes**: 2
### 4.2.3 Resultados de la Optimización
### 4.2.3. Resultados de la Optimización
#### Estadísticas Descriptivas
@@ -308,6 +308,17 @@ Según el análisis del notebook, este parámetro booleano tiene el mayor impact
**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.
```mermaid
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#0098CD'}}}%%
xychart-beta
title "Impacto de textline_orientation en CER"
x-axis ["textline_orientation=False", "textline_orientation=True"]
y-axis "CER (%)" 0 --> 15
bar [12.40, 3.76]
```
*Figura 3. Comparación del CER medio según el valor del parámetro textline_orientation.*
#### Análisis de Fallos
Los trials con CER muy alto (>40%) se produjeron cuando:
@@ -319,7 +330,7 @@ Ejemplo de trial con fallo catastrófico:
- WER: 59.45%
- Configuración: `text_det_thresh=0.017`, `textline_orientation=True`
### 4.2.4 Comparación Baseline vs Optimizado
### 4.2.4. Comparación Baseline vs Optimizado
#### Resultados sobre Dataset Completo (24 páginas)
@@ -349,12 +360,24 @@ Del análisis final del notebook ejecutando sobre las 24 páginas:
> "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%."
```mermaid
%%{init: {'theme': 'base'}}%%
xychart-beta
title "Comparación Baseline vs Optimizado (24 páginas)"
x-axis ["CER", "WER"]
y-axis "Tasa de error (%)" 0 --> 16
bar "Baseline" [7.78, 14.94]
bar "Optimizado" [1.49, 7.62]
```
*Figura 4. Comparación de métricas de error entre configuración baseline y optimizada.*
**Impacto práctico**: En un documento de 10,000 caracteres:
- Baseline: ~778 caracteres con error
- Optimizado: ~149 caracteres con error
- Diferencia: ~629 caracteres menos con errores
### 4.2.5 Tiempo de Ejecución
### 4.2.5. Tiempo de Ejecución
| Métrica | Valor |
|---------|-------|
@@ -363,7 +386,7 @@ Del análisis final del notebook ejecutando sobre las 24 páginas:
| Tiempo medio por página | 69.42 segundos |
| Total páginas procesadas | 64 trials × 5 páginas = 320 evaluaciones |
### 4.2.6 Resumen de la Sección
### 4.2.6. Resumen de la Sección
Esta sección ha presentado:
@@ -380,13 +403,13 @@ 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
## Discusión y análisis de resultados
## 4.3. Discusión y análisis de resultados
### 4.3.1 Introducción
### 4.3.1. 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 y se evalúa el cumplimiento de los objetivos planteados.
### 4.3.2 Resumen de Resultados
### 4.3.2. Resumen de Resultados
#### Resultados del Benchmark Comparativo
@@ -423,7 +446,7 @@ Resultados del notebook `src/paddle_ocr_fine_tune_unir_raytune.ipynb`:
| PaddleOCR (Baseline) | 7.78% | 92.22% | 14.94% | 85.06% |
| PaddleOCR-HyperAdjust | 1.49% | 98.51% | 7.62% | 92.38% |
### 4.3.3 Análisis de Resultados
### 4.3.3. Análisis de Resultados
#### Mejora Obtenida
@@ -481,7 +504,7 @@ config_optimizada = {
}
```
### 4.3.4 Discusión
### 4.3.4. Discusión
#### Hallazgos Principales
@@ -519,7 +542,7 @@ La correlación negativa de `text_det_thresh` (-0.52) con el CER indica que:
| OE5: Validar configuración | Documentar mejora | CER 7.78% → 1.49% | ✓ |
| **Objetivo General** | CER < 2% | CER = 1.49% | ✓ |
### 4.3.5 Implicaciones Prácticas
### 4.3.5. Implicaciones Prácticas
#### Recomendaciones de Configuración
@@ -547,7 +570,7 @@ Esta metodología de optimización es aplicable cuando:
- El modelo preentrenado ya tiene soporte para el idioma objetivo
- Se busca mejorar rendimiento sin reentrenar
### 4.3.6 Resumen de la Sección
### 4.3.6. Resumen de la Sección
Esta sección ha presentado: