diff --git a/README.md b/README.md index d265448..093c835 100644 --- a/README.md +++ b/README.md @@ -70,23 +70,26 @@ PDF (académico UNIR) ``` MastersThesis/ -├── docs/ # Documentación de capítulos del TFM -│ ├── 00_resumen.md -│ ├── 01_introduccion.md -│ ├── 02_contexto_estado_arte.md -│ ├── 03_objetivos_metodologia.md -│ ├── 04_comparativa_soluciones.md -│ ├── 05_optimizacion_hiperparametros.md -│ ├── 06_resultados_discusion.md -│ └── 07_conclusiones_trabajo_futuro.md +├── docs/ # Capítulos del TFM (estructura UNIR) +│ ├── 00_resumen.md # Resumen + Abstract +│ ├── 01_introduccion.md # Cap. 1: Introducción (1.1-1.3) +│ ├── 02_contexto_estado_arte.md # Cap. 2: Contexto y estado del arte (2.1-2.3) +│ ├── 03_objetivos_metodologia.md # Cap. 3: Objetivos y metodología (3.1-3.4) +│ ├── 04_desarrollo_especifico.md # Cap. 4: Desarrollo específico (4.1-4.3) +│ ├── 05_conclusiones_trabajo_futuro.md # Cap. 5: Conclusiones (5.1-5.2) +│ ├── 06_referencias_bibliograficas.md # Referencias bibliográficas (APA) +│ └── 07_anexo_a.md # Anexo A: Código fuente y datos ├── src/ │ ├── paddle_ocr_fine_tune_unir_raytune.ipynb # Experimento principal -│ ├── paddle_ocr_tuning.py # Script de evaluación +│ ├── paddle_ocr_tuning.py # Script de evaluación CLI │ ├── dataset_manager.py # Clase ImageTextDataset │ ├── prepare_dataset.ipynb # Preparación del dataset │ └── raytune_paddle_subproc_results_*.csv # Resultados de 64 trials ├── results/ # Resultados de benchmarks -├── instructions/ # Documento PDF de UNIR utilizado +├── instructions/ # Plantilla e instrucciones UNIR +│ ├── instrucciones.pdf +│ ├── plantilla_individual.pdf +│ └── plantilla_individual.htm ├── ocr_benchmark_notebook.ipynb # Benchmark comparativo inicial └── README.md ``` @@ -177,7 +180,7 @@ La optimización de hiperparámetros demostró ser una **alternativa efectiva** #### 3. Documentación y Presentación (Prioridad Alta) - [ ] **Completar memoria TFM**: Unificar los capítulos del directorio `docs/` en documento final siguiendo plantilla UNIR - [ ] **Crear presentación**: Preparar slides para la defensa del TFM -- [ ] **Añadir diagramas y figuras**: Incluir visualizaciones de los resultados de Ray Tune (distribución CER, correlaciones) +- [x] **Añadir diagramas y figuras**: ~~Incluir visualizaciones de los resultados de Ray Tune~~ (completado: 4 diagramas Mermaid añadidos) #### 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 diff --git a/claude.md b/claude.md index 4991e99..1f8671d 100644 --- a/claude.md +++ b/claude.md @@ -50,14 +50,15 @@ config_optimizada = { ``` MastersThesis/ -├── docs/ # Thesis chapters in Markdown (matches template structure) -│ ├── 00_resumen.md # Resumen + Abstract -│ ├── 01_introduccion.md # Chapter 1: Introducción -│ ├── 02_contexto_estado_arte.md # Chapter 2: Contexto y estado del arte -│ ├── 03_objetivos_metodologia.md # Chapter 3: Objetivos y metodología -│ ├── 04_desarrollo_especifico.md # Chapter 4: Desarrollo específico (4.1, 4.2, 4.3) -│ ├── 05_conclusiones_trabajo_futuro.md # Chapter 5: Conclusiones -│ └── 06_referencias_bibliograficas.md # Referencias bibliográficas +├── docs/ # Thesis chapters in Markdown (UNIR template structure) +│ ├── 00_resumen.md # Resumen + Abstract + Keywords +│ ├── 01_introduccion.md # 1. Introducción (1.1, 1.2, 1.3) +│ ├── 02_contexto_estado_arte.md # 2. Contexto y estado del arte (2.1, 2.2, 2.3) +│ ├── 03_objetivos_metodologia.md # 3. Objetivos y metodología (3.1, 3.2, 3.3, 3.4) +│ ├── 04_desarrollo_especifico.md # 4. Desarrollo específico (4.1, 4.2, 4.3) +│ ├── 05_conclusiones_trabajo_futuro.md # 5. Conclusiones (5.1, 5.2) +│ ├── 06_referencias_bibliograficas.md # Referencias bibliográficas (APA format) +│ └── 07_anexo_a.md # Anexo A: Código fuente y datos ├── src/ │ ├── paddle_ocr_fine_tune_unir_raytune.ipynb # Main experiment (64 trials) │ ├── paddle_ocr_tuning.py # CLI evaluation script @@ -66,8 +67,9 @@ MastersThesis/ │ └── raytune_paddle_subproc_results_20251207_192320.csv # 64 trial results ├── results/ # Benchmark results CSVs ├── instructions/ # UNIR instructions and template -│ ├── instrucciones.pdf # TFE writing guidelines -│ └── plantilla_individual.pdf # Word template (PDF version) +│ ├── instrucciones.pdf # TFE writing guidelines +│ ├── plantilla_individual.pdf # Word template (PDF version) +│ └── plantilla_individual.htm # Word template (HTML version, readable) ├── ocr_benchmark_notebook.ipynb # Initial OCR benchmark └── README.md ``` @@ -78,15 +80,15 @@ The template (`plantilla_individual.pdf`) requires **5 chapters**. The docs/ fil | Template Section | docs/ File | Notes | |-----------------|------------|-------| -| Resumen | `00_resumen.md` (Spanish part) | 150-300 words | -| Abstract | `00_resumen.md` (English part) | 150-300 words | +| Resumen | `00_resumen.md` (Spanish part) | 150-300 words + Palabras clave | +| Abstract | `00_resumen.md` (English part) | 150-300 words + Keywords | | 1. Introducción | `01_introduccion.md` | Subsections 1.1, 1.2, 1.3 | -| 2. Contexto y estado del arte | `02_contexto_estado_arte.md` | Subsections 2.1, 2.2, 2.3 | -| 3. Objetivos y metodología | `03_objetivos_metodologia.md` | Subsections 3.1, 3.2, 3.3 | -| 4. Desarrollo específico | `04_desarrollo_especifico.md` | Includes 4.1, 4.2, 4.3 | +| 2. Contexto y estado del arte | `02_contexto_estado_arte.md` | Subsections 2.1, 2.2, 2.3 + Mermaid diagrams | +| 3. Objetivos y metodología | `03_objetivos_metodologia.md` | Subsections 3.1, 3.2, 3.3, 3.4 + Mermaid diagrams | +| 4. Desarrollo específico | `04_desarrollo_especifico.md` | Subsections 4.1, 4.2, 4.3 + Mermaid charts | | 5. Conclusiones y trabajo futuro | `05_conclusiones_trabajo_futuro.md` | Subsections 5.1, 5.2 | | Referencias bibliográficas | `06_referencias_bibliograficas.md` | APA, alphabetical | -| Anexo A | (create from README) | Repository URL | +| Anexo A | `07_anexo_a.md` | Repository URL + structure | ## Important Data Files @@ -111,10 +113,14 @@ The template (`plantilla_individual.pdf`) requires **5 chapters**. The docs/ fil ## Pending Work +### Completed Tasks +- [x] **Structure docs/ to match UNIR template** - All chapters now follow exact numbering (1.1, 1.2, etc.) +- [x] **Add Mermaid diagrams** - 4 diagrams added (OCR pipeline, Ray Tune architecture, CER comparison charts) + ### Priority Tasks 1. **Validate on other document types** - Test optimal config on invoices, forms, contracts 2. **Expand dataset** - Current dataset has only 24 pages -3. **Complete unified thesis document** - Merge docs/ chapters into final UNIR format +3. **Complete unified thesis document** - Merge docs/ chapters into final UNIR Word format 4. **Create presentation slides** - For thesis defense ### Optional Extensions @@ -445,6 +451,26 @@ Fuente: American Psychological Association, 2020b. 8. **When in doubt, ask**: If the user requests data that doesn't exist, ask rather than inventing numbers +9. **DIAGRAMS MUST BE IN MERMAID FORMAT**: All diagrams, flowcharts, and visualizations in the documentation MUST use Mermaid syntax. This ensures: + - Version control friendly (text-based) + - Consistent styling across all chapters + - Easy to edit and maintain + - Renders properly in GitHub and most Markdown viewers + + **Supported Mermaid diagram types:** + - `flowchart` / `graph` - For pipelines, workflows, architectures + - `xychart-beta` - For bar charts, comparisons + - `sequenceDiagram` - For process interactions + - `classDiagram` - For class structures + - `stateDiagram` - For state machines + - `pie` - For proportional data + + **Example:** + ```mermaid + flowchart LR + A[Input] --> B[Process] --> C[Output] + ``` + ### Common Tasks - **Adding new experiments**: Update `src/paddle_ocr_fine_tune_unir_raytune.ipynb` diff --git a/docs/01_introduccion.md b/docs/01_introduccion.md index 3eaf9f5..3162430 100644 --- a/docs/01_introduccion.md +++ b/docs/01_introduccion.md @@ -1,8 +1,8 @@ -# Introducción +# 1. Introducción Este capítulo presenta la motivación del trabajo, identificando el problema a resolver y justificando su relevancia. Se plantea la pregunta de investigación central y se describe la estructura del documento. -## Motivación +## 1.1. Motivación El Reconocimiento Óptico de Caracteres (OCR) es una tecnología fundamental en la era de la digitalización documental. Su capacidad para convertir imágenes de texto en datos editables y procesables ha transformado sectores como la administración pública, el ámbito legal, la banca y la educación. Sin embargo, a pesar de los avances significativos impulsados por el aprendizaje profundo, la implementación práctica de sistemas OCR de alta precisión sigue presentando desafíos considerables. @@ -12,7 +12,7 @@ Los modelos OCR basados en redes neuronales profundas, como los empleados en Pad La presente investigación surge de una necesidad práctica: optimizar un sistema OCR para documentos académicos en español sin disponer de recursos GPU para realizar fine-tuning. Esta restricción, lejos de ser una limitación excepcional, representa la realidad de muchos entornos académicos y empresariales donde el acceso a infraestructura de cómputo avanzada es limitado. -## Planteamiento del trabajo +## 1.2. Planteamiento del trabajo El problema central que aborda este trabajo puede formularse de la siguiente manera: @@ -35,7 +35,7 @@ La relevancia de este problema radica en su aplicabilidad inmediata. Una metodol - Pequeñas y medianas empresas que automatizan flujos documentales - Desarrolladores que integran OCR en aplicaciones con restricciones de recursos -## Estructura del trabajo +## 1.3. Estructura del trabajo El presente documento se organiza en los siguientes capítulos: diff --git a/docs/02_contexto_estado_arte.md b/docs/02_contexto_estado_arte.md index 113e7cd..f968ee3 100644 --- a/docs/02_contexto_estado_arte.md +++ b/docs/02_contexto_estado_arte.md @@ -1,8 +1,8 @@ -# Contexto y estado del arte +# 2. Contexto y estado del arte Este capítulo presenta el marco teórico y tecnológico en el que se desarrolla el presente trabajo. Se revisan los fundamentos del Reconocimiento Óptico de Caracteres (OCR), la evolución de las técnicas basadas en aprendizaje profundo, las principales soluciones de código abierto disponibles y los trabajos previos relacionados con la optimización de sistemas OCR. -## Contexto del problema +## 2.1. Contexto del problema ### Definición y Evolución Histórica del OCR @@ -17,6 +17,34 @@ El Reconocimiento Óptico de Caracteres (OCR) es el proceso de conversión de im Los sistemas OCR modernos siguen típicamente un pipeline de dos etapas: +```mermaid +flowchart LR + subgraph Input + A["Imagen de
documento"] + end + + subgraph "Etapa 1: Detección" + B["Text Detection
(DB, EAST, CRAFT)"] + end + + subgraph "Etapa 2: Reconocimiento" + C["Text Recognition
(CRNN, SVTR, Transformer)"] + end + + subgraph Output + D["Texto
extraído"] + end + + A --> B + B -->|"Regiones de texto
(bounding boxes)"| C + C --> D + + style A fill:#e1f5fe + style D fill:#c8e6c9 +``` + +*Figura 1. Pipeline típico de un sistema OCR moderno con etapas de detección y reconocimiento.* + 1. **Detección de texto (Text Detection)**: Localización de regiones que contienen texto en la imagen. Las arquitecturas más utilizadas incluyen: - EAST (Efficient and Accurate Scene Text Detector) - CRAFT (Character Region Awareness for Text Detection) @@ -46,7 +74,7 @@ El español presenta características específicas que impactan el OCR: - **Longitud de palabras**: Palabras generalmente más largas que en inglés - **Puntuación**: Signos de interrogación y exclamación invertidos -## Estado del arte +## 2.2. Estado del arte ### Soluciones OCR de Código Abierto @@ -136,6 +164,40 @@ Los métodos de HPO incluyen: La combinación Ray Tune + Optuna permite búsquedas eficientes en espacios de alta dimensionalidad. +```mermaid +flowchart TD + subgraph "Ray Tune" + A["Espacio de
búsqueda"] + B["Scheduler
(gestión de trials)"] + C["Trial 1"] + D["Trial 2"] + E["Trial N"] + end + + subgraph "Optuna (TPE)" + F["Modelo probabilístico
de la función objetivo"] + G["Sugiere nueva
configuración"] + end + + subgraph "Evaluación" + H["Ejecuta modelo OCR
con config"] + I["Calcula métricas
(CER, WER)"] + end + + A --> B + B --> C & D & E + C & D & E --> H + H --> I + I -->|"Resultados"| F + F --> G + G -->|"Nueva config"| B + + style A fill:#fff3e0 + style I fill:#e8f5e9 +``` + +*Figura 2. Arquitectura de optimización de hiperparámetros con Ray Tune y Optuna.* + #### HPO en Sistemas OCR La aplicación de HPO a sistemas OCR ha sido explorada principalmente en el contexto de: @@ -164,7 +226,7 @@ Los trabajos previos en OCR para español se han centrado principalmente en: La optimización de hiperparámetros para documentos académicos en español representa una contribución original de este trabajo. -## Conclusiones +## 2.3. Conclusiones Este capítulo ha presentado: diff --git a/docs/03_objetivos_metodologia.md b/docs/03_objetivos_metodologia.md index 12d85eb..1816fa9 100644 --- a/docs/03_objetivos_metodologia.md +++ b/docs/03_objetivos_metodologia.md @@ -1,8 +1,8 @@ -# Objetivos concretos y metodología de trabajo +# 3. Objetivos concretos y metodología de trabajo Este capítulo establece los objetivos del trabajo siguiendo la metodología SMART (Doran, 1981) y describe la metodología experimental empleada para alcanzarlos. Se define un objetivo general y cinco objetivos específicos, todos ellos medibles y verificables. -## Objetivo general +## 3.1. Objetivo general > **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.** @@ -16,7 +16,7 @@ Este capítulo establece los objetivos del trabajo siguiendo la metodología SMA | **Relevante (R)** | El impacto es demostrable: mejora la extracción de texto en documentos académicos sin costes adicionales de infraestructura | | **Temporal (T)** | El plazo es un cuatrimestre, correspondiente al TFM | -## Objetivos específicos +## 3.2. Objetivos específicos ### OE1: Comparar soluciones OCR de código abierto > **Evaluar el rendimiento base de EasyOCR, PaddleOCR y DocTR en documentos académicos en español, utilizando CER y WER como métricas, para seleccionar el modelo más prometedor.** @@ -33,9 +33,9 @@ Este capítulo establece los objetivos del trabajo siguiendo la metodología SMA ### OE5: Validar la configuración optimizada > **Comparar el rendimiento de la configuración baseline versus la configuración optimizada sobre el dataset completo, documentando la mejora obtenida.** -## Metodología del trabajo +## 3.3. Metodología del trabajo -### 3.3.1 Visión General +### 3.3.1. Visión General @@ -71,7 +71,7 @@ flowchart TD ``` -### 3.3.2 Fase 1: Preparación del Dataset +### 3.3.2. Fase 1: Preparación del Dataset #### Fuente de Datos Se utilizaron documentos PDF académicos de UNIR (Universidad Internacional de La Rioja), específicamente las instrucciones para la elaboración del TFE del Máster en Inteligencia Artificial. @@ -124,7 +124,7 @@ class ImageTextDataset: # Retorna (PIL.Image, str) ``` -### 3.3.3 Fase 2: Benchmark Comparativo +### 3.3.3. Fase 2: Benchmark Comparativo #### Modelos Evaluados @@ -148,7 +148,7 @@ def evaluate_text(reference, prediction): } ``` -### 3.3.4 Fase 3: Espacio de Búsqueda +### 3.3.4. Fase 3: Espacio de Búsqueda #### Hiperparámetros Seleccionados @@ -190,7 +190,7 @@ tuner = tune.Tuner( ) ``` -### 3.3.5 Fase 4: Ejecución de Optimización +### 3.3.5. Fase 4: Ejecución de Optimización #### Arquitectura de Ejecución @@ -232,7 +232,7 @@ Y retorna métricas en formato JSON: } ``` -### 3.3.6 Fase 5: Validación +### 3.3.6. Fase 5: Validación #### Protocolo de Validación @@ -241,7 +241,7 @@ Y retorna métricas en formato JSON: 3. **Comparación**: Evaluación sobre las 24 páginas del dataset completo 4. **Métricas reportadas**: CER, WER, tiempo de procesamiento -### 3.3.7 Entorno de Ejecución +### 3.3.7. Entorno de Ejecución #### Hardware @@ -263,7 +263,7 @@ Y retorna métricas en formato JSON: | Ray | 2.52.1 | | Optuna | 4.6.0 | -### 3.3.8 Limitaciones Metodológicas +### 3.3.8. Limitaciones Metodológicas 1. **Tamaño del dataset**: El dataset contiene 24 páginas de un único tipo de documento. Resultados pueden no generalizar a otros formatos. @@ -273,7 +273,7 @@ Y retorna métricas en formato JSON: 4. **Parámetro fijo**: `text_det_unclip_ratio` quedó fijado en 0.0 durante todo el experimento por decisión de diseño inicial. -## Resumen del capítulo +## 3.4. Resumen del capítulo Este capítulo ha establecido: diff --git a/docs/04_desarrollo_especifico.md b/docs/04_desarrollo_especifico.md index bdbc92f..12039b8 100644 --- a/docs/04_desarrollo_especifico.md +++ b/docs/04_desarrollo_especifico.md @@ -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: diff --git a/docs/05_conclusiones_trabajo_futuro.md b/docs/05_conclusiones_trabajo_futuro.md index baffbaa..3b3b80d 100644 --- a/docs/05_conclusiones_trabajo_futuro.md +++ b/docs/05_conclusiones_trabajo_futuro.md @@ -1,10 +1,10 @@ -# Conclusiones y trabajo futuro +# 5. Conclusiones y trabajo futuro Este capítulo resume las principales conclusiones del trabajo, evalúa el grado de cumplimiento de los objetivos planteados y propone líneas de trabajo futuro que permitirían ampliar y profundizar los resultados obtenidos. -## Conclusiones +## 5.1. Conclusiones -### 5.1.1 Conclusiones Generales +### 5.1.1. Conclusiones Generales Este Trabajo Fin de Máster ha demostrado que es posible mejorar significativamente el rendimiento de sistemas OCR preentrenados mediante optimización sistemática de hiperparámetros, sin requerir fine-tuning ni recursos GPU dedicados. @@ -14,7 +14,7 @@ El objetivo principal del trabajo era alcanzar un CER inferior al 2% en document |---------|----------|-----------| | CER | < 2% | **1.49%** | -### 5.1.2 Conclusiones Específicas +### 5.1.2. Conclusiones Específicas **Respecto a OE1 (Comparativa de soluciones OCR)**: - Se evaluaron tres soluciones OCR de código abierto: EasyOCR, PaddleOCR (PP-OCRv5) y DocTR @@ -41,7 +41,7 @@ El objetivo principal del trabajo era alcanzar un CER inferior al 2% en document - La mejora obtenida fue del 80.9% en reducción del CER (7.78% → 1.49%) - La precisión de caracteres alcanzó el 98.51% -### 5.1.3 Hallazgos Clave +### 5.1.3. Hallazgos Clave 1. **Arquitectura sobre umbrales**: Un único parámetro booleano (`textline_orientation`) tiene más impacto que todos los umbrales continuos combinados. @@ -51,7 +51,7 @@ El objetivo principal del trabajo era alcanzar un CER inferior al 2% en document 4. **Optimización sin fine-tuning**: Se puede mejorar significativamente el rendimiento de modelos preentrenados mediante ajuste de hiperparámetros de inferencia. -### 5.1.4 Contribuciones del Trabajo +### 5.1.4. Contribuciones del Trabajo 1. **Metodología reproducible**: Se documenta un proceso completo de optimización de hiperparámetros OCR con Ray Tune + Optuna. @@ -61,7 +61,7 @@ El objetivo principal del trabajo era alcanzar un CER inferior al 2% en document 4. **Código fuente**: Todo el código está disponible en el repositorio GitHub para reproducción y extensión. -### 5.1.5 Limitaciones del Trabajo +### 5.1.5. Limitaciones del Trabajo 1. **Tipo de documento único**: Los experimentos se realizaron únicamente sobre documentos académicos de UNIR. La generalización a otros tipos de documentos requiere validación adicional. @@ -73,9 +73,9 @@ El objetivo principal del trabajo era alcanzar un CER inferior al 2% en document 5. **Parámetro no explorado**: `text_det_unclip_ratio` permaneció fijo en 0.0 durante todo el experimento. -## Líneas de trabajo futuro +## 5.2. Líneas de trabajo futuro -### 5.2.1 Extensiones Inmediatas +### 5.2.1. Extensiones Inmediatas 1. **Validación cruzada**: Evaluar la configuración óptima en otros tipos de documentos en español (facturas, formularios, textos manuscritos). @@ -85,7 +85,7 @@ El objetivo principal del trabajo era alcanzar un CER inferior al 2% en document 4. **Evaluación con GPU**: Medir tiempos de inferencia con aceleración GPU. -### 5.2.2 Líneas de Investigación +### 5.2.2. Líneas de Investigación 1. **Transfer learning de hiperparámetros**: Investigar si las configuraciones óptimas para un tipo de documento transfieren a otros dominios. @@ -95,7 +95,7 @@ El objetivo principal del trabajo era alcanzar un CER inferior al 2% en document 4. **Comparación con fine-tuning**: Cuantificar la brecha de rendimiento entre optimización de hiperparámetros y fine-tuning real. -### 5.2.3 Aplicaciones Prácticas +### 5.2.3. Aplicaciones Prácticas 1. **Herramienta de configuración automática**: Desarrollar una herramienta que determine automáticamente la configuración óptima para un nuevo tipo de documento. @@ -103,7 +103,7 @@ El objetivo principal del trabajo era alcanzar un CER inferior al 2% en document 3. **Benchmark público**: Publicar un benchmark de OCR para documentos en español que facilite la comparación de soluciones. -### 5.2.4 Reflexión Final +### 5.2.4. Reflexión Final Este trabajo demuestra que, en un contexto de recursos limitados donde el fine-tuning de modelos de deep learning no es viable, la optimización de hiperparámetros representa una alternativa práctica y efectiva para mejorar sistemas OCR.