From 7a3a47923b59730c001b53ccfa1ac69f45ef0bdd Mon Sep 17 00:00:00 2001 From: sergio Date: Tue, 20 Jan 2026 12:01:05 +0100 Subject: [PATCH] adjust --- apply_content.py | 10 ++++---- thesis_output/plantilla_individual.htm | 34 +++++++++++++------------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/apply_content.py b/apply_content.py index 0e23226..5a58a5c 100644 --- a/apply_content.py +++ b/apply_content.py @@ -121,13 +121,13 @@ def parse_md_to_html_blocks(md_content): mermaid_lines.append(lines[i]) i += 1 - # Try to extract title from mermaid content (YAML format: title: "...") + # Try to extract title from mermaid content (YAML format) mermaid_content = '\n'.join(mermaid_lines) - # Match YAML format: title: "Title" or title: 'Title' + # Match title with quotes: title: "Something" or title: 'Something' title_match = re.search(r'title:\s*["\']([^"\']+)["\']', mermaid_content) if not title_match: - # Fallback to non-YAML format: title "Title" - title_match = re.search(r'title\s+["\']?([^"\'"\n]+)["\']?', mermaid_content) + # Match title without quotes: title: Something + title_match = re.search(r'title:\s*([^"\'\n]+)', mermaid_content) if title_match: fig_title = title_match.group(1).strip() else: @@ -145,7 +145,7 @@ def parse_md_to_html_blocks(md_content): if os.path.exists(fig_path): # Use Word-compatible width in cm (A4 text area is ~16cm wide, use ~12cm max) - html_blocks.append(f'''

{fig_title}

''') + html_blocks.append(f'''

{fig_title}

''') else: # Fallback to placeholder html_blocks.append(f'''

[Insertar diagrama Mermaid aquí]

