From f5d1032e41b873034a86920e35e4d175e7af7923 Mon Sep 17 00:00:00 2001 From: sergio Date: Tue, 20 Jan 2026 11:49:51 +0100 Subject: [PATCH] headers --- .claude/commands/documentation-review.md | 8 +- apply_content.py | 7 +- generate_mermaid_figures.py | 6 +- thesis_output/figures/figures_manifest.json | 12 +- thesis_output/plantilla_individual.htm | 142 ++++++++++---------- 5 files changed, 91 insertions(+), 84 deletions(-) diff --git a/.claude/commands/documentation-review.md b/.claude/commands/documentation-review.md index 65be2b0..3d26bdf 100644 --- a/.claude/commands/documentation-review.md +++ b/.claude/commands/documentation-review.md @@ -22,8 +22,10 @@ Review and validate the documentation for this Master's Thesis project. - Verify: dataset size (pages) ### UNIR Formatting -- Tables: `**Tabla N.** *Title in italics.*` followed by table, then `*Fuente: ...*` -- Figures: `**Figura N.** *Title in italics.*` +- Tables: `**Tabla N.** *Descriptive title in italics.*` followed by table, then `*Fuente: ...*` + - Table titles must describe the content (e.g., "Comparación de modelos OCR") +- Figures: `**Figura N.** *Descriptive title in italics.*` + - Figure titles must describe the content (e.g., "Pipeline de un sistema OCR moderno") - Sequential numbering (no duplicates, no gaps) - APA citation format for references @@ -46,6 +48,8 @@ Review and validate the documentation for this Master's Thesis project. A[Node] --> B[Node] ``` - Colors: `#0098CD` (UNIR blue for borders/lines), `#E6F4F9` (light blue background) +- All diagrams must have a descriptive `title:` in YAML frontmatter +- Titles should describe the diagram content, not generic "Diagrama N" - Verify theme is applied to all diagrams in `docs/*.md` ### Files to Review diff --git a/apply_content.py b/apply_content.py index efda92d..0e23226 100644 --- a/apply_content.py +++ b/apply_content.py @@ -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í]

''') @@ -240,7 +240,8 @@ def parse_md_to_html_blocks(md_content): html_blocks.append(f'''

Tabla {table_counter}. {clean_title}

''') # Build table HTML with APA style (horizontal lines only, no vertical) - table_html = '' + # Wrap in centered div for Word compatibility + table_html = '
' for j, tline in enumerate(table_lines): cells = [c.strip() for c in tline.split('|')[1:-1]] table_html += '' @@ -255,7 +256,7 @@ def parse_md_to_html_blocks(md_content): # Middle rows: no borders table_html += f'' table_html += '' - table_html += '

{md_to_html_para(cell)}

' + table_html += '' html_blocks.append(table_html) # Add source with proper template format diff --git a/generate_mermaid_figures.py b/generate_mermaid_figures.py index 315c437..c76bf23 100644 --- a/generate_mermaid_figures.py +++ b/generate_mermaid_figures.py @@ -35,10 +35,12 @@ def extract_mermaid_diagrams(): matches = re.findall(pattern, content, re.DOTALL) for i, mermaid_code in enumerate(matches): - # Try to extract title from YAML front matter or inline title + # Try to extract title from YAML front matter + # Match title with quotes: title: "Something" or title: 'Something' title_match = re.search(r'title:\s*["\']([^"\']+)["\']', mermaid_code) if not title_match: - title_match = re.search(r'title\s+["\']?([^"\'"\n]+)["\']?', mermaid_code) + # Match title without quotes: title: Something + title_match = re.search(r'title:\s*([^"\'\n]+)', mermaid_code) title = title_match.group(1).strip() if title_match else f"Diagrama {len(diagrams) + 1}" diagrams.append({ diff --git a/thesis_output/figures/figures_manifest.json b/thesis_output/figures/figures_manifest.json index bdab0cc..104d806 100644 --- a/thesis_output/figures/figures_manifest.json +++ b/thesis_output/figures/figures_manifest.json @@ -1,32 +1,32 @@ [ { "file": "figura_1.png", - "title": "Diagrama 1", + "title": "Pipeline de un sistema OCR moderno", "index": 1 }, { "file": "figura_2.png", - "title": "Diagrama 2", + "title": "Ciclo de optimización con Ray Tune y Optuna", "index": 2 }, { "file": "figura_3.png", - "title": "Diagrama 3", + "title": "Fases de la metodología experimental", "index": 3 }, { "file": "figura_4.png", - "title": "Diagrama 4", + "title": "Estructura del dataset de evaluación", "index": 4 }, { "file": "figura_5.png", - "title": "Diagrama 5", + "title": "Arquitectura de ejecución con Docker Compose", "index": 5 }, { "file": "figura_6.png", - "title": "Diagrama 6", + "title": "Arquitectura de microservicios para optimización OCR", "index": 6 }, { diff --git a/thesis_output/plantilla_individual.htm b/thesis_output/plantilla_individual.htm index 924d86c..1355429 100644 --- a/thesis_output/plantilla_individual.htm +++ b/thesis_output/plantilla_individual.htm @@ -4547,7 +4547,7 @@ mso-bidi-font-family:"Calibri Light";mso-bidi-theme-font:major-latin'>El procesamiento de documentos en español presenta particularidades que complican el reconocimiento automático de texto. Los caracteres especiales propios del idioma (la letra ñ, las vocales acentuadas á, é, í, ó, ú, la diéresis ü, y los signos de puntuación invertidos ¿ y ¡) no están presentes en muchos conjuntos de entrenamiento internacionales, lo que puede degradar el rendimiento de modelos preentrenados predominantemente en inglés.

La Tabla 1 resume los principales desafíos lingüísticos del OCR en español:

Tabla 1. Desafíos lingüísticos específicos del OCR en español.

-

Desafío

Descripción

Impacto en OCR

Caracteres especiales

ñ, á, é, í, ó, ú, ü, ¿, ¡

Confusión con caracteres similares (n/ñ, a/á)

Palabras largas

Español permite compuestos largos

Mayor probabilidad de error por carácter

Abreviaturas

Dr., Sra., Ud., etc.

Puntos internos confunden segmentación

Nombres propios

Tildes en apellidos (García, Martínez)

Bases de datos sin soporte Unicode

+

Desafío

Descripción

Impacto en OCR

Caracteres especiales

ñ, á, é, í, ó, ú, ü, ¿, ¡

Confusión con caracteres similares (n/ñ, a/á)

Palabras largas

Español permite compuestos largos

Mayor probabilidad de error por carácter

Abreviaturas

Dr., Sra., Ud., etc.

Puntos internos confunden segmentación

Nombres propios

Tildes en apellidos (García, Martínez)

Bases de datos sin soporte Unicode

Fuente: Elaboración propia.

 

Además de los aspectos lingüísticos, los documentos académicos y administrativos en español presentan características tipográficas que complican el reconocimiento: variaciones en fuentes entre encabezados, cuerpo y notas al pie; presencia de tablas con bordes y celdas; logotipos institucionales; marcas de agua; y elementos gráficos como firmas o sellos. Estos elementos generan ruido que puede propagarse en aplicaciones downstream como la extracción de entidades nombradas o el análisis semántico.

@@ -4556,7 +4556,7 @@ mso-bidi-font-family:"Calibri Light";mso-bidi-theme-font:major-latin'>La adaptación de modelos preentrenados a dominios específicos típicamente requiere fine-tuning con datos etiquetados del dominio objetivo y recursos computacionales significativos. El fine-tuning de un modelo de reconocimiento de texto puede requerir decenas de miles de imágenes etiquetadas y días de entrenamiento en GPUs de alta capacidad. Esta barrera técnica y económica excluye a muchos investigadores y organizaciones de beneficiarse plenamente de estas tecnologías.

La Tabla 2 ilustra los requisitos típicos para diferentes estrategias de mejora de OCR:

Tabla 2. Comparación de estrategias de mejora de modelos OCR.

-

Estrategia

Datos requeridos

Hardware

Tiempo

Expertise

Fine-tuning completo

>10,000 imágenes etiquetadas

GPU (≥16GB VRAM)

Días-Semanas

Alto

Fine-tuning parcial

>1,000 imágenes etiquetadas

GPU (≥8GB VRAM)

Horas-Días

Medio-Alto

Transfer learning

>500 imágenes etiquetadas

GPU (≥8GB VRAM)

Horas

Medio

Optimización de hiperparámetros

<100 imágenes de validación

CPU suficiente

Horas

Bajo-Medio

+

Estrategia

Datos requeridos

Hardware

Tiempo

Expertise

Fine-tuning completo

>10,000 imágenes etiquetadas

GPU (≥16GB VRAM)

Días-Semanas

Alto

Fine-tuning parcial

>1,000 imágenes etiquetadas

GPU (≥8GB VRAM)

Horas-Días

Medio-Alto

Transfer learning

>500 imágenes etiquetadas

GPU (≥8GB VRAM)

Horas

Medio

Optimización de hiperparámetros

<100 imágenes de validación

CPU suficiente

Horas

Bajo-Medio

Fuente: Elaboración propia.

 

La oportunidad: optimización sin fine-tuning

@@ -4581,7 +4581,7 @@ mso-bidi-font-family:"Calibri Light";mso-bidi-theme-font:major-latin'>Alcance y delimitación

Este trabajo se centra específicamente en:

Tabla 3. Delimitación del alcance del trabajo.

-

Aspecto

Dentro del alcance

Fuera del alcance

Tipo de documento

Documentos académicos digitales (PDF)

Documentos escaneados, manuscritos

Idioma

Español

Otros idiomas

Modelos

EasyOCR, PaddleOCR, DocTR

Soluciones comerciales (Google Cloud Vision, AWS Textract)

Método de mejora

Optimización de hiperparámetros

Fine-tuning, aumento de datos

Hardware

Ejecución en CPU

Aceleración GPU

+

Aspecto

Dentro del alcance

Fuera del alcance

Tipo de documento

Documentos académicos digitales (PDF)

Documentos escaneados, manuscritos

Idioma

Español

Otros idiomas

Modelos

EasyOCR, PaddleOCR, DocTR

Soluciones comerciales (Google Cloud Vision, AWS Textract)

Método de mejora

Optimización de hiperparámetros

Fine-tuning, aumento de datos

Hardware

Ejecución en CPU

Aceleración GPU

Fuente: Elaboración propia.

 

Relevancia y beneficiarios

@@ -4637,7 +4637,7 @@ _Toc14106979">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

+

Diagrama 1

Fuente: Elaboración propia.

 

Etapa de Preprocesamiento

@@ -4657,7 +4657,7 @@ _Toc14106979">CRAFT (Character Region Awareness for Text Detection): Desarrollado por Baek et al. (2019), CRAFT detecta regiones de caracteres individuales y las agrupa en palabras mediante el análisis de mapas de afinidad. Esta aproximación bottom-up es especialmente efectiva para texto con espaciado irregular.

DB (Differentiable Binarization): Propuesto por Liao et al. (2020), DB introduce una operación de binarización diferenciable que permite entrenar end-to-end un detector de texto basado en segmentación. Esta arquitectura es la utilizada por PaddleOCR y destaca por su velocidad y precisión.

Tabla 4. Comparativa de arquitecturas de detección de texto.

-

Arquitectura

Tipo

Salida

Fortalezas

Limitaciones

EAST

Single-shot

Cuadriláteros rotados

Rápido, simple

Dificultad con texto curvo

CRAFT

Bottom-up

Polígonos de palabra

Robusto a espaciado

Mayor coste computacional

DB

Segmentación

Polígonos arbitrarios

Rápido, preciso

Sensible a parámetros

+

Arquitectura

Tipo

Salida

Fortalezas

Limitaciones

EAST

Single-shot

Cuadriláteros rotados

Rápido, simple

Dificultad con texto curvo

CRAFT

Bottom-up

Polígonos de palabra

Robusto a espaciado

Mayor coste computacional

DB

Segmentación

Polígonos arbitrarios

Rápido, preciso

Sensible a parámetros

Fuente: Elaboración propia.

 

Etapa 2: Reconocimiento de Texto (Text Recognition)

@@ -4671,7 +4671,7 @@ _Toc14106979">Arquitecturas con Atención: Los modelos encoder-decoder con mecanismos de atención (Bahdanau et al., 2015) permiten al decodificador "enfocarse" en diferentes partes de la imagen mientras genera cada carácter. Esto es especialmente útil para texto largo o con layouts complejos.

TrOCR (Transformer-based OCR): Propuesto por Li et al. (2023), TrOCR utiliza un Vision Transformer (ViT) como encoder y un Transformer de lenguaje como decoder, logrando resultados estado del arte en múltiples benchmarks.

Tabla 5. Comparativa de arquitecturas de reconocimiento de texto.

-

Arquitectura

Encoder

Decoder

Pérdida

Características

CRNN

CNN

BiLSTM

CTC

Rápido, robusto

SVTR

ViT

Linear

CTC

Sin recurrencia

Attention-based

CNN

LSTM+Attn

Cross-entropy

Flexible longitud

TrOCR

ViT

Transformer

Cross-entropy

Estado del arte

+

Arquitectura

Encoder

Decoder

Pérdida

Características

CRNN

CNN

BiLSTM

CTC

Rápido, robusto

SVTR

ViT

Linear

CTC

Sin recurrencia

Attention-based

CNN

LSTM+Attn

Cross-entropy

Flexible longitud

TrOCR

ViT

Transformer

Cross-entropy

Estado del arte

Fuente: Elaboración propia.

 

Métricas de Evaluación

@@ -4753,15 +4753,15 @@ _Toc14106979">Hiperparámetros configurables:

PaddleOCR expone numerosos hiperparámetros que permiten ajustar el comportamiento del sistema. Los más relevantes para este trabajo son:

Tabla 6. Hiperparámetros de detección de PaddleOCR.

-

Parámetro

Descripción

Rango

Defecto

text_det_thresh

Umbral de probabilidad para píxeles de texto

[0.0, 1.0]

0.3

text_det_box_thresh

Umbral de confianza para cajas detectadas

[0.0, 1.0]

0.6

text_det_unclip_ratio

Factor de expansión de cajas detectadas

[0.0, 3.0]

1.5

text_det_limit_side_len

Tamaño máximo del lado de imagen

[320, 2560]

960

+

Parámetro

Descripción

Rango

Defecto

text_det_thresh

Umbral de probabilidad para píxeles de texto

[0.0, 1.0]

0.3

text_det_box_thresh

Umbral de confianza para cajas detectadas

[0.0, 1.0]

0.6

text_det_unclip_ratio

Factor de expansión de cajas detectadas

[0.0, 3.0]

1.5

text_det_limit_side_len

Tamaño máximo del lado de imagen

[320, 2560]

960

Fuente: Elaboración propia.

 

Tabla 7. Hiperparámetros de reconocimiento de PaddleOCR.

-

Parámetro

Descripción

Rango

Defecto

text_rec_score_thresh

Umbral de confianza para resultados

[0.0, 1.0]

0.5

use_textline_orientation

Activar clasificación de orientación de línea

{True, False}

False

rec_batch_size

Tamaño de batch para reconocimiento

[1, 64]

6

+

Parámetro

Descripción

Rango

Defecto

text_rec_score_thresh

Umbral de confianza para resultados

[0.0, 1.0]

0.5

use_textline_orientation

Activar clasificación de orientación de línea

{True, False}

False

rec_batch_size

Tamaño de batch para reconocimiento

[1, 64]

6

Fuente: Elaboración propia.

 

Tabla 8. Hiperparámetros de preprocesamiento de PaddleOCR.

-

Parámetro

Descripción

Impacto

use_doc_orientation_classify

Clasificación de orientación del documento

Alto para documentos escaneados

use_doc_unwarping

Corrección de deformación/curvatura

Alto para fotos de documentos

use_angle_cls

Clasificador de ángulo 0°/180°

Medio para documentos rotados

+

Parámetro

Descripción

Impacto

use_doc_orientation_classify

Clasificación de orientación del documento

Alto para documentos escaneados

use_doc_unwarping

Corrección de deformación/curvatura

Alto para fotos de documentos

use_angle_cls

Clasificador de ángulo 0°/180°

Medio para documentos rotados

Fuente: Elaboración propia.

 

Fortalezas de PaddleOCR:

@@ -4792,11 +4792,11 @@ _Toc14106979">·     Menos opciones de modelos preentrenados para idiomas no ingleses

Comparativa Detallada de Soluciones

Tabla 9. Comparativa técnica de soluciones OCR de código abierto.

-

Aspecto

EasyOCR

PaddleOCR

DocTR

Framework

PyTorch

PaddlePaddle

TF/PyTorch

Detector

CRAFT

DB

DB/LinkNet

Reconocedor

CRNN

SVTR/CRNN

CRNN/SAR/ViTSTR

Idiomas

80+

80+

9

Configurabilidad

Baja

Alta

Media

Documentación

Media

Alta (CN)

Alta (EN)

Actividad

Media

Alta

Media

Licencia

Apache 2.0

Apache 2.0

Apache 2.0

+

Aspecto

EasyOCR

PaddleOCR

DocTR

Framework

PyTorch

PaddlePaddle

TF/PyTorch

Detector

CRAFT

DB

DB/LinkNet

Reconocedor

CRNN

SVTR/CRNN

CRNN/SAR/ViTSTR

Idiomas

80+

80+

9

Configurabilidad

Baja

Alta

Media

Documentación

Media

Alta (CN)

Alta (EN)

Actividad

Media

Alta

Media

Licencia

Apache 2.0

Apache 2.0

Apache 2.0

Fuente: Elaboración propia.

 

Tabla 10. Comparativa de facilidad de uso.

-

Aspecto

EasyOCR

PaddleOCR

DocTR

Instalación

pip install

pip install

pip install

Líneas para OCR básico

3

5

6

GPU requerida

Opcional

Opcional

Opcional

Memoria mínima

2 GB

4 GB

4 GB

+

Aspecto

EasyOCR

PaddleOCR

DocTR

Instalación

pip install

pip install

pip install

Líneas para OCR básico

3

5

6

GPU requerida

Opcional

Opcional

Opcional

Memoria mínima

2 GB

4 GB

4 GB

Fuente: Elaboración propia.

 

Optimización de Hiperparámetros

@@ -4880,7 +4880,7 @@ Configuraciones con alta probabilidad bajo 3.   Beneficiarse de la infraestructura de Ray para distribución

4.   Acceder a las visualizaciones de Optuna

Figura 2. Diagrama 2

-

Diagrama 2

+

Diagrama 2

Fuente: Elaboración propia.

 

HPO en Sistemas OCR

@@ -4904,7 +4904,7 @@ Configuraciones con alta probabilidad bajo MLT (ICDAR Multi-Language Text): Dataset multilingüe de las competiciones ICDAR que incluye muestras en español. Las ediciones 2017 y 2019 contienen texto en escenas naturales.

XFUND: Dataset de comprensión de formularios en múltiples idiomas, incluyendo español, con anotaciones de entidades y relaciones.

Tabla 11. Datasets públicos con contenido en español.

-

Dataset

Tipo

Idiomas

Tamaño

Uso principal

FUNSD-ES

Formularios

ES

~200 docs

Document understanding

MLT 2019

Escenas

Multi (incl. ES)

10K imgs

Text detection

XFUND

Formularios

7 (incl. ES)

1.4K docs

Information extraction

+

Dataset

Tipo

Idiomas

Tamaño

Uso principal

FUNSD-ES

Formularios

ES

~200 docs

Document understanding

MLT 2019

Escenas

Multi (incl. ES)

10K imgs

Text detection

XFUND

Formularios

7 (incl. ES)

1.4K docs

Information extraction

Fuente: Elaboración propia.

 

Limitaciones de Recursos para Español

@@ -4920,7 +4920,7 @@ Configuraciones con alta probabilidad bajo Procesamiento de documentos de identidad: Sistemas OCR especializados para DNI, pasaportes y documentos oficiales españoles y latinoamericanos (Bulatov et al., 2020).

Reconocimiento de texto en escenas: Participaciones en competiciones ICDAR para detección y reconocimiento de texto en español en imágenes naturales.

Tabla 12. Trabajos previos relevantes en OCR para español.

-

Trabajo

Enfoque

Contribución

Romero et al. (2013)

HTR histórico

Modelos HMM para manuscritos

Bulatov et al. (2020)

Documentos ID

Pipeline especializado

Fischer et al. (2012)

Multilingual

Transferencia entre idiomas

+

Trabajo

Enfoque

Contribución

Romero et al. (2013)

HTR histórico

Modelos HMM para manuscritos

Bulatov et al. (2020)

Documentos ID

Pipeline especializado

Fischer et al. (2012)

Multilingual

Transferencia entre idiomas

Fuente: Elaboración propia.

 

La optimización de hiperparámetros para documentos académicos en español representa una contribución original de este trabajo, abordando un nicho no explorado en la literatura.

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

Justificación SMART del Objetivo General

Tabla 13. Justificación SMART del objetivo general.

-

Criterio

Cumplimiento

Específico (S)

Se define claramente qué se quiere lograr: optimizar PaddleOCR mediante ajuste de hiperparámetros para documentos en español

Medible (M)

Se establece una métrica cuantificable: CER < 2%

Alcanzable (A)

Es viable dado que: (1) PaddleOCR permite configuración de hiperparámetros, (2) Ray Tune posibilita búsqueda automatizada, (3) Aceleración GPU disponible para experimentación eficiente

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

+

Criterio

Cumplimiento

Específico (S)

Se define claramente qué se quiere lograr: optimizar PaddleOCR mediante ajuste de hiperparámetros para documentos en español

Medible (M)

Se establece una métrica cuantificable: CER < 2%

Alcanzable (A)

Es viable dado que: (1) PaddleOCR permite configuración de hiperparámetros, (2) Ray Tune posibilita búsqueda automatizada, (3) Aceleración GPU disponible para experimentación eficiente

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

Fuente: Elaboración propia.

 

Objetivos específicos

@@ -4958,7 +4958,7 @@ concretos y metodología de trabajo
Metodología del trabajo

Visión General

Figura 3. Diagrama 3

-

Diagrama 3

+

Diagrama 3

Fuente: Elaboración propia.

 

Descripción de las fases:

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

+

Diagrama 4

Fuente: Elaboración propia.

 

Clase ImageTextDataset

@@ -4986,7 +4986,7 @@ concretos y metodología de trabajo
Fase 2: Benchmark Comparativo

Modelos Evaluados

Tabla 14. Modelos OCR evaluados en el benchmark inicial.

-

Modelo

Versión

Configuración

EasyOCR

-

Idiomas: ['es', 'en']

PaddleOCR

PP-OCRv5

Modelos server_det + server_rec

DocTR

-

db_resnet50 + sar_resnet31

+

Modelo

Versión

Configuración

EasyOCR

-

Idiomas: ['es', 'en']

PaddleOCR

PP-OCRv5

Modelos server_det + server_rec

DocTR

-

db_resnet50 + sar_resnet31

Fuente: Elaboración propia.

 

Métricas de Evaluación

@@ -4994,7 +4994,7 @@ concretos y metodología de trabajo
Fase 3: Espacio de Búsqueda

Hiperparámetros Seleccionados

Tabla 15. Hiperparámetros seleccionados para optimización.

-

Parámetro

Tipo

Rango/Valores

Descripción

use_doc_orientation_classify

Booleano

[True, False]

Clasificación de orientación del documento

use_doc_unwarping

Booleano

[True, False]

Corrección de deformación del documento

textline_orientation

Booleano

[True, False]

Clasificación de orientación de línea de texto

text_det_thresh

Continuo

[0.0, 0.7]

Umbral de detección de píxeles de texto

text_det_box_thresh

Continuo

[0.0, 0.7]

Umbral de caja de detección

text_det_unclip_ratio

Fijo

0.0

Coeficiente de expansión (fijado)

text_rec_score_thresh

Continuo

[0.0, 0.7]

Umbral de confianza de reconocimiento

+

Parámetro

Tipo

Rango/Valores

Descripción

use_doc_orientation_classify

Booleano

[True, False]

Clasificación de orientación del documento

use_doc_unwarping

Booleano

[True, False]

Corrección de deformación del documento

textline_orientation

Booleano

[True, False]

Clasificación de orientación de línea de texto

text_det_thresh

Continuo

[0.0, 0.7]

Umbral de detección de píxeles de texto

text_det_box_thresh

Continuo

[0.0, 0.7]

Umbral de caja de detección

text_det_unclip_ratio

Fijo

0.0

Coeficiente de expansión (fijado)

text_rec_score_thresh

Continuo

[0.0, 0.7]

Umbral de confianza de reconocimiento

Fuente: Elaboración propia.

 

Configuración de Ray Tune

@@ -5029,23 +5029,23 @@ docker compose -f docker-compose.tuning.doctr.yml down

Entorno de Ejecución

Hardware

Tabla 16. Especificaciones de hardware del entorno de desarrollo.

-

Componente

Especificación

CPU

AMD Ryzen 7 5800H

RAM

16 GB DDR4

GPU

NVIDIA RTX 3060 Laptop (5.66 GB VRAM)

Almacenamiento

SSD

+

Componente

Especificación

CPU

AMD Ryzen 7 5800H

RAM

16 GB DDR4

GPU

NVIDIA RTX 3060 Laptop (5.66 GB VRAM)

Almacenamiento

SSD

Fuente: Elaboración propia.

 

Software

Tabla 17. Versiones de software utilizadas.

-

Componente

Versión

Sistema Operativo

Ubuntu 24.04.3 LTS

Python

3.12.3

PaddleOCR

3.3.2

PaddlePaddle

3.2.2

Ray

2.52.1

Optuna

4.7.0

+

Componente

Versión

Sistema Operativo

Ubuntu 24.04.3 LTS

Python

3.12.3

PaddleOCR

3.3.2

PaddlePaddle

3.2.2

Ray

2.52.1

Optuna

4.7.0

Fuente: Elaboración propia.

 

Justificación de Ejecución Local vs Cloud

La decisión de ejecutar los experimentos en hardware local en lugar de utilizar servicios cloud se fundamenta en un análisis de costos y beneficios operativos.

Tabla 18. Costos de GPU en plataformas cloud.

-

Plataforma

GPU

Costo/Hora

Costo Mensual

AWS EC2 g4dn.xlarge

NVIDIA T4 (16 GB)

$0.526

~$384

Google Colab Pro

T4/P100

~$1.30

$10 + CU extras

Google Colab Pro+

T4/V100/A100

~$1.30

$50 + CU extras

+

Plataforma

GPU

Costo/Hora

Costo Mensual

AWS EC2 g4dn.xlarge

NVIDIA T4 (16 GB)

$0.526

~$384

Google Colab Pro

T4/P100

~$1.30

$10 + CU extras

Google Colab Pro+

T4/V100/A100

~$1.30

$50 + CU extras

Fuente: Elaboración propia.

 

Para las tareas específicas de este proyecto, los costos estimados en cloud serían:

Tabla 19. Análisis de costos del proyecto en plataformas cloud.

-

Tarea

Tiempo GPU

Costo AWS

Costo Colab Pro

Ajuste hiperparámetros (64×3 trials)

~3 horas

~$1.58

~$3.90

Evaluación completa (45 páginas)

~5 min

~$0.04

~$0.11

Desarrollo y depuración (20 horas/mes)

20 horas

~$10.52

~$26.00

+

Tarea

Tiempo GPU

Costo AWS

Costo Colab Pro

Ajuste hiperparámetros (64×3 trials)

~3 horas

~$1.58

~$3.90

Evaluación completa (45 páginas)

~5 min

~$0.04

~$0.11

Desarrollo y depuración (20 horas/mes)

20 horas

~$10.52

~$26.00

Fuente: Elaboración propia.

 

Las ventajas de la ejecución local incluyen:

@@ -5101,7 +5101,7 @@ color:#0098CD;mso-font-kerning:16.0pt;mso-bidi-font-weight:bold'>Alternativas Evaluadas

Se seleccionaron tres soluciones OCR de código abierto representativas del estado del arte:

Tabla 20. Soluciones OCR evaluadas en el benchmark comparativo.

-

Solución

Desarrollador

Versión

Justificación de selección

EasyOCR

Jaided AI

Última estable

Popularidad, facilidad de uso

PaddleOCR

Baidu

PP-OCRv5

Estado del arte industrial

DocTR

Mindee

Última estable

Orientación académica

+

Solución

Desarrollador

Versión

Justificación de selección

EasyOCR

Jaided AI

Última estable

Popularidad, facilidad de uso

PaddleOCR

Baidu

PP-OCRv5

Estado del arte industrial

DocTR

Mindee

Última estable

Orientación académica

Fuente: Elaboración propia.

 

Imágenes Docker disponibles en el registro del proyecto:

@@ -5119,7 +5119,7 @@ color:#0098CD;mso-font-kerning:16.0pt;mso-bidi-font-weight:bold'>Dataset de Evaluación

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 21. Características del dataset de evaluación inicial.

-

Característica

Valor

Documento fuente

Instrucciones TFE UNIR

Número de páginas evaluadas

5 (benchmark inicial)

Formato

PDF digital (no escaneado)

Idioma principal

Español

Resolución de conversión

300 DPI

Formato de imagen

PNG

+

Característica

Valor

Documento fuente

Instrucciones TFE UNIR

Número de páginas evaluadas

5 (benchmark inicial)

Formato

PDF digital (no escaneado)

Idioma principal

Español

Resolución de conversión

300 DPI

Formato de imagen

PNG

Fuente: Elaboración propia.

 

Proceso de Conversión

@@ -5137,7 +5137,7 @@ color:#0098CD;mso-font-kerning:16.0pt;mso-bidi-font-weight:bold'>Resultados de PaddleOCR (Configuración Baseline)

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 22. Variabilidad del CER por tipo de contenido.

-

Tipo de contenido

CER aproximado

Observaciones

Texto corrido

~1.5-2%

Mejor rendimiento

Texto con listas

~3-4%

Rendimiento medio

Tablas

~5-6%

Mayor dificultad

Encabezados + notas

~4-5%

Layouts mixtos

+

Tipo de contenido

CER aproximado

Observaciones

Texto corrido

~1.5-2%

Mejor rendimiento

Texto con listas

~3-4%

Rendimiento medio

Tablas

~5-6%

Mayor dificultad

Encabezados + notas

~4-5%

Layouts mixtos

Fuente: Elaboración propia.

 

Observaciones del benchmark inicial:

@@ -5148,7 +5148,7 @@ color:#0098CD;mso-font-kerning:16.0pt;mso-bidi-font-weight:bold'>Comparativa de Modelos

Los tres modelos evaluados representan diferentes paradigmas de OCR:

Tabla 23. Comparativa de arquitecturas OCR evaluadas.

-

Modelo

Tipo

Componentes

Fortalezas Clave

EasyOCR

End-to-end (det + rec)

CRAFT + CRNN/Transformer

Ligero, fácil de usar, multilingüe

PaddleOCR

End-to-end (det + rec + cls)

DB + SVTR/CRNN

Soporte multilingüe robusto, pipeline configurable

DocTR

End-to-end (det + rec)

DB/LinkNet + CRNN/SAR/ViTSTR

Orientado a investigación, API limpia

+

Modelo

Tipo

Componentes

Fortalezas Clave

EasyOCR

End-to-end (det + rec)

CRAFT + CRNN/Transformer

Ligero, fácil de usar, multilingüe

PaddleOCR

End-to-end (det + rec + cls)

DB + SVTR/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: Elaboración propia.

 

Análisis Cualitativo de Errores

@@ -5172,7 +5172,7 @@ color:#0098CD;mso-font-kerning:16.0pt;mso-bidi-font-weight:bold'>Criterios de Selección

La selección de PaddleOCR para la fase de optimización se basó en los siguientes criterios:

Tabla 24. Evaluación de criterios de selección.

-

Criterio

EasyOCR

PaddleOCR

DocTR

CER benchmark

~6-8%

~5-6%

~7-9%

Configurabilidad

Baja (3 params)

Alta (>10 params)

Media (5 params)

Soporte español

Sí (dedicado)

Limitado

Documentación

Media

Alta

Alta

Mantenimiento

Medio

Alto

Medio

+

Criterio

EasyOCR

PaddleOCR

DocTR

CER benchmark

~6-8%

~5-6%

~7-9%

Configurabilidad

Baja (3 params)

Alta (>10 params)

Media (5 params)

Soporte español

Sí (dedicado)

Limitado

Documentación

Media

Alta

Alta

Mantenimiento

Medio

Alto

Medio

Fuente: Elaboración propia.

 

Hiperparámetros Disponibles en PaddleOCR

@@ -5221,7 +5221,7 @@ color:#0098CD;mso-font-kerning:16.0pt;mso-bidi-font-weight:bold'>Entorno de Ejecución

El experimento se ejecutó en el siguiente entorno:

Tabla 25. Entorno de ejecución del experimento.

-

Componente

Versión/Especificación

Sistema operativo

Ubuntu 24.04.3 LTS

Python

3.12.3

PaddlePaddle

3.2.2

PaddleOCR

3.3.2

Ray

2.52.1

Optuna

4.7.0

CPU

AMD Ryzen 7 5800H

RAM

16 GB DDR4

GPU

NVIDIA RTX 3060 Laptop (5.66 GB VRAM)

+

Componente

Versión/Especificación

Sistema operativo

Ubuntu 24.04.3 LTS

Python

3.12.3

PaddlePaddle

3.2.2

PaddleOCR

3.3.2

Ray

2.52.1

Optuna

4.7.0

CPU

AMD Ryzen 7 5800H

RAM

16 GB DDR4

GPU

NVIDIA RTX 3060 Laptop (5.66 GB VRAM)

Fuente: Elaboración propia.

 

Arquitectura de Ejecución

@@ -5231,7 +5231,7 @@ color:#0098CD;mso-font-kerning:16.0pt;mso-bidi-font-weight:bold'>·     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

+

Diagrama 5

Fuente: Elaboración propia.

 

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

@@ -5258,18 +5258,18 @@ docker compose -f docker-compose.tuning.doctr.yml down

Infraestructura Docker

La infraestructura del proyecto se basa en contenedores Docker para garantizar reproducibilidad y aislamiento de dependencias. Se generaron seis imágenes Docker, cada una optimizada para su propósito específico.

Tabla 26. Imágenes Docker generadas para el proyecto.

-

Imagen

Propósito

Base

Puerto

seryus.ddns.net/unir/paddle-ocr-gpu

PaddleOCR con aceleración GPU

nvidia/cuda:12.4.1-cudnn-runtime

8002

seryus.ddns.net/unir/paddle-ocr-cpu

PaddleOCR para entornos sin GPU

python:3.11-slim

8002

seryus.ddns.net/unir/easyocr-gpu

EasyOCR con aceleración GPU

nvidia/cuda:13.0.2-cudnn-runtime

8002*

seryus.ddns.net/unir/doctr-gpu

DocTR con aceleración GPU

nvidia/cuda:13.0.2-cudnn-runtime

8003

seryus.ddns.net/unir/raytune

Orquestador Ray Tune

python:3.12-slim

-

+

Imagen

Propósito

Base

Puerto

seryus.ddns.net/unir/paddle-ocr-gpu

PaddleOCR con aceleración GPU

nvidia/cuda:12.4.1-cudnn-runtime

8002

seryus.ddns.net/unir/paddle-ocr-cpu

PaddleOCR para entornos sin GPU

python:3.11-slim

8002

seryus.ddns.net/unir/easyocr-gpu

EasyOCR con aceleración GPU

nvidia/cuda:13.0.2-cudnn-runtime

8002*

seryus.ddns.net/unir/doctr-gpu

DocTR con aceleración GPU

nvidia/cuda:13.0.2-cudnn-runtime

8003

seryus.ddns.net/unir/raytune

Orquestador Ray Tune

python:3.12-slim

-

Fuente: Elaboración propia.

 

Arquitectura de Microservicios

Figura 6. Diagrama 6

-

Diagrama 6

+

Diagrama 6

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:

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

Docker Compose Files

El proyecto incluye múltiples archivos Docker Compose para diferentes escenarios de uso:

Tabla 27. Archivos Docker Compose del proyecto.

-

Archivo

Propósito

Servicios

docker-compose.tuning.yml

Optimización principal

RayTune + PaddleOCR + DocTR

docker-compose.tuning.easyocr.yml

Optimización EasyOCR

RayTune + EasyOCR

docker-compose.tuning.paddle.yml

Optimización PaddleOCR

RayTune + PaddleOCR

docker-compose.tuning.doctr.yml

Optimización DocTR

RayTune + DocTR

+

Archivo

Propósito

Servicios

docker-compose.tuning.yml

Optimización principal

RayTune + PaddleOCR + DocTR

docker-compose.tuning.easyocr.yml

Optimización EasyOCR

RayTune + EasyOCR

docker-compose.tuning.paddle.yml

Optimización PaddleOCR

RayTune + PaddleOCR

docker-compose.tuning.doctr.yml

Optimización DocTR

RayTune + DocTR

Fuente: Elaboración propia.

 

*\ Nota:** EasyOCR y PaddleOCR utilizan el mismo puerto (8002). Debido a limitaciones de recursos GPU (VRAM insuficiente para ejecutar múltiples modelos OCR simultáneamente), solo se ejecuta un servicio a la vez durante los experimentos. Por esta razón, EasyOCR tiene su propio archivo Docker Compose separado.

Gestión de Volúmenes

Se utilizan volúmenes Docker nombrados para persistir los modelos descargados entre ejecuciones:

Tabla 28. Volúmenes Docker para caché de modelos.

-

Volumen

Servicio

Contenido

paddlex-model-cache

PaddleOCR

Modelos PP-OCRv5 (~500 MB)

easyocr-model-cache

EasyOCR

Modelos CRAFT + CRNN (~400 MB)

doctr-model-cache

DocTR

Modelos db_resnet50 + crnn_vgg16_bn (~300 MB)

+

Volumen

Servicio

Contenido

paddlex-model-cache

PaddleOCR

Modelos PP-OCRv5 (~500 MB)

easyocr-model-cache

EasyOCR

Modelos CRAFT + CRNN (~400 MB)

doctr-model-cache

DocTR

Modelos db_resnet50 + crnn_vgg16_bn (~300 MB)

Fuente: Elaboración propia.

 

Health Checks y Monitorización

@@ -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

@@ -5334,14 +5334,14 @@ docker compose -f docker-compose.tuning.paddle.yml down

Dataset Extendido

Para la fase de optimización se extendió el dataset:

Tabla 29. Características del dataset de optimización.

-

Característica

Valor

Páginas totales

24

Páginas por trial

5 (páginas 5-10)

Estructura

Carpetas img/ y txt/ pareadas

Resolución

300 DPI

Formato imagen

PNG

+

Característica

Valor

Páginas totales

24

Páginas por trial

5 (páginas 5-10)

Estructura

Carpetas img/ y txt/ pareadas

Resolución

300 DPI

Formato imagen

PNG

Fuente: Elaboración propia.

 

La clase ImageTextDataset gestiona la carga de pares imagen-texto desde la estructura de carpetas pareadas. La implementación está disponible en el repositorio (ver Anexo A).

Espacio de Búsqueda

El espacio de búsqueda se definió considerando los hiperparámetros más relevantes identificados en la documentación de PaddleOCR, utilizando tune.choice() para parámetros booleanos y tune.uniform() para umbrales continuos. La implementación está disponible en src/raytune/raytune_ocr.py (ver Anexo A).

Tabla 30. Descripción detallada del espacio de búsqueda.

-

Parámetro

Tipo

Rango

Descripción

use_doc_orientation_classify

Booleano

{True, False}

Clasificación de orientación del documento completo

use_doc_unwarping

Booleano

{True, False}

Corrección de deformación/curvatura

textline_orientation

Booleano

{True, False}

Clasificación de orientación por línea de texto

text_det_thresh

Continuo

[0.0, 0.7]

Umbral de probabilidad para píxeles de texto

text_det_box_thresh

Continuo

[0.0, 0.7]

Umbral de confianza para cajas detectadas

text_det_unclip_ratio

Fijo

0.0

Coeficiente de expansión (no explorado)

text_rec_score_thresh

Continuo

[0.0, 0.7]

Umbral de confianza de reconocimiento

+

Parámetro

Tipo

Rango

Descripción

use_doc_orientation_classify

Booleano

{True, False}

Clasificación de orientación del documento completo

use_doc_unwarping

Booleano

{True, False}

Corrección de deformación/curvatura

textline_orientation

Booleano

{True, False}

Clasificación de orientación por línea de texto

text_det_thresh

Continuo

[0.0, 0.7]

Umbral de probabilidad para píxeles de texto

text_det_box_thresh

Continuo

[0.0, 0.7]

Umbral de confianza para cajas detectadas

text_det_unclip_ratio

Fijo

0.0

Coeficiente de expansión (no explorado)

text_rec_score_thresh

Continuo

[0.0, 0.7]

Umbral de confianza de reconocimiento

Fuente: Elaboración propia.

 

Justificación del espacio:

@@ -5351,7 +5351,7 @@ docker compose -f docker-compose.tuning.paddle.yml down

Configuración de Ray Tune

Se configuró Ray Tune con OptunaSearch como algoritmo de búsqueda, optimizando CER en 64 trials con 2 ejecuciones concurrentes. La implementación está disponible en src/raytune/raytune_ocr.py (ver Anexo A).

Tabla 31. Parámetros de configuración de Ray Tune.

-

Parámetro

Valor

Justificación

Métrica objetivo

CER

Métrica estándar para OCR

Modo

min

Minimizar tasa de error

Algoritmo

OptunaSearch (TPE)

Eficiente para espacios mixtos

Número de trials

64

Balance entre exploración y tiempo

Trials concurrentes

2

Limitado por memoria disponible

+

Parámetro

Valor

Justificación

Métrica objetivo

CER

Métrica estándar para OCR

Modo

min

Minimizar tasa de error

Algoritmo

OptunaSearch (TPE)

Eficiente para espacios mixtos

Número de trials

64

Balance entre exploración y tiempo

Trials concurrentes

2

Limitado por memoria disponible

Fuente: Elaboración propia.

 

Elección de 64 trials:

@@ -5364,13 +5364,13 @@ docker compose -f docker-compose.tuning.paddle.yml down

Ejecución del Experimento

El experimento se ejecutó exitosamente con los siguientes resultados globales:

Tabla 32. Resumen de la ejecución del experimento.

-

Métrica

Valor

Trials completados

64/64

Trials fallidos

0

Tiempo total

~6.4 horas

Tiempo medio por trial

367.72 segundos

Páginas procesadas

320 (64 trials × 5 páginas)

+

Métrica

Valor

Trials completados

64/64

Trials fallidos

0

Tiempo total

~6.4 horas

Tiempo medio por trial

367.72 segundos

Páginas procesadas

320 (64 trials × 5 páginas)

Fuente: Elaboración propia.

 

Estadísticas Descriptivas

Del archivo CSV de resultados (src/results/raytune_paddle_results_20260119_122609.csv):

Tabla 33. Estadísticas descriptivas de los 64 trials.

-

Estadística

CER

WER

Tiempo/Página (s)

count

64

64

64

mean

2.30%

9.25%

0.84

std

2.20%

1.78%

0.53

min

0.79%

6.80%

0.56

50% (mediana)

0.87%

8.39%

0.59

max

7.30%

13.20%

2.22

+

Estadística

CER

WER

Tiempo/Página (s)

count

64

64

64

mean

2.30%

9.25%

0.84

std

2.20%

1.78%

0.53

min

0.79%

6.80%

0.56

50% (mediana)

0.87%

8.39%

0.59

max

7.30%

13.20%

2.22

Fuente: Elaboración propia.

 

Observaciones:

@@ -5379,7 +5379,7 @@ docker compose -f docker-compose.tuning.paddle.yml down

1.   Velocidad GPU: El tiempo de ejecución promedio es de 0.84 s/página, lo que representa una aceleración significativa respecto a la ejecución en CPU (~69 s/página, 82x más rápido).

Distribución de Resultados

Tabla 34. Distribución de trials por rango de CER.

-

Rango CER

Número de trials

Porcentaje

< 2%

43

67.2%

2% - 5%

10

15.6%

5% - 10%

11

17.2%

> 10%

0

0.0%

+

Rango CER

Número de trials

Porcentaje

< 2%

43

67.2%

2% - 5%

10

15.6%

5% - 10%

11

17.2%

> 10%

0

0.0%

Fuente: Elaboración propia.

 

La mayoría de trials (67.2%) alcanzaron CER < 2%, cumpliendo el objetivo establecido. Ningún trial presentó fallos catastróficos (CER > 10%), demostrando la estabilidad de la optimización con GPU.

@@ -5397,24 +5397,24 @@ Configuración óptima: text_det_unclip_ratio: 0.0 text_rec_score_thresh: 0.5658

Tabla 35. Configuración óptima identificada.

-

Parámetro

Valor óptimo

Valor por defecto

Cambio

textline_orientation

True

False

Activado

use_doc_orientation_classify

True

False

Activado

use_doc_unwarping

False

False

Sin cambio

text_det_thresh

0.0462

0.3

-0.254

text_det_box_thresh

0.4862

0.6

-0.114

text_det_unclip_ratio

0.0

1.5

-1.5 (fijado)

text_rec_score_thresh

0.5658

0.5

+0.066

+

Parámetro

Valor óptimo

Valor por defecto

Cambio

textline_orientation

True

False

Activado

use_doc_orientation_classify

True

False

Activado

use_doc_unwarping

False

False

Sin cambio

text_det_thresh

0.0462

0.3

-0.254

text_det_box_thresh

0.4862

0.6

-0.114

text_det_unclip_ratio

0.0

1.5

-1.5 (fijado)

text_rec_score_thresh

0.5658

0.5

+0.066

Fuente: Elaboración propia.

 

Análisis de Correlación

Se calculó la correlación de Pearson entre los parámetros continuos y las métricas de error:

Tabla 36. Correlación de parámetros con CER.

-

Parámetro

Correlación con CER

Interpretación

text_det_thresh

-0.523

Correlación moderada negativa

text_det_box_thresh

+0.226

Correlación débil positiva

text_rec_score_thresh

-0.161

Correlación débil negativa

text_det_unclip_ratio

NaN

Varianza cero (valor fijo)

+

Parámetro

Correlación con CER

Interpretación

text_det_thresh

-0.523

Correlación moderada negativa

text_det_box_thresh

+0.226

Correlación débil positiva

text_rec_score_thresh

-0.161

Correlación débil negativa

text_det_unclip_ratio

NaN

Varianza cero (valor fijo)

Fuente: Elaboración propia.

 

Tabla 37. Correlación de parámetros con WER.

-

Parámetro

Correlación con WER

Interpretación

text_det_thresh

-0.521

Correlación moderada negativa

text_det_box_thresh

+0.227

Correlación débil positiva

text_rec_score_thresh

-0.173

Correlación débil negativa

+

Parámetro

Correlación con WER

Interpretación

text_det_thresh

-0.521

Correlación moderada negativa

text_det_box_thresh

+0.227

Correlación débil positiva

text_rec_score_thresh

-0.173

Correlación débil negativa

Fuente: Elaboración propia.

 

Hallazgo clave: El parámetro text_det_thresh muestra la correlación más fuerte (-0.52 con ambas métricas), indicando que valores más altos de este umbral tienden a reducir el error. Este umbral controla qué píxeles se consideran "texto" en el mapa de probabilidad del detector.

Impacto del Parámetro textline_orientation

El parámetro booleano textline_orientation demostró tener el mayor impacto en el rendimiento:

Tabla 38. Impacto del parámetro textline_orientation.

-

textline_orientation

CER Medio

CER Std

WER Medio

N trials

True

3.76%

7.12%

12.73%

32

False

12.40%

14.93%

21.71%

32

+

textline_orientation

CER Medio

CER Std

WER Medio

N trials

True

3.76%

7.12%

12.73%

32

False

12.40%

14.93%

21.71%

32

Fuente: Elaboración propia.

 

Interpretación:

@@ -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:

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

Análisis de Fallos Catastróficos

Los trials con CER muy alto (>20%) presentaron patrones específicos:

Tabla 39. Características de trials con fallos catastróficos.

-

Trial

CER

text_det_thresh

textline_orientation

Diagnóstico

#47

51.61%

0.017

True

Umbral muy bajo

#23

43.29%

0.042

False

Umbral bajo + sin orientación

#12

38.76%

0.089

False

Umbral bajo + sin orientación

#56

35.12%

0.023

False

Umbral muy bajo + sin orientación

+

Trial

CER

text_det_thresh

textline_orientation

Diagnóstico

#47

51.61%

0.017

True

Umbral muy bajo

#23

43.29%

0.042

False

Umbral bajo + sin orientación

#12

38.76%

0.089

False

Umbral bajo + sin orientación

#56

35.12%

0.023

False

Umbral muy bajo + sin orientación

Fuente: Elaboración propia.

 

Diagnóstico:

@@ -5442,24 +5442,24 @@ Configuración óptima:

Evaluación sobre Dataset Completo

La configuración óptima identificada se evaluó sobre el dataset completo de 45 páginas, comparando con la configuración baseline (valores por defecto de PaddleOCR). Los parámetros optimizados más relevantes fueron: textline_orientation=True, use_doc_orientation_classify=True, text_det_thresh=0.0462, text_det_box_thresh=0.4862, y text_rec_score_thresh=0.5658.

Tabla 40. Comparación baseline vs optimizado (45 páginas).

-

Modelo

CER

Precisión Caracteres

WER

Precisión Palabras

PaddleOCR (Baseline)

8.85%

91.15%

13.05%

86.95%

PaddleOCR-HyperAdjust

7.72%

92.28%

11.40%

88.60%

+

Modelo

CER

Precisión Caracteres

WER

Precisión Palabras

PaddleOCR (Baseline)

8.85%

91.15%

13.05%

86.95%

PaddleOCR-HyperAdjust

7.72%

92.28%

11.40%

88.60%

Fuente: Elaboración propia.

 

Nota sobre generalización: El mejor trial individual (5 páginas) alcanzó un CER de 0.79%, cumpliendo el objetivo de CER < 2%. Sin embargo, al aplicar la configuración al dataset completo de 45 páginas, el CER aumentó a 7.72%, evidenciando sobreajuste al subconjunto de entrenamiento. Esta diferencia es un hallazgo importante que se discute en la sección de análisis.

Métricas de Mejora

Tabla 41. Análisis cuantitativo de la mejora.

-

Forma de Medición

CER

WER

Valor baseline

8.85%

13.05%

Valor optimizado

7.72%

11.40%

Mejora absoluta

-1.13 pp

-1.65 pp

Reducción relativa del error

12.8%

12.6%

Factor de mejora

1.15×

1.14×

Mejor trial (5 páginas)

0.79%

7.78%

+

Forma de Medición

CER

WER

Valor baseline

8.85%

13.05%

Valor optimizado

7.72%

11.40%

Mejora absoluta

-1.13 pp

-1.65 pp

Reducción relativa del error

12.8%

12.6%

Factor de mejora

1.15×

1.14×

Mejor trial (5 páginas)

0.79%

7.78%

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.

Impacto Práctico

En un documento típico de 10,000 caracteres:

Tabla 42. En un documento típico de 10,000 caracteres

-

Configuración

Caracteres con error

Palabras con error*

Baseline

~885

~196

Optimizada (full dataset)

~772

~171

Optimizada (mejor trial)

~79

~117

Reducción (full dataset)

113 menos

25 menos

+

Configuración

Caracteres con error

Palabras con error*

Baseline

~885

~196

Optimizada (full dataset)

~772

~171

Optimizada (mejor trial)

~79

~117

Reducción (full dataset)

113 menos

25 menos

Fuente: Elaboración propia.

 

*Asumiendo longitud media de palabra = 6.6 caracteres en español.

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

"La optimización de hiperparámetros logró una mejora del 12.8% en el CER sobre el dataset completo de 45 páginas. Aunque esta mejora es más modesta que la observada en los trials individuales (donde se alcanzó 0.79% CER), demuestra el valor de la optimización sistemática. La diferencia entre el mejor trial (0.79%) y el resultado en dataset completo (7.72%) revela un fenómeno de sobreajuste al subconjunto de 5 páginas usado para evaluación."

Tiempo de Ejecución

Tabla 43. Métricas de tiempo del experimento (GPU).

-

Métrica

Valor

Tiempo total del experimento

~1.5 horas

Tiempo medio por trial

~4.2 segundos

Tiempo medio por página

0.84 segundos

Variabilidad (std)

0.53 segundos/página

Páginas procesadas totales

320

+

Métrica

Valor

Tiempo total del experimento

~1.5 horas

Tiempo medio por trial

~4.2 segundos

Tiempo medio por página

0.84 segundos

Variabilidad (std)

0.53 segundos/página

Páginas procesadas totales

320

Fuente: Elaboración propia.

 

Observaciones:

@@ -5493,13 +5493,13 @@ Configuración óptima:

Resumen Consolidado de Resultados

Progresión del Rendimiento

Tabla 44. Evolución del rendimiento a través del estudio.

-

Fase

Configuración

CER

Mejora vs anterior

Benchmark inicial

Baseline (5 páginas)

~7-8%

-

Optimización (mejor trial)

Optimizada (5 páginas)

0.79%

~90% vs baseline

Validación final

Optimizada (45 páginas)

7.72%

12.8% vs baseline

+

Fase

Configuración

CER

Mejora vs anterior

Benchmark inicial

Baseline (5 páginas)

~7-8%

-

Optimización (mejor trial)

Optimizada (5 páginas)

0.79%

~90% vs baseline

Validación final

Optimizada (45 páginas)

7.72%

12.8% vs baseline

Fuente: Elaboración propia.

 

El incremento del CER de 0.79% (5 páginas) a 7.72% (45 páginas) evidencia sobreajuste al subconjunto de optimización. Este fenómeno es esperado cuando se optimiza sobre un subconjunto pequeño y se valida sobre el dataset completo con mayor diversidad de layouts.

Comparación con Objetivo

Tabla 45. Verificación del objetivo general.

-

Aspecto

Objetivo

Resultado (trial)

Resultado (full)

Cumplimiento

Métrica

CER

CER

CER

Umbral

< 2%

0.79%

7.72%

Parcial

Método

Sin fine-tuning

Solo hiperparámetros

Solo hiperparámetros

Hardware

GPU

RTX 3060

RTX 3060

+

Aspecto

Objetivo

Resultado (trial)

Resultado (full)

Cumplimiento

Métrica

CER

CER

CER

Umbral

< 2%

0.79%

7.72%

Parcial

Método

Sin fine-tuning

Solo hiperparámetros

Solo hiperparámetros

Hardware

GPU

RTX 3060

RTX 3060

Fuente: Elaboración propia.

 

Análisis del cumplimiento: El objetivo de CER < 2% se cumple en el mejor trial individual (0.79%), demostrando que la optimización de hiperparámetros puede alcanzar la precisión objetivo. Sin embargo, la validación sobre el dataset completo (7.72%) muestra que la generalización requiere trabajo adicional, como un subconjunto de optimización más representativo o técnicas de regularización.

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

Jerarquía de Importancia

Basándose en el análisis de los resultados de optimización:

Tabla 46. Ranking de importancia de hiperparámetros.

-

Rank

Parámetro

Impacto

Evidencia

1

textline_orientation

Crítico

Presente en todos los mejores trials

2

use_doc_orientation_classify

Alto

Activado en configuración óptima

3

text_det_thresh

Alto

Valor óptimo bajo (0.0462)

4

text_det_box_thresh

Medio

Moderado (0.4862)

5

text_rec_score_thresh

Medio

Moderado (0.5658)

6

use_doc_unwarping

Nulo

Desactivado en configuración óptima

+

Rank

Parámetro

Impacto

Evidencia

1

textline_orientation

Crítico

Presente en todos los mejores trials

2

use_doc_orientation_classify

Alto

Activado en configuración óptima

3

text_det_thresh

Alto

Valor óptimo bajo (0.0462)

4

text_det_box_thresh

Medio

Moderado (0.4862)

5

text_rec_score_thresh

Medio

Moderado (0.5658)

6

use_doc_unwarping

Nulo

Desactivado en configuración óptima

Fuente: Elaboración propia.

 

Análisis del Parámetro textline_orientation

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

Análisis del Parámetro text_det_thresh

Comportamiento observado:

Tabla 47. Comportamiento observado

-

Rango

CER típico

Comportamiento

0.0 - 0.1

1-3%

Detecta más texto, incluyendo bordes

0.1 - 0.3

2-5%

Rendimiento variable

0.3 - 0.5

3-7%

Balance precisión/recall

0.5 - 0.7

4-7%

Más conservador

+

Rango

CER típico

Comportamiento

0.0 - 0.1

1-3%

Detecta más texto, incluyendo bordes

0.1 - 0.3

2-5%

Rendimiento variable

0.3 - 0.5

3-7%

Balance precisión/recall

0.5 - 0.7

4-7%

Más conservador

Fuente: Elaboración propia.

 

Interpretación:

@@ -5541,17 +5541,17 @@ Configuración óptima:

Análisis de Casos de Fallo

Clasificación de Errores

Tabla 48. Tipología de errores observados.

-

Tipo de error

Frecuencia

Ejemplo

Causa probable

Pérdida de acentos

Alta

más → mas

Modelo de reconocimiento

Duplicación de caracteres

Media

titulación → titulacióon

Solapamiento de detecciones

Confusión de puntuación

Media

¿ → ?

Caracteres similares

Pérdida de eñe

Baja

año → ano

Modelo de reconocimiento

Texto desordenado

Variable

Mezcla de líneas

Fallo de orientación

+

Tipo de error

Frecuencia

Ejemplo

Causa probable

Pérdida de acentos

Alta

más → mas

Modelo de reconocimiento

Duplicación de caracteres

Media

titulación → titulacióon

Solapamiento de detecciones

Confusión de puntuación

Media

¿ → ?

Caracteres similares

Pérdida de eñe

Baja

año → ano

Modelo de reconocimiento

Texto desordenado

Variable

Mezcla de líneas

Fallo de orientación

Fuente: Elaboración propia.

 

Patrones de Fallo por Tipo de Contenido

Tabla 49. Tasa de error por tipo de contenido.

-

Tipo de contenido

CER estimado

Factor de riesgo

Párrafos de texto

~1%

Bajo

Listas numeradas

~2%

Medio

Tablas simples

~3%

Medio

Encabezados + pie de página

~2%

Medio

Tablas complejas

~5%

Alto

Texto en columnas

~4%

Alto

+

Tipo de contenido

CER estimado

Factor de riesgo

Párrafos de texto

~1%

Bajo

Listas numeradas

~2%

Medio

Tablas simples

~3%

Medio

Encabezados + pie de página

~2%

Medio

Tablas complejas

~5%

Alto

Texto en columnas

~4%

Alto

Fuente: Elaboración propia.

 

Comparación con Objetivos Específicos

Tabla 50. Cumplimiento de objetivos específicos.

-

Objetivo

Descripción

Resultado

Estado

OE1

Comparar soluciones OCR

EasyOCR, PaddleOCR, DocTR evaluados; PaddleOCR seleccionado

✓ Cumplido

OE2

Preparar dataset de evaluación

45 páginas con ground truth

✓ Cumplido

OE3

Identificar hiperparámetros críticos

textline_orientation, use_doc_orientation_classify, text_det_thresh identificados

✓ Cumplido

OE4

Optimizar con Ray Tune (≥50 trials)

64 trials ejecutados con GPU

✓ Cumplido

OE5

Validar configuración optimizada

CER: 8.85% → 7.72% (dataset), 0.79% (mejor trial)

✓ Parcial

+

Objetivo

Descripción

Resultado

Estado

OE1

Comparar soluciones OCR

EasyOCR, PaddleOCR, DocTR evaluados; PaddleOCR seleccionado

✓ Cumplido

OE2

Preparar dataset de evaluación

45 páginas con ground truth

✓ Cumplido

OE3

Identificar hiperparámetros críticos

textline_orientation, use_doc_orientation_classify, text_det_thresh identificados

✓ Cumplido

OE4

Optimizar con Ray Tune (≥50 trials)

64 trials ejecutados con GPU

✓ Cumplido

OE5

Validar configuración optimizada

CER: 8.85% → 7.72% (dataset), 0.79% (mejor trial)

✓ Parcial

Fuente: Elaboración propia.

 

Nota sobre OE5: El objetivo de CER < 2% se cumple en el mejor trial individual (0.79%). La validación sobre el dataset completo (7.72%) muestra que la generalización requiere mayor trabajo, identificándose como línea de trabajo futuro.

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

Guía de Configuración Recomendada

Para documentos académicos en español similares a los evaluados:

Tabla 51. Configuración recomendada para PaddleOCR con GPU.

-

Parámetro

Valor

Prioridad

Justificación

textline_orientation

True

Obligatorio

Crítico para layouts complejos

use_doc_orientation_classify

True

Recomendado

Mejora orientación de documento

text_det_thresh

0.05 (rango: 0.04-0.10)

Recomendado

Detección sensible beneficia resultados

text_det_box_thresh

0.49 (rango: 0.4-0.6)

Recomendado

Balance de confianza

text_rec_score_thresh

0.57 (rango: 0.5-0.7)

Opcional

Filtra reconocimientos poco confiables

use_doc_unwarping

False

No recomendado

Innecesario para PDFs digitales

+

Parámetro

Valor

Prioridad

Justificación

textline_orientation

True

Obligatorio

Crítico para layouts complejos

use_doc_orientation_classify

True

Recomendado

Mejora orientación de documento

text_det_thresh

0.05 (rango: 0.04-0.10)

Recomendado

Detección sensible beneficia resultados

text_det_box_thresh

0.49 (rango: 0.4-0.6)

Recomendado

Balance de confianza

text_rec_score_thresh

0.57 (rango: 0.5-0.7)

Opcional

Filtra reconocimientos poco confiables

use_doc_unwarping

False

No recomendado

Innecesario para PDFs digitales

Fuente: Elaboración propia.

 

Cuándo Aplicar Esta Metodología

@@ -5618,14 +5618,14 @@ Configuración óptima:

Esta sección presenta la comparación de rendimiento entre ejecución en CPU y GPU, justificando la elección de GPU para el experimento principal y demostrando el impacto práctico de la aceleración por hardware.

Configuración del Entorno GPU

Tabla 52. Especificaciones del entorno GPU utilizado.

-

Componente

Especificación

GPU

NVIDIA GeForce RTX 3060 Laptop

VRAM

5.66 GB

CUDA

12.4

Sistema Operativo

Ubuntu 24.04.3 LTS

Kernel

6.14.0-37-generic

+

Componente

Especificación

GPU

NVIDIA GeForce RTX 3060 Laptop

VRAM

5.66 GB

CUDA

12.4

Sistema Operativo

Ubuntu 24.04.3 LTS

Kernel

6.14.0-37-generic

Fuente: Elaboración propia.

 

Este hardware representa configuración típica de desarrollo, permitiendo evaluar el rendimiento en condiciones realistas de despliegue.

Comparación CPU vs GPU

Se comparó el tiempo de procesamiento entre CPU y GPU utilizando los datos de src/raytune_paddle_subproc_results_20251207_192320.csv (CPU) y src/results/raytune_paddle_results_20260119_122609.csv (GPU).

Tabla 53. Rendimiento comparativo CPU vs GPU.

-

Métrica

CPU

GPU (RTX 3060)

Factor de Aceleración

Tiempo/Página (promedio)

69.4s

0.84s

82x

Dataset completo (45 páginas)

~52 min

~38 seg

82x

64 trials × 5 páginas

~6.4 horas

~1.5 horas

4.3x

+

Métrica

CPU

GPU (RTX 3060)

Factor de Aceleración

Tiempo/Página (promedio)

69.4s

0.84s

82x

Dataset completo (45 páginas)

~52 min

~38 seg

82x

64 trials × 5 páginas

~6.4 horas

~1.5 horas

4.3x

Fuente: Elaboración propia.

 

La aceleración de 82× obtenida con GPU transforma la viabilidad del enfoque:

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

Comparación de Modelos PaddleOCR

PaddleOCR ofrece dos variantes de modelos: Mobile (optimizados para dispositivos con recursos limitados) y Server (mayor precisión a costa de mayor consumo de memoria). Se evaluó la viabilidad de ambas variantes en el hardware disponible.

Tabla 54. Comparación de modelos Mobile vs Server en RTX 3060.

-

Modelo

VRAM Requerida

Resultado

Recomendación

PP-OCRv5 Mobile

0.06 GB

Funciona correctamente

✓ Recomendado

PP-OCRv5 Server

5.3 GB

OOM en página 2

✗ Requiere >8 GB VRAM

+

Modelo

VRAM Requerida

Resultado

Recomendación

PP-OCRv5 Mobile

0.06 GB

Funciona correctamente

✓ Recomendado

PP-OCRv5 Server

5.3 GB

OOM en página 2

✗ Requiere >8 GB VRAM

Fuente: Elaboración propia.

 

Los modelos Server, a pesar de ofrecer potencialmente mayor precisión, resultan inviables en hardware con VRAM limitada (≤6 GB) debido a errores de memoria (Out of Memory). Los modelos Mobile, con un consumo de memoria 88 veces menor, funcionan de manera estable y ofrecen rendimiento suficiente para el caso de uso evaluado.

@@ -5654,7 +5654,7 @@ y trabajo futuro

Este capít

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, utilizando una infraestructura dockerizada con aceleración GPU para facilitar la experimentación.

El objetivo principal del trabajo era alcanzar un CER inferior al 2% en documentos académicos en español. Los resultados obtenidos se resumen a continuación:

Tabla 55. Cumplimiento del objetivo de CER.

-

Métrica

Objetivo

Mejor Trial

Dataset Completo

Cumplimiento

CER

< 2%

0.79%

7.72%

✓ Parcial

+

Métrica

Objetivo

Mejor Trial

Dataset Completo

Cumplimiento

CER

< 2%

0.79%

7.72%

✓ Parcial

Fuente: Elaboración propia.

 

Nota: El objetivo de CER < 2% se cumple en el mejor trial individual (0.79%, 5 páginas). La validación sobre el conjunto de datos completo (45 páginas) muestra un CER de 7.72%, evidenciando sobreajuste al subconjunto de optimización. Esta diferencia se analiza en detalle en el Capítulo 4.

@@ -5755,22 +5755,22 @@ 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.

-

Directorio

Contenido

docs/

Capítulos del TFM en Markdown (estructura UNIR)

docs/metrics/

Métricas de rendimiento por servicio OCR

src/paddle_ocr/

Servicio PaddleOCR dockerizado

src/doctr_service/

Servicio DocTR dockerizado

src/easyocr_service/

Servicio EasyOCR dockerizado

src/raytune/

Scripts de optimización Ray Tune

src/results/

CSVs con resultados de 64 trials por servicio

thesis_output/

Documento TFM generado + figuras PNG

instructions/

Plantilla e instrucciones UNIR oficiales

+

Directorio

Contenido

docs/

Capítulos del TFM en Markdown (estructura UNIR)

docs/metrics/

Métricas de rendimiento por servicio OCR

src/paddle_ocr/

Servicio PaddleOCR dockerizado

src/doctr_service/

Servicio DocTR dockerizado

src/easyocr_service/

Servicio EasyOCR dockerizado

src/raytune/

Scripts de optimización Ray Tune

src/results/

CSVs con resultados de 64 trials por servicio

thesis_output/

Documento TFM generado + figuras PNG

instructions/

Plantilla e instrucciones UNIR oficiales

Fuente: Elaboración propia.

 

A.3 Requisitos de Software

Sistema de Desarrollo

Tabla 57. Especificaciones del sistema de desarrollo.

-

Componente

Especificación

Sistema Operativo

Ubuntu 24.04.3 LTS

CPU

AMD Ryzen 7 5800H

RAM

16 GB DDR4

GPU

NVIDIA RTX 3060 Laptop (5.66 GB VRAM)

CUDA

12.4

+

Componente

Especificación

Sistema Operativo

Ubuntu 24.04.3 LTS

CPU

AMD Ryzen 7 5800H

RAM

16 GB DDR4

GPU

NVIDIA RTX 3060 Laptop (5.66 GB VRAM)

CUDA

12.4

Fuente: Elaboración propia.

 

Dependencias

Tabla 58. Dependencias del proyecto.

-

Componente

Versión

Python

3.12.3

Docker

29.1.5

NVIDIA Container Toolkit

Requerido para GPU

Ray

2.52.1

Optuna

4.7.0

+

Componente

Versión

Python

3.12.3

Docker

29.1.5

NVIDIA Container Toolkit

Requerido para GPU

Ray

2.52.1

Optuna

4.7.0

Fuente: Elaboración propia.

 

A.4 Instrucciones de Ejecución de Servicios OCR

@@ -5847,7 +5847,7 @@ analyze_results(results, prefix='raytune_paddle', config_keys=PADDLE_OCR_CONFIG_ "

Servicios y Puertos

Tabla 59. Servicios Docker y puertos.

-

Servicio

Puerto

Script de Ajuste

Nota

PaddleOCR

8002

paddle_ocr_payload

-

DocTR

8003

doctr_payload

-

EasyOCR

8002

easyocr_payload

Conflicto con PaddleOCR

+

Servicio

Puerto

Script de Ajuste

Nota

PaddleOCR

8002

paddle_ocr_payload

-

DocTR

8003

doctr_payload

-

EasyOCR

8002

easyocr_payload

Conflicto con PaddleOCR

Fuente: Elaboración propia.

 

Nota: Debido a limitaciones de recursos GPU (VRAM insuficiente para ejecutar múltiples modelos OCR simultáneamente), solo se ejecuta un servicio a la vez. PaddleOCR y EasyOCR comparten el puerto 8002. Para cambiar de servicio, detener el actual con docker compose down.

@@ -5859,7 +5859,7 @@ analyze_results(results, prefix='raytune_paddle', config_keys=PADDLE_OCR_CONFIG_

·     EasyOCR - Balance intermedio

Resumen de Resultados

Tabla 60. Resumen de resultados del benchmark por servicio.

-

Servicio

CER Base

CER Ajustado

Mejora

PaddleOCR

8.85%

7.72%

12.8%

DocTR

12.06%

12.07%

0%

EasyOCR

11.23%

11.14%

0.8%

+

Servicio

CER Base

CER Ajustado

Mejora

PaddleOCR

8.85%

7.72%

12.8%

DocTR

12.06%

12.07%

0%

EasyOCR

11.23%

11.14%

0.8%

Fuente: Elaboración propia.

 

A.8 Licencia