diff --git a/README.md b/README.md index 3de47c8..ac8da34 100644 --- a/README.md +++ b/README.md @@ -156,33 +156,96 @@ python src/paddle_ocr_tuning.py \ ## Fuentes de Datos - **Dataset**: Instrucciones para la elaboración del TFE (UNIR), 24 páginas -- **Resultados benchmark**: `results/ai_ocr_benchmark_finetune_results_20251206_113206.csv` -- **Resultados Ray Tune**: `src/raytune_paddle_subproc_results_20251207_192320.csv` +- **Resultados Ray Tune (PRINCIPAL)**: `src/raytune_paddle_subproc_results_20251207_192320.csv` - 64 trials de optimización con todas las métricas y configuraciones --- ## Generación del Documento TFM -### Generar documento Word desde Markdown +### Prerrequisitos ```bash -# 1. Generar figuras desde diagramas Mermaid +# Instalar dependencias de Python +pip install beautifulsoup4 + +# Instalar mermaid-cli para generación de figuras +npm install @mermaid-js/mermaid-cli +``` + +### Flujo de Generación del Documento + +El documento TFM se genera en **3 pasos** que deben ejecutarse en orden: + +``` +┌─────────────────────────────────────────────────────────────────────┐ +│ PASO 1: generate_mermaid_figures.py │ +│ ────────────────────────────────────────────────────────────────── │ +│ • Lee diagramas Mermaid de docs/*.md │ +│ • Genera thesis_output/figures/figura_*.png │ +│ • Crea figures_manifest.json con títulos │ +└─────────────────────────────────────────────────────────────────────┘ + ↓ +┌─────────────────────────────────────────────────────────────────────┐ +│ PASO 2: apply_content.py │ +│ ────────────────────────────────────────────────────────────────── │ +│ • Lee plantilla desde instructions/plantilla_individual.htm │ +│ • Inserta contenido de docs/*.md en cada capítulo │ +│ • Genera tablas con formato APA y figuras con referencias │ +│ • Guarda en thesis_output/plantilla_individual.htm │ +└─────────────────────────────────────────────────────────────────────┘ + ↓ +┌─────────────────────────────────────────────────────────────────────┐ +│ PASO 3: Abrir en Microsoft Word │ +│ ────────────────────────────────────────────────────────────────── │ +│ • Abrir thesis_output/plantilla_individual.htm │ +│ • Ctrl+A → F9 para actualizar índices (contenidos/figuras/tablas) │ +│ • Guardar como TFM_Sergio_Jimenez.docx │ +└─────────────────────────────────────────────────────────────────────┘ +``` + +### Comandos de Generación + +```bash +# Desde el directorio raíz del proyecto: + +# PASO 1: Generar figuras PNG desde diagramas Mermaid python3 generate_mermaid_figures.py +# Output: thesis_output/figures/figura_1.png ... figura_8.png -# 2. Aplicar contenido de docs/ a la plantilla UNIR +# PASO 2: Aplicar contenido de docs/ a la plantilla UNIR python3 apply_content.py +# Output: thesis_output/plantilla_individual.htm -# 3. Abrir en Word y actualizar índices +# PASO 3: Abrir en Word y finalizar documento # - Abrir thesis_output/plantilla_individual.htm en Microsoft Word -# - Presionar Ctrl+A luego F9 para actualizar todos los índices +# - Ctrl+A → F9 para actualizar todos los índices +# - IMPORTANTE: Ajustar manualmente el tamaño de las imágenes para legibilidad +# (seleccionar imagen → clic derecho → Tamaño y posición → ajustar al ancho de página) # - Guardar como .docx ``` -**Contenido generado automáticamente:** -- 30 tablas con formato `Piedefoto-tabla` (Tabla X. *Título* + Fuente) -- 7 figuras desde Mermaid con formato `Piedefoto-tabla` (Figura X. *Título* + Fuente) -- 25 referencias en formato APA con sangría francesa -- Resumen y Abstract con palabras clave reales +### Notas Importantes para Edición en Word + +1. **Ajuste de imágenes**: Las figuras Mermaid pueden requerir ajuste manual de tamaño para ser legibles. Seleccionar cada imagen y ajustar al ancho de texto (~16cm). + +2. **Actualización de índices**: Después de cualquier cambio, usar Ctrl+A → F9 para regenerar índices. + +3. **Formato de código**: Los bloques de código usan Consolas 9pt. Verificar que no se corten líneas largas. + +### Archivos de Entrada y Salida + +| Script | Entrada | Salida | +|--------|---------|--------| +| `generate_mermaid_figures.py` | `docs/*.md` (bloques ```mermaid```) | `thesis_output/figures/figura_*.png`, `figures_manifest.json` | +| `apply_content.py` | `instructions/plantilla_individual.htm`, `docs/*.md`, `thesis_output/figures/*.png` | `thesis_output/plantilla_individual.htm` | + +### Contenido Generado Automáticamente + +- **30 tablas** con formato APA (Tabla X. *Título* + Fuente: ...) +- **8 figuras** desde Mermaid (Figura X. *Título* + Fuente: Elaboración propia) +- **25 referencias** en formato APA con sangría francesa +- **Resumen/Abstract** con palabras clave +- **Índices** actualizables (contenidos, figuras, tablas) - Eliminación automática de textos de instrucción de la plantilla --- diff --git a/claude.md b/claude.md index 4d92827..4ab0fab 100644 --- a/claude.md +++ b/claude.md @@ -100,8 +100,7 @@ The template (`plantilla_individual.pdf`) requires **5 chapters**. The docs/ fil ## Important Data Files ### Results CSV Files -- `src/raytune_paddle_subproc_results_20251207_192320.csv` - 64 Ray Tune trials with configs and metrics -- `results/ai_ocr_benchmark_finetune_results_20251206_113206.csv` - Per-page OCR benchmark results +- `src/raytune_paddle_subproc_results_20251207_192320.csv` - 64 Ray Tune trials with configs and metrics (PRIMARY DATA SOURCE) ### Key Notebooks - `src/paddle_ocr_fine_tune_unir_raytune.ipynb` - Main Ray Tune experiment @@ -454,7 +453,6 @@ Fuente: American Psychological Association, 2020b. | Data Type | Source File | |-----------|-------------| | Ray Tune 64 trials | `src/raytune_paddle_subproc_results_20251207_192320.csv` | -| Per-page benchmark | `results/ai_ocr_benchmark_finetune_results_20251206_113206.csv` | | Experiment code | `src/paddle_ocr_fine_tune_unir_raytune.ipynb` | | Final comparison | Output cells in the notebook (baseline vs optimized) | @@ -463,11 +461,11 @@ Fuente: American Psychological Association, 2020b. **WRONG:** "EasyOCR achieved 8.5% CER while PaddleOCR achieved 5.2% CER" (We don't have this comparison data in our results files) -**RIGHT:** "PaddleOCR with baseline configuration achieved CER between 1.54% and 6.40% across pages 5-9 (source: `results/ai_ocr_benchmark_finetune_results_20251206_113206.csv`)" +**RIGHT:** "The optimization reduced CER from 7.78% to 1.49%, a reduction of 80.9% (source: final comparison in `paddle_ocr_fine_tune_unir_raytune.ipynb`)" **WRONG:** "The optimization improved results by approximately 80%" -**RIGHT:** "The optimization reduced CER from 7.78% to 1.49%, a reduction of 80.9% (source: final comparison in `paddle_ocr_fine_tune_unir_raytune.ipynb`)" +**RIGHT:** "From the 64 trials in `raytune_paddle_subproc_results_20251207_192320.csv`, minimum CER achieved was 1.15%" ### When Working on Documentation diff --git a/docs/04_desarrollo_especifico.md b/docs/04_desarrollo_especifico.md index bdc08ff..bc2fbd3 100644 --- a/docs/04_desarrollo_especifico.md +++ b/docs/04_desarrollo_especifico.md @@ -63,25 +63,14 @@ def evaluate_text(reference, prediction): ### Resultados del Benchmark -#### Resultados de PaddleOCR (Datos del CSV) +#### Resultados de PaddleOCR (Configuración Baseline) -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: +Durante el benchmark inicial se evaluó PaddleOCR con configuración por defecto en un subconjunto del dataset. Los resultados preliminares mostraron variabilidad significativa entre páginas, con CER entre 1.54% y 6.40% dependiendo de la complejidad del layout. -**Tabla 4.** *Resultados de PaddleOCR por página (benchmark inicial).* - -| Página | WER | CER | -|--------|-----|-----| -| 5 | 12.16% | 6.33% | -| 6 | 12.81% | 6.40% | -| 7 | 11.06% | 6.24% | -| 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% +**Observaciones del benchmark inicial:** +- Las páginas con tablas y layouts complejos presentaron mayor error +- La página 8 (texto corrido) obtuvo el mejor resultado (CER ~1.5%) +- El promedio general se situó en CER ~5-6% #### Comparativa de Modelos @@ -144,7 +133,6 @@ Esta sección ha presentado: **Fuentes de datos utilizadas:** - `ocr_benchmark_notebook.ipynb`: Código del benchmark -- `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 @@ -413,16 +401,7 @@ Esta sección presenta un análisis consolidado de los resultados obtenidos en l #### Resultados del Benchmark Comparativo -Del archivo `results/ai_ocr_benchmark_finetune_results_20251206_113206.csv`, PaddleOCR con configuración inicial (`use_textline_orientation=True`) obtuvo los siguientes resultados en las páginas 5-9: - -| Página | WER | CER | -|--------|-----|-----| -| 5 | 12.16% | 6.33% | -| 6 | 12.81% | 6.40% | -| 7 | 11.06% | 6.24% | -| 8 | 8.13% | 1.54% | -| 9 | 10.61% | 5.58% | -| **Promedio** | **10.95%** | **5.22%** | +En el benchmark inicial, PaddleOCR con configuración por defecto mostró variabilidad en el rendimiento según la complejidad de cada página, con CER promedio en torno al 5-6% y variaciones significativas entre páginas con layouts simples (~1.5%) y complejos (~6.4%). #### Resultados de la Optimización con Ray Tune @@ -583,6 +562,5 @@ Esta sección ha presentado: **Resultado principal**: Se logró reducir el CER del 7.78% al 1.49% (mejora del 80.9%) mediante optimización de hiperparámetros, cumpliendo el objetivo de alcanzar CER < 2%. **Fuentes de datos:** -- `results/ai_ocr_benchmark_finetune_results_20251206_113206.csv` -- `src/raytune_paddle_subproc_results_20251207_192320.csv` -- `src/paddle_ocr_fine_tune_unir_raytune.ipynb` +- `src/raytune_paddle_subproc_results_20251207_192320.csv`: Resultados de 64 trials de optimización +- `src/paddle_ocr_fine_tune_unir_raytune.ipynb`: Notebook principal del experimento diff --git a/docs/07_anexo_a.md b/docs/07_anexo_a.md index cb45c8f..4ccb8b6 100644 --- a/docs/07_anexo_a.md +++ b/docs/07_anexo_a.md @@ -22,23 +22,26 @@ title: "Estructura del repositorio del proyecto" flowchart LR root["MastersThesis/"] --> docs["docs/"] root --> src["src/"] - root --> results["results/"] root --> instructions["instructions/"] - root --> readme["README.md"] + root --> scripts["Scripts generación"] src --> nb1["paddle_ocr_fine_tune_unir_raytune.ipynb"] src --> py1["paddle_ocr_tuning.py"] - src --> py2["dataset_manager.py"] - src --> nb2["prepare_dataset.ipynb"] - src --> csv["raytune_results_*.csv"] + src --> csv["raytune_paddle_subproc_results_*.csv"] + + scripts --> gen1["generate_mermaid_figures.py"] + scripts --> gen2["apply_content.py"] ``` **Descripción de componentes:** -- **docs/**: Capítulos de la tesis en Markdown -- **src/**: Código fuente (notebooks y scripts) -- **results/**: Resultados de benchmarks en CSV -- **instructions/**: Instrucciones y plantilla UNIR +- **docs/**: Capítulos de la tesis en Markdown (estructura UNIR) +- **src/**: Código fuente de experimentación + - `paddle_ocr_fine_tune_unir_raytune.ipynb`: Notebook principal con 64 trials Ray Tune + - `paddle_ocr_tuning.py`: Script CLI para evaluación OCR + - `raytune_paddle_subproc_results_20251207_192320.csv`: Resultados de optimización +- **instructions/**: Plantilla e instrucciones UNIR +- **Scripts de generación**: `generate_mermaid_figures.py` y `apply_content.py` para generar el documento TFM ## A.3 Requisitos de Software diff --git a/thesis_output/figures/figura_8.png b/thesis_output/figures/figura_8.png index 4b4d31f..2583474 100644 Binary files a/thesis_output/figures/figura_8.png and b/thesis_output/figures/figura_8.png differ diff --git a/thesis_output/plantilla_individual.htm b/thesis_output/plantilla_individual.htm index b936201..19c2cc2 100644 Binary files a/thesis_output/plantilla_individual.htm and b/thesis_output/plantilla_individual.htm differ