''') diff --git a/thesis_output/plantilla_individual.htm b/thesis_output/plantilla_individual.htm index 1355429..0aeb5c7 100644 --- a/thesis_output/plantilla_individual.htm +++ b/thesis_output/plantilla_individual.htm @@ -4636,8 +4636,8 @@ _Toc14106979">Connectionist Temporal Classification (CTC): La función de pérdida CTC (Graves et al., 2006) permite entrenar modelos de reconocimiento de secuencias sin necesidad de alineamiento carácter por carácter, simplificando enormemente el proceso de entrenamiento.

Pipeline Moderno de OCR

Los sistemas OCR modernos siguen típicamente un pipeline de dos etapas principales, precedidas opcionalmente por una fase de preprocesamiento:

-

Figura 1. Diagrama 1

-

Diagrama 1

+

Figura 1. Pipeline de un sistema OCR moderno

+

Pipeline de un sistema OCR moderno

Fuente: Elaboración propia.

 

Etapa de Preprocesamiento

@@ -4879,8 +4879,8 @@ Configuraciones con alta probabilidad bajo 2.   Paralelizar la evaluación de trials

3.   Beneficiarse de la infraestructura de Ray para distribución

4.   Acceder a las visualizaciones de Optuna

-

Figura 2. Diagrama 2

-

Diagrama 2

+

Figura 2. Ciclo de optimización con Ray Tune y Optuna

+

Ciclo de optimización con Ray Tune y Optuna

Fuente: Elaboración propia.

 

HPO en Sistemas OCR

@@ -4957,8 +4957,8 @@ concretos y metodología de trabajo
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

Visión General

-

Figura 3. Diagrama 3

-

Diagrama 3

+

Figura 3. Fases de la metodología experimental

+

Fases de la metodología experimental

Fuente: Elaboración propia.

 

Descripción de las fases:

@@ -4977,8 +4977,8 @@ concretos y metodología de trabajo
1.   Extracción de texto de referencia:

- Método: page.get_text("dict") de PyMuPDF - Preservación de estructura de líneas - Tratamiento de texto vertical/marginal - Normalización de espacios y saltos de línea

Estructura del Dataset

-

Figura 4. Diagrama 4

-

Diagrama 4

+

Figura 4. Estructura del dataset de evaluación

+

Estructura del dataset de evaluación

Fuente: Elaboración propia.

 

Clase ImageTextDataset

@@ -5230,8 +5230,8 @@ color:#0098CD;mso-font-kerning:16.0pt;mso-bidi-font-weight:bold'>·     Incompatibilidades CUDA/cuDNN: Cada motor OCR requiere versiones específicas de CUDA y cuDNN que no pueden coexistir en un mismo entorno virtual

·     Aislamiento de Ray Tune: Ray Tune tiene sus propias dependencias que pueden entrar en conflicto con las librerías de inferencia OCR

Esta arquitectura containerizada permite ejecutar cada componente en su entorno aislado óptimo, comunicándose via API REST:

-

Figura 5. Diagrama 5

-

Diagrama 5

+

Figura 5. Arquitectura de ejecución con Docker Compose

+

Arquitectura de ejecución con Docker Compose

Fuente: Elaboración propia.

 

La arquitectura containerizada (src/docker-compose.tuning.*.yml) ofrece:

@@ -5262,14 +5262,14 @@ docker compose -f docker-compose.tuning.doctr.yml down

Fuente: Elaboración propia.

 

Arquitectura de Microservicios

-

Figura 6. Diagrama 6

-

Diagrama 6

+

Figura 6. Arquitectura de microservicios para optimización OCR

+

Arquitectura de microservicios para optimización OCR

Fuente: Elaboración propia.

 

Estrategia de Build Multi-Stage

Los Dockerfiles utilizan una estrategia de build multi-stage para optimizar tiempos de construcción y tamaño de imágenes:

Figura 7. Estrategia de build multi-stage

-

Estrategia de build multi-stage

+

Estrategia de build multi-stage

Fuente: Elaboración propia.

 

Ventajas de esta estrategia:

@@ -5303,7 +5303,7 @@ docker compose -f docker-compose.tuning.doctr.yml down

·     DocTR: 180 segundos (modelos ResNet más pesados)

Flujo de Ejecución Completo

Figura 8. Flujo de ejecución de optimización con Ray Tune

-

Flujo de ejecución de optimización con Ray Tune

+

Flujo de ejecución de optimización con Ray Tune

Fuente: Elaboración propia.

 

Reproducibilidad

@@ -5422,7 +5422,7 @@ Configuración óptima:

1.   Menor varianza: La desviación estándar también se reduce significativamente (7.12% vs 14.93%), indicando resultados más consistentes.

1.   Reducción del CER: 69.7% cuando se habilita la clasificación de orientación de línea.

Figura 9. Impacto de textline_orientation en CER

-

Impacto de textline_orientation en CER

+

Impacto de textline_orientation en CER

Fuente: Elaboración propia.

 

Explicación técnica:

@@ -5452,7 +5452,7 @@ Configuración óptima:

Fuente: Elaboración propia.

 

Figura 10. Reducción de errores: Baseline vs Optimizado (45 páginas)

-

Reducción de errores: Baseline vs Optimizado (45 páginas)

+

Reducción de errores: Baseline vs Optimizado (45 páginas)

Fuente: Elaboración propia.

 

Leyenda: CER = Character Error Rate, WER = Word Error Rate. Baseline = configuración por defecto de PaddleOCR. Optimizado = configuración encontrada por Ray Tune. Los valores corresponden al dataset completo de 45 páginas.

@@ -5755,7 +5755,7 @@ major-latin;mso-bidi-font-family:"Calibri Light";mso-bidi-theme-font:major-latin

·     Resultados: Archivos CSV con los resultados de los 64 trials por servicio

A.2 Estructura del Repositorio

Figura 11. Estructura del repositorio MastersThesis

-

Estructura del repositorio MastersThesis

+

Estructura del repositorio MastersThesis

Fuente: Elaboración propia.

 

Tabla 56. Descripción de directorios principales.