From 4c299cc00f09e28081a76863a92d6f7f0d28a07a Mon Sep 17 00:00:00 2001 From: sergio Date: Sat, 24 Jan 2026 16:29:50 +0100 Subject: [PATCH] gen --- thesis_output/plantilla_individual.htm | 522 +++++++++---------------- 1 file changed, 180 insertions(+), 342 deletions(-) diff --git a/thesis_output/plantilla_individual.htm b/thesis_output/plantilla_individual.htm index 0ac161c..0ea6def 100644 --- a/thesis_output/plantilla_individual.htm +++ b/thesis_output/plantilla_individual.htm @@ -4550,22 +4550,18 @@ mso-bidi-font-family:"Calibri Light";mso-bidi-theme-font:major-latin'>Desafíos específicos del español

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 ¿, ¡) 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

+

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

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 índices, listas numeradas y cambios frecuentes de estilo; y saltos de línea que rompen la continuidad del texto. Estos elementos generan ruido que puede propagarse en aplicaciones downstream como la extracción de entidades nombradas o el análisis semántico.

La brecha entre investigación y práctica

Los modelos OCR basados en redes neuronales profundas, como los empleados en PaddleOCR, EasyOCR o DocTR, ofrecen un rendimiento competitivo en benchmarks estándar. No obstante, estos resultados en condiciones controladas no siempre se trasladan a documentos del mundo real.

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

Miles de imágenes etiquetadas

GPU de alta memoria

Días o semanas

Alto

Fine-tuning parcial

Cientos o miles de imágenes etiquetadas

GPU dedicada

Horas o días

Medio-Alto

Transfer learning

Centenas de imágenes etiquetadas

GPU dedicada

Horas

Medio

Optimización de hiperparámetros

Subconjunto de validación

CPU o GPU (CUDA 12.2+ en Docker DocTR)

Horas

Bajo-Medio

+

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

+

Estrategia

Datos requeridos

Hardware

Tiempo

Expertise

Fine-tuning completo

Miles de imágenes etiquetadas

GPU de alta memoria

Días o semanas

Alto

Fine-tuning parcial

Cientos o miles de imágenes etiquetadas

GPU dedicada

Horas o días

Medio-Alto

Transfer learning

Centenas de imágenes etiquetadas

GPU dedicada

Horas

Medio

Optimización de hiperparámetros

Subconjunto de validación

CPU o GPU (CUDA 12.2+ en Docker DocTR)

Horas

Bajo-Medio

Fuente: docs/07_anexo_a.md, sección A.9.

-

 

La oportunidad: optimización sin fine-tuning

La presente investigación surge de una necesidad práctica: optimizar un sistema OCR para documentos académicos en español sin disponer de infraestructura de entrenamiento dedicada para 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 cómputo avanzado es limitado.

@@ -4588,11 +4584,9 @@ mso-bidi-font-family:"Calibri Light";mso-bidi-theme-font:major-latin'>Una solución técnicamente superior pero impracticable tiene valor limitado. Esta pregunta ancla la investigación en consideraciones del mundo real.

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

GPU de consumo y CPU para referencia de tiempos

Infraestructura multi-GPU

+

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

GPU de consumo y CPU para referencia de tiempos

Infraestructura multi-GPU

Fuente: Elaboración propia.

-

 

Relevancia y beneficiarios

La relevancia de este problema radica en su aplicabilidad inmediata. Una metodología reproducible para optimizar OCR sin fine-tuning beneficiaría a múltiples grupos:

@@ -4644,11 +4638,9 @@ _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. Pipeline de un sistema OCR moderno

-

Pipeline de un sistema OCR moderno

+

Figura 1. Pipeline de un sistema OCR moderno

+

Pipeline de un sistema OCR moderno

Fuente: Elaboración propia.

-

 

Etapa de Preprocesamiento

Antes de la detección, muchos sistemas aplican técnicas de preprocesamiento para mejorar la calidad de la imagen de entrada:

@@ -4666,11 +4658,9 @@ _Toc14106979">EAST (Efficient and Accurate Scene Text Detector): Propuesto por Zhou et al. (2017), EAST es un detector de una sola etapa que predice directamente cuadriláteros rotados o polígonos que encierran el texto. Su arquitectura FCN (Fully Convolutional Network) permite procesamiento eficiente de imágenes de alta resolución.

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

+

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

Fuente: Elaboración propia a partir de Zhou et al. (2017), Baek et al. (2019), Liao et al. (2020).

-

 

Etapa 2: Reconocimiento de Texto (Text Recognition)

Una vez detectadas las regiones de texto, la etapa de reconocimiento transcribe el contenido visual a texto digital. Las arquitecturas predominantes son:

@@ -4682,11 +4672,9 @@ _Toc14106979">SVTR (Scene-Text Visual Transformer Recognition): Desarrollado por Du et al. (2022), SVTR aplica la arquitectura Transformer al reconocimiento de texto, utilizando parches de imagen como tokens de entrada. Esta aproximación elimina la necesidad de RNN y permite capturar dependencias globales de manera más eficiente.

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

+

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

Fuente: Elaboración propia a partir de Shi et al. (2016), Du et al. (2022), Li et al. (2023).

-

 

Métricas de Evaluación

La evaluación rigurosa de sistemas OCR requiere métricas estandarizadas que permitan comparaciones objetivas. Las métricas fundamentales se basan en la distancia de edición de Levenshtein.

@@ -4762,23 +4750,17 @@ _Toc14106979"> - Encoder: Vision Transformer modificado - Decoder: CTC o Attention-based - Vocabulario: Configurable por idioma

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

+

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

Fuente: Documentación oficial de PaddleOCR (PaddlePaddle, 2024).

-

 

-
-

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

+

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

Fuente: Documentación oficial de PaddleOCR (PaddlePaddle, 2024).

-

 

-
-

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

+

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

Fuente: Documentación oficial de PaddleOCR (PaddlePaddle, 2024).

-

 

Fortalezas de PaddleOCR:

·     Alta precisión en múltiples benchmarks

@@ -4807,17 +4789,13 @@ _Toc14106979">·     Comunidad más pequeña

·     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

Multilingüe

Multilingüe

Limitado

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

+

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

Multilingüe

Multilingüe

Limitado

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 a partir de documentación oficial (2024).

-

 

-
-

Tabla 10. Comparativa de facilidad de uso.

-

Aspecto

EasyOCR

PaddleOCR

DocTR

Instalación

pip install

pip install

pip install

Complejidad de uso

Baja

Media

Media

GPU requerida

Opcional

Opcional

Opcional

Requisitos de memoria

Bajos

Medios

Medios

+

Tabla 10. Comparativa de facilidad de uso.

+

Aspecto

EasyOCR

PaddleOCR

DocTR

Instalación

pip install

pip install

pip install

Complejidad de uso

Baja

Media

Media

GPU requerida

Opcional

Opcional

Opcional

Requisitos de memoria

Bajos

Medios

Medios

Fuente: Elaboración propia a partir de documentación oficial.

-

 

Optimización de Hiperparámetros

Fundamentos Teóricos

@@ -4899,11 +4877,9 @@ 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. Ciclo de optimización con Ray Tune y Optuna

-

Ciclo de optimización con Ray Tune y Optuna

+

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

La aplicación de HPO a sistemas OCR ha sido explorada en varios contextos:

@@ -4925,11 +4901,9 @@ Configuraciones con alta probabilidad bajo FUNSD-ES: Versión en español del Form Understanding in Noisy Scanned Documents dataset. Contiene formularios escaneados con anotaciones de texto y estructura.

MLT (ICDAR Multi-Language Text): Dataset multilingüe de las competiciones ICDAR que incluye muestras en español. Las ediciones recientes 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

Pequeño

Document understanding

MLT

Escenas

Multi (incl. ES)

Medio

Text detection

XFUND

Formularios

Multi (incl. ES)

Medio

Information extraction

+

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

+

Dataset

Tipo

Idiomas

Tamaño

Uso principal

FUNSD-ES

Formularios

ES

Pequeño

Document understanding

MLT

Escenas

Multi (incl. ES)

Medio

Text detection

XFUND

Formularios

Multi (incl. ES)

Medio

Information extraction

Fuente: Elaboración propia a partir de repositorios oficiales.

-

 

Limitaciones de Recursos para Español

Comparado con inglés y chino, el español cuenta con:

@@ -4944,11 +4918,9 @@ Configuraciones con alta probabilidad bajo Digitalización de archivos históricos: Múltiples proyectos han abordado el reconocimiento de manuscritos coloniales y documentos históricos en español, utilizando técnicas de HTR (Handwritten Text Recognition) adaptadas (Romero et al., 2013).

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

+

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

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.

Conclusiones del capítulo

@@ -4962,11 +4934,9 @@ concretos y metodología de trabajo
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.

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

+

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

Fuente: docs/metrics/metrics.md.

-

 

Objetivos específicos

OE1: Comparar soluciones OCR de código abierto

@@ -4982,11 +4952,9 @@ concretos y metodología de trabajo
Metodología del trabajo

Visión General

La metodología se estructura en cinco fases secuenciales, cada una de las cuales produce resultados que alimentan la siguiente. Desde la preparación del dataset hasta la validación final, el proceso sigue un diseño experimental. Esto permite reproducir y verificar cada paso.

-
-

Figura 3. Fases de la metodología experimental

-

Fases de la metodología experimental

+

Figura 3. Fases de la metodología experimental

+

Fases de la metodología experimental

Fuente: Elaboración propia.

-

 

Descripción de las fases:

·     Fase 1 - Preparación del Dataset: Conversión PDF a imágenes (300 DPI), extracción de ground truth con PyMuPDF

@@ -5004,11 +4972,9 @@ 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. Estructura del dataset de evaluación

-

Estructura del dataset de evaluación

+

Figura 4. Estructura del dataset de evaluación

+

Estructura del dataset de evaluación

Fuente: Elaboración propia.

-

 

Clase ImageTextDataset

Se implementó una clase Python para cargar pares imagen-texto que retorna tuplas (PIL.Image, str) desde carpetas pareadas. La implementación se encuentra en:

@@ -5018,11 +4984,9 @@ concretos y metodología de trabajo
·     src/doctr_service/dataset_manager.py

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 Mobile (limitación de VRAM)

DocTR

-

db_resnet50 + sar_resnet31

+

Tabla 14. Modelos OCR evaluados en el benchmark inicial.

+

Modelo

Versión

Configuración

EasyOCR

-

Idiomas: ['es', 'en']

PaddleOCR

PP-OCRv5

Modelos Mobile (limitación de VRAM)

DocTR

-

db_resnet50 + sar_resnet31

Fuente: docs/metrics/metrics.md.

-

 

Métricas de Evaluación

Se utilizó la biblioteca jiwer para calcular CER y WER comparando el texto de referencia con la predicción del modelo OCR. La implementación se encuentra en:

@@ -5031,11 +4995,9 @@ concretos y metodología de trabajo
·     src/doctr_service/doctr_tuning_rest.py

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

+

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

Fuente: Elaboración propia.

-

 

Configuración de Ray Tune

El espacio de búsqueda se definió utilizando tune.choice() para parámetros booleanos y tune.uniform() para parámetros continuos, con OptunaSearch como algoritmo de optimización configurado para minimizar CER en 64 trials. La implementación completa está disponible en src/raytune/raytune_ocr.py (ver Anexo A).

@@ -5074,33 +5036,25 @@ docker compose -f docker-compose.tuning.doctr.yml down

4.   Métricas reportadas: CER, WER, tiempo de procesamiento

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

+

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

Fuente: docs/metrics/metrics.md.

-

 

Software

-
-

Tabla 17. Software utilizado en el entorno de desarrollo.

-

Componente

Versión

PaddlePaddle

3.2.2

PaddleOCR

3.3.2

Ray Tune

2.52.1

Optuna

4.7.0

DocTR (python-doctr)

>= 0.8.0

EasyOCR

>= 1.7.0

+

Tabla 17. Software utilizado en el entorno de desarrollo.

+

Componente

Versión

PaddlePaddle

3.2.2

PaddleOCR

3.3.2

Ray Tune

2.52.1

Optuna

4.7.0

DocTR (python-doctr)

>= 0.8.0

EasyOCR

>= 1.7.0

Fuente: src/paddle_ocr/requirements.txt, src/raytune/requirements.txt, src/doctr_service/requirements.txt, src/easyocr_service/requirements.txt.

-

 

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

+

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

Fuente: Precios públicos de AWS y Google Cloud. Ver Anexo A, sección de fuentes de precios cloud (enero 2026).

-

 

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

+

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

Fuente: Elaboración propia a partir de precios públicos. Ver Anexo A, sección de fuentes de precios cloud (enero 2026).

-

 

Las ventajas de la ejecución local incluyen:

1.   Costo cero de GPU: La RTX 3060 ya está disponible en el equipo de desarrollo

@@ -5147,11 +5101,9 @@ color:#0098CD;mso-font-kerning:16.0pt;mso-bidi-font-weight:bold'>Los documentos académicos típicos incluyen texto corrido con índice, listas numeradas, encabezados multinivel y notas al pie, lo que complica la tarea de ordenación del texto reconocido. A esto se suma el uso de tipografía profesional con múltiples fuentes, tamaños y estilos (negrita, cursiva), que puede confundir a los modelos de reconocimiento. Aunque los PDFs digitales suelen tener alta calidad, pueden contener artefactos de compresión que degradan la legibilidad de caracteres pequeños o de bajo contraste.

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

+

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

Fuente: docs/metrics/metrics.md.

-

 

Imágenes Docker disponibles en el registro del proyecto:

·     PaddleOCR: seryus.ddns.net/unir/paddle-ocr-gpu, seryus.ddns.net/unir/paddle-ocr-cpu

@@ -5167,11 +5119,9 @@ color:#0098CD;mso-font-kerning:16.0pt;mso-bidi-font-weight:bold'>Configuración del Experimento

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

+

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

Fuente: docs/metrics/metrics.md.

-

 

Proceso de Conversión

La conversión del PDF a imágenes se realizó mediante PyMuPDF (fitz) a 300 DPI, resolución estándar para OCR que proporciona suficiente detalle para caracteres pequeños sin generar archivos excesivamente grandes. La implementación está disponible en src/prepare_dataset.ipynb.

@@ -5187,11 +5137,9 @@ color:#0098CD;mso-font-kerning:16.0pt;mso-bidi-font-weight:bold'>Resultados del Benchmark

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, en función de los cambios de formato y de la estructura del texto.

-
-

Tabla 22. Variabilidad del error por tipo de contenido.

-

Tipo de contenido

Nivel de error

Observaciones

Texto corrido

Bajo

Mejor rendimiento

Texto con listas

Medio

Rendimiento intermedio

Índice y encabezados

Medio

Orden de lectura sensible

Encabezados + notas

Medio

Variación tipográfica

+

Tabla 22. Variabilidad del error por tipo de contenido.

+

Tipo de contenido

Nivel de error

Observaciones

Texto corrido

Bajo

Mejor rendimiento

Texto con listas

Medio

Rendimiento intermedio

Índice y encabezados

Medio

Orden de lectura sensible

Encabezados + notas

Medio

Variación tipográfica

Fuente: Elaboración propia a partir del benchmark.

-

 

Observaciones del benchmark inicial:

1.   Las páginas con más cambios de formato y listados presentaron mayor error debido a la dificultad de ordenar correctamente las líneas de texto.

@@ -5200,11 +5148,9 @@ color:#0098CD;mso-font-kerning:16.0pt;mso-bidi-font-weight:bold'>1.   Los errores más frecuentes fueron: confusión de acentos, caracteres duplicados, y errores en signos de puntuación.

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

+

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

Fuente: Documentación oficial de cada herramienta (JaidedAI, 2020; PaddlePaddle, 2024; Mindee, 2021).

-

 

Análisis Cualitativo de Errores

Un análisis cualitativo de los errores producidos reveló patrones específicos:

@@ -5226,11 +5172,9 @@ color:#0098CD;mso-font-kerning:16.0pt;mso-bidi-font-weight:bold'>Justificación de la Selección de PaddleOCR

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 (cualitativa).

-

Criterio

EasyOCR

PaddleOCR

DocTR

CER benchmark

Medio

Mejor

Medio

Configurabilidad

Baja

Alta

Media

Soporte español

Sí (dedicado)

Limitado

Documentación

Media

Alta

Alta

Mantenimiento

Medio

Alto

Medio

+

Tabla 24. Evaluación de criterios de selección (cualitativa).

+

Criterio

EasyOCR

PaddleOCR

DocTR

CER benchmark

Medio

Mejor

Medio

Configurabilidad

Baja

Alta

Media

Soporte español

Sí (dedicado)

Limitado

Documentación

Media

Alta

Alta

Mantenimiento

Medio

Alto

Medio

Fuente: Elaboración propia a partir del benchmark y la documentación de cada herramienta.

-

 

Hiperparámetros Disponibles en PaddleOCR

PaddleOCR expone múltiples hiperparámetros ajustables, clasificados por etapa del pipeline:

@@ -5265,11 +5209,9 @@ color:#0098CD;mso-font-kerning:16.0pt;mso-bidi-font-weight:bold'>Configuración del Experimento

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)

+

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)

Fuente: src/paddle_ocr/requirements.txt, src/raytune/requirements.txt, docs/metrics/metrics.md.

-

 

Arquitectura de Ejecución

La arquitectura basada en contenedores Docker es fundamental para este proyecto debido a los conflictos de dependencias inherentes entre los diferentes componentes:

@@ -5277,11 +5219,9 @@ 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. Arquitectura de ejecución con Docker Compose

-

Arquitectura de ejecución con Docker Compose

+

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.paddle.yml))))), src/docker-compose.tuning.doctr.yml, src/docker-compose.tuning.easyocr.yml, src/docker-compose.tuning.ymlofrece:

1.   Aislamiento de dependencias entre Ray Tune y los motores OCR

@@ -5310,26 +5250,20 @@ 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

-

+

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

-

Fuente: Elaboración propia. Dockerfiles disponibles en src/paddle_ocr, src/easyocr_service, src/doctr_service, src/raytune.

-

 

Arquitectura de Microservicios

-
-

Figura 6. Arquitectura de microservicios para optimización OCR

-

Arquitectura de microservicios para optimización OCR

+

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

+

Figura 7. Estrategia de build multi-stage

+

Estrategia de build multi-stage

Fuente: Elaboración propia.

-

 

Ventajas de esta estrategia:

1.   Caché de dependencias: La etapa base (CUDA + dependencias) se cachea y reutiliza

@@ -5337,20 +5271,16 @@ docker compose -f docker-compose.tuning.doctr.yml down

3.   Imágenes optimizadas: Solo se incluyen los archivos necesarios para ejecución

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

src/docker-compose.tuning.yml

Optimización principal

RayTune + PaddleOCR + DocTR

src/docker-compose.tuning.easyocr.yml

Optimización EasyOCR

RayTune + EasyOCR

src/docker-compose.tuning.paddle.yml

Optimización PaddleOCR

RayTune + PaddleOCR

src/docker-compose.tuning.doctr.yml

Optimización DocTR

RayTune + DocTR

+

Tabla 27. Archivos Docker Compose del proyecto.

+

Archivo

Propósito

Servicios

src/docker-compose.tuning.yml

Optimización principal

RayTune + PaddleOCR + DocTR

src/docker-compose.tuning.easyocr.yml

Optimización EasyOCR

RayTune + EasyOCR

src/docker-compose.tuning.paddle.yml

Optimización PaddleOCR

RayTune + PaddleOCR

src/docker-compose.tuning.doctr.yml

Optimización DocTR

RayTune + DocTR

Fuente: src/docker-compose.tuning.yml, src/docker-compose.tuning.easyocr.yml, src/docker-compose.tuning.paddle.yml, src/docker-compose.tuning.doctr.yml.

-

 

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

easyocr-model-cache

EasyOCR

Modelos CRAFT + CRNN

doctr-model-cache

DocTR

Modelos db_resnet50 + crnn_vgg16_bn

+

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

+

Volumen

Servicio

Contenido

paddlex-model-cache

PaddleOCR

Modelos PP-OCRv5

easyocr-model-cache

EasyOCR

Modelos CRAFT + CRNN

doctr-model-cache

DocTR

Modelos db_resnet50 + crnn_vgg16_bn

Fuente: src/docker-compose.tuning.yml, src/docker-compose.tuning.easyocr.yml, src/docker-compose.tuning.paddle.yml, src/docker-compose.tuning.doctr.yml.

-

 

Health Checks y Monitorización

Todos los servicios implementan health checks para garantizar disponibilidad antes de iniciar la optimización:

@@ -5367,11 +5297,9 @@ docker compose -f docker-compose.tuning.doctr.yml down

·     EasyOCR: 120 segundos (carga de modelos CRAFT)

·     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

+

Figura 8. 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

Para reproducir los experimentos:

@@ -5403,20 +5331,16 @@ docker compose -f docker-compose.tuning.paddle.yml down

·     src/raytune_paddle_subproc_results_20251207_192320.csv

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 del dataset completo

45

Páginas por trial

5 (páginas 5-10)

Estructura

Carpetas img/ y txt/ pareadas

Resolución

300 DPI

Formato imagen

PNG

+

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

+

Característica

Valor

Páginas del dataset completo

45

Páginas por trial

5 (páginas 5-10)

Estructura

Carpetas img/ y txt/ pareadas

Resolución

300 DPI

Formato imagen

PNG

Fuente: docs/metrics/metrics.md, src/prepare_dataset.ipynb.

-

 

La clase ImageTextDataset gestiona la carga de pares imagen-texto desde la estructura de carpetas pareadas. La implementación está disponible en src/paddle_ocr/dataset_manager.py, src/easyocr_service/dataset_manager.py y src/doctr_service/dataset_manager.py.

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

+

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

Fuente: Documentación de PaddleOCR.

-

 

Justificación del espacio:

1.   Rango [0.0, 0.7] para umbrales: Se evitan valores extremos (>0.7) que podrían filtrar demasiado texto válido, y se incluye 0.0 para evaluar el impacto de desactivar el filtrado.

@@ -5424,47 +5348,37 @@ docker compose -f docker-compose.tuning.paddle.yml down

1.   Parámetros booleanos completos: Los tres parámetros de preprocesamiento se exploran completamente para identificar cuáles son necesarios para documentos digitales.

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

+

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

Fuente: src/raytune/raytune_ocr.py.

-

 

Elección de 64 trials:

El número de trials se eligió buscando un equilibrio entre exploración del espacio de búsqueda y tiempo total de ejecución.

Resultados de la Optimización

Ejecución del Experimento

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

-
-

Tabla 32. Resumen de la ejecución del experimento (referencia CPU).

-

Métrica

Valor

Trials completados

64/64

Trials fallidos

0

Tiempo total (CPU)

6.2 horas

Tiempo medio por trial (CPU)

347.6 segundos

Páginas procesadas

320 (64 trials × 5 páginas)

+

Tabla 32. Resumen de la ejecución del experimento (referencia CPU).

+

Métrica

Valor

Trials completados

64/64

Trials fallidos

0

Tiempo total (CPU)

6.2 horas

Tiempo medio por trial (CPU)

347.6 segundos

Páginas procesadas

320 (64 trials × 5 páginas)

Fuente: src/raytune_paddle_subproc_results_20251207_192320.csv.

-

 

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

+

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

Fuente: src/results/raytune_paddle_results_20260119_122609.csv.

-

 

Observaciones:

1.   Baja varianza en CER: La desviación estándar (2.20%) es similar a la media (2.30%), indicando una distribución relativamente consistente sin valores extremos catastróficos.

1.   Mediana vs Media: La mediana del CER (0.87%) es menor que la media (2.30%), confirmando una distribución ligeramente sesgada hacia valores bajos.

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%

+

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%

Fuente: src/results/raytune_paddle_results_20260119_122609.csv.

-

 

-
-

Figura 9. Distribución de trials por rango de CER

-

Distribución de trials por rango de CER

+

Figura 9. Distribución de trials por rango de CER

+

Distribución de trials por rango de CER

Fuente: src/results/raytune_paddle_results_20260119_122609.csv.

-

 

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.

Mejor Configuración Encontrada

@@ -5482,95 +5396,73 @@ 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

+

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

Fuente: src/results/raytune_paddle_results_20260119_122609.csv.

-

 

Análisis de Correlación

Se calculó la correlación de Pearson entre los parámetros de configuración (codificados como 0/1 en el caso de booleanos) y las métricas de error:

-
-

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

-

Parámetro

Correlación con CER

Interpretación

use_doc_unwarping

+0.879

Correlación alta positiva

use_doc_orientation_classify

-0.712

Correlación alta negativa

textline_orientation

-0.535

Correlación moderada negativa

text_det_thresh

+0.428

Correlación moderada positiva

text_det_box_thresh

+0.311

Correlación moderada positiva

text_rec_score_thresh

-0.268

Correlación moderada negativa

text_det_unclip_ratio

NaN

Varianza cero (valor fijo)

+

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

+

Parámetro

Correlación con CER

Interpretación

use_doc_unwarping

+0.879

Correlación alta positiva

use_doc_orientation_classify

-0.712

Correlación alta negativa

textline_orientation

-0.535

Correlación moderada negativa

text_det_thresh

+0.428

Correlación moderada positiva

text_det_box_thresh

+0.311

Correlación moderada positiva

text_rec_score_thresh

-0.268

Correlación moderada negativa

text_det_unclip_ratio

NaN

Varianza cero (valor fijo)

Fuente: src/results/correlations/paddle_correlations.csv.

-

 

-
-

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

-

Parámetro

Correlación con WER

Interpretación

use_doc_unwarping

+0.744

Correlación alta positiva

use_doc_orientation_classify

-0.602

Correlación alta negativa

textline_orientation

-0.591

Correlación moderada negativa

text_det_thresh

+0.399

Correlación moderada positiva

text_det_box_thresh

+0.256

Correlación moderada positiva

text_rec_score_thresh

-0.080

Correlación débil negativa

text_det_unclip_ratio

NaN

Varianza cero (valor fijo)

+

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

+

Parámetro

Correlación con WER

Interpretación

use_doc_unwarping

+0.744

Correlación alta positiva

use_doc_orientation_classify

-0.602

Correlación alta negativa

textline_orientation

-0.591

Correlación moderada negativa

text_det_thresh

+0.399

Correlación moderada positiva

text_det_box_thresh

+0.256

Correlación moderada positiva

text_rec_score_thresh

-0.080

Correlación débil negativa

text_det_unclip_ratio

NaN

Varianza cero (valor fijo)

Fuente: src/results/correlations/paddle_correlations.csv.

-

 

-
-

Figura 10. Correlación de hiperparámetros con CER

-

Correlación de hiperparámetros con CER

+

Figura 10. Correlación de hiperparámetros con CER

+

Correlación de hiperparámetros con CER

Fuente: src/results/correlations/paddle_correlations.csv.

-

 

Leyenda: Valores positivos indican que aumentar el parámetro incrementa el CER. Los parámetros booleanos se codifican como 0/1 para el cálculo de la correlación. Abreviaturas: unwarp = use_doc_unwarping, orient_doc = use_doc_orientation_classify, orient_line = textline_orientation, det_thresh = text_det_thresh, box_thresh = text_det_box_thresh, rec_score = text_rec_score_thresh.

Hallazgo clave: use_doc_unwarping presenta la correlación positiva más alta con CER (0.879), lo que indica que activar este módulo incrementa el error en este dataset. En cambio, use_doc_orientation_classify y textline_orientation tienen correlación negativa, asociada a mejoras cuando están activados.

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

1.74%

1.94%

8.75%

52

False

4.73%

1.37%

11.42%

12

+

Tabla 38. Impacto del parámetro textline_orientation.

+

textline_orientation

CER Medio

CER Std

WER Medio

N trials

True

1.74%

1.94%

8.75%

52

False

4.73%

1.37%

11.42%

12

Fuente: src/results/raytune_paddle_results_20260119_122609.csv.

-

 

Interpretación:

1.   Reducción del CER: Con textline_orientation=True, el CER medio es 2.7 veces menor (1.74% vs 4.73%).

1.   Varianza: La desviación estándar es mayor cuando textline_orientation=True (1.94% vs 1.37%), aunque los valores medios siguen siendo mejores.

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

-
-

Figura 11. Impacto de textline_orientation en CER

-

Impacto de textline_orientation en CER

+

Figura 11. Impacto de textline_orientation en CER

+

Impacto de textline_orientation en CER

Fuente: src/results/raytune_paddle_results_20260119_122609.csv.

-

 

Explicación técnica:

El parámetro textline_orientation activa un clasificador que determina la orientación de cada línea de texto detectada. Para documentos con índice, encabezados y listas, este clasificador asegura que el texto se lea en el orden correcto, evitando la mezcla de líneas de diferentes secciones.

Análisis de Trials con Mayor CER

No se observaron fallos catastróficos (CER > 10%). El CER máximo fue 7.30%, por lo que el análisis se centra en los trials con peor desempeño relativo:

-
-

Tabla 39. Trials con mayor CER.

-

Trial ID

CER

text_det_thresh

textline_orientation

f699b826

7.30%

0.285

False

34bfaecf

7.29%

0.030

True

8c1998de

6.44%

0.369

True

8b33e2a2

6.41%

0.664

False

+

Tabla 39. Trials con mayor CER.

+

Trial ID

CER

text_det_thresh

textline_orientation

f699b826

7.30%

0.285

False

34bfaecf

7.29%

0.030

True

8c1998de

6.44%

0.369

True

8b33e2a2

6.41%

0.664

False

Fuente: src/results/raytune_paddle_results_20260119_122609.csv.

-

 

Observación: Los peores resultados muestran variabilidad tanto en text_det_thresh como en textline_orientation, sin un patrón único dominante en este subconjunto de trials.

Comparación Baseline vs Optimizado

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%

+

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%

Fuente: docs/metrics/metrics_paddle.md.

-

 

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%

+

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%

Fuente: docs/metrics/metrics_paddle.md.

-

 

-
-

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

-

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

+

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

+

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

Fuente: docs/metrics/metrics_paddle.md.

-

 

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

La reducción de CER y WER implica menos correcciones manuales en el texto reconocido. En conjunto, los resultados muestran una mejora medible en precisión, aunque la generalización depende del tamaño y representatividad del subconjunto de optimización.

Tiempo de Ejecución

-
-

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

-

Métrica

Valor

Tiempo total del experimento

~5.0 minutos

Tiempo medio por trial

4.64 segundos

Tiempo medio por página

0.84 segundos

Variabilidad (std)

0.53 segundos/página

Páginas procesadas totales

320

+

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

+

Métrica

Valor

Tiempo total del experimento

~5.0 minutos

Tiempo medio por trial

4.64 segundos

Tiempo medio por página

0.84 segundos

Variabilidad (std)

0.53 segundos/página

Páginas procesadas totales

320

Fuente: src/results/raytune_paddle_results_20260119_122609.csv.

-

 

Observaciones:

1.   El tiempo por página (~0.84 segundos) corresponde a ejecución con GPU (RTX 3060).

@@ -5584,42 +5476,32 @@ Configuración óptima:

Los resultados obtenidos en las secciones anteriores requieren un análisis que trascienda los números individuales para comprender su significado práctico. En esta sección se consolidan los hallazgos del benchmark comparativo y la optimización de hiperparámetros, evaluando hasta qué punto se han cumplido los objetivos planteados y qué limitaciones condicionan la generalización de las conclusiones.

Resumen Consolidado de Resultados

Progresión del Rendimiento

-
-

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

-

Fase

Configuración

CER

Mejora vs baseline

Benchmark inicial

Baseline (5 páginas)

7.76%

-

Optimización (mejor trial)

Optimizada (5 páginas)

0.79%

89.8%

Validación final

Optimizada (45 páginas)

7.72%

12.8%

+

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

+

Fase

Configuración

CER

Mejora vs baseline

Benchmark inicial

Baseline (5 páginas)

7.76%

-

Optimización (mejor trial)

Optimizada (5 páginas)

0.79%

89.8%

Validación final

Optimizada (45 páginas)

7.72%

12.8%

Fuente: docs/metrics/metrics_paddle.md.

-

 

-
-

Figura 13. Evolución del CER a través del estudio

-

Evolución del CER a través del estudio

+

Figura 13. Evolución del CER a través del estudio

+

Evolución del CER a través del estudio

Fuente: docs/metrics/metrics_paddle.md.

-

 

Leyenda: El mejor trial alcanza CER 0.79% (objetivo cumplido). La validación sobre dataset completo muestra CER 7.72%, evidenciando sobreajuste al subconjunto de optimización.

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 secciones y estilos.

Comparación con Objetivo

-
-

Tabla 44. 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

+

Tabla 44. 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

Fuente: docs/metrics/metrics_paddle.md.

-

 

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.

Análisis Detallado de Hiperparámetros

Jerarquía de Importancia

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

-
-

Tabla 45. Ranking de importancia de hiperparámetros.

-

Rank

Parámetro

Pearson (CER)

Signo

Evidencia

1

use_doc_unwarping

0.879

Positivo

Correlación más alta con CER

2

use_doc_orientation_classify

-0.712

Negativo

Correlación alta con CER

3

textline_orientation

-0.535

Negativo

Correlación alta con CER

4

text_det_thresh

0.428

Positivo

Correlación moderada con CER

5

text_det_box_thresh

0.311

Positivo

Correlación moderada con CER

6

text_rec_score_thresh

-0.268

Negativo

Correlación moderada con CER

+

Tabla 45. Ranking de importancia de hiperparámetros.

+

Rank

Parámetro

Pearson (CER)

Signo

Evidencia

1

use_doc_unwarping

0.879

Positivo

Correlación más alta con CER

2

use_doc_orientation_classify

-0.712

Negativo

Correlación alta con CER

3

textline_orientation

-0.535

Negativo

Correlación alta con CER

4

text_det_thresh

0.428

Positivo

Correlación moderada con CER

5

text_det_box_thresh

0.311

Positivo

Correlación moderada con CER

6

text_rec_score_thresh

-0.268

Negativo

Correlación moderada con CER

Fuente: src/results/correlations/paddle_correlations.csv.

-

 

-
-

Figura 14. Ranking de importancia de hiperparámetros

-

Ranking de importancia de hiperparámetros

+

Figura 14. Ranking de importancia de hiperparámetros

+

Ranking de importancia de hiperparámetros

Fuente: src/results/correlations/paddle_correlations.csv.

-

 

Leyenda: Impacto relativo basado en |Pearson| (CER), normalizado respecto al valor máximo.

En términos de correlación lineal, use_doc_unwarping es el parámetro con mayor relación absoluta con el CER y su signo positivo indica que activarlo incrementa el error en este dataset. En cambio, use_doc_orientation_classify y textline_orientation presentan correlación negativa, lo que sugiere mejoras cuando están activados.

@@ -5645,25 +5527,19 @@ Configuración óptima:

Para documentos PDF digitales como los evaluados, este módulo es innecesario y puede introducir artefactos.

Análisis de Casos de Fallo

Clasificación de Errores

-
-

Tabla 46. 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

+

Tabla 46. 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

Fuente: Análisis cualitativo.

-

 

Patrones de Fallo por Tipo de Contenido

-
-

Tabla 47. Tasa de error por tipo de contenido (cualitativa).

-

Tipo de contenido

Nivel de error

Factor de riesgo

Párrafos de texto

Bajo

Bajo

Listas numeradas

Medio

Medio

Índice y encabezados

Medio

Medio

Encabezados + pie de página

Medio

Medio

Texto con cambios tipográficos

Medio

Medio

Listas con numeración densa

Alto

Alto

+

Tabla 47. Tasa de error por tipo de contenido (cualitativa).

+

Tipo de contenido

Nivel de error

Factor de riesgo

Párrafos de texto

Bajo

Bajo

Listas numeradas

Medio

Medio

Índice y encabezados

Medio

Medio

Encabezados + pie de página

Medio

Medio

Texto con cambios tipográficos

Medio

Medio

Listas con numeración densa

Alto

Alto

Fuente: Estimación cualitativa.

-

 

Comparación con Objetivos Específicos

-
-

Tabla 48. 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

+

Tabla 48. 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

Fuente: docs/metrics/metrics_paddle.md, src/results/correlations/paddle_correlations.csv, src/results/raytune_paddle_results_20260119_122609.csv.

-

 

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.

Limitaciones del Estudio

@@ -5682,11 +5558,9 @@ Configuración óptima:

Implicaciones Prácticas

Guía de Configuración Recomendada

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

-
-

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

-

Parámetro

Valor

Prioridad

Justificación

textline_orientation

True

Obligatorio

Crítico para documentos con secciones

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

+

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

+

Parámetro

Valor

Prioridad

Justificación

textline_orientation

True

Obligatorio

Crítico para documentos con secciones

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: src/results/raytune_paddle_results_20260119_122609.csv.

-

 

Cuándo Aplicar Esta Metodología

La optimización de hiperparámetros es recomendable cuando:

@@ -5722,27 +5596,21 @@ Configuración óptima:

Comparativa de Rendimiento CPU vs GPU

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 50. 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

+

Tabla 50. 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

Fuente: docs/metrics/metrics.md.

-

 

Nota: Los requisitos de entorno documentados por dependencias se detallan en docs/07_anexo_a.md, sección A.9.

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 51. 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.2 horas

~5.0 min

75x

+

Tabla 51. 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.2 horas

~5.0 min

75x

Fuente: src/raytune_paddle_subproc_results_20251207_192320.csv, src/results/raytune_paddle_results_20260119_122609.csv.

-

 

-
-

Figura 15. Tiempo de procesamiento: CPU vs GPU (segundos/página)

-

Tiempo de procesamiento: CPU vs GPU (segundos/página)

+

Figura 15. Tiempo de procesamiento: CPU vs GPU (segundos/página)

+

Tiempo de procesamiento: CPU vs GPU (segundos/página)

Fuente: src/raytune_paddle_subproc_results_20251207_192320.csv, src/results/raytune_paddle_results_20260119_122609.csv.

-

 

Leyenda: Aceleración de 82× con GPU. El procesamiento de una página pasa de 69.4s (CPU) a 0.84s (GPU).

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

@@ -5751,11 +5619,9 @@ Configuración óptima:

·     Producción con GPU (0.84s/página): Habilita procesamiento en tiempo real

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 52. 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

+

Tabla 52. 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

Fuente: docs/metrics/metrics.md.

-

 

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.

Conclusiones de la Validación GPU

@@ -5772,11 +5638,9 @@ y trabajo futuro

A lo largo

Conclusiones Generales

Los resultados obtenidos confirman que la optimización sistemática de hiperparámetros constituye una alternativa viable al fine-tuning para mejorar sistemas OCR preentrenados. La infraestructura dockerizada con aceleración GPU desarrollada en este trabajo no solo facilita la experimentación reproducible, sino que reduce drásticamente los tiempos de ejecución, haciendo viable la exploración exhaustiva de espacios de configuració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 53. Cumplimiento del objetivo de CER.

-

Métrica

Objetivo

Mejor Trial

Dataset Completo

Cumplimiento

CER

< 2%

0.79%

7.72%

✓ Parcial

+

Tabla 53. Cumplimiento del objetivo de CER.

+

Métrica

Objetivo

Mejor Trial

Dataset Completo

Cumplimiento

CER

< 2%

0.79%

7.72%

✓ Parcial

Fuente: docs/metrics/metrics_paddle.md.

-

 

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.

Cumplimiento de los Objetivos Específicos

@@ -5855,37 +5719,29 @@ major-latin;mso-bidi-font-family:"Calibri Light";mso-bidi-theme-font:major-latin

·     Dataset: Imágenes y textos de referencia utilizados

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

A.2 Estructura del Repositorio

-
-

Figura 16. Estructura del repositorio MastersThesis

-

Estructura del repositorio MastersThesis

+

Figura 16. Estructura del repositorio MastersThesis

+

Estructura del repositorio MastersThesis

Fuente: Elaboración propia.

-

 

-
-

Tabla 54. 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

src/results/correlations/

Correlaciones de hiperparámetros por servicio

thesis_output/

Documento TFM generado + figuras PNG

instructions/

Plantilla e instrucciones UNIR oficiales

+

Tabla 54. 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

src/results/correlations/

Correlaciones de hiperparámetros por servicio

thesis_output/

Documento TFM generado + figuras PNG

instructions/

Plantilla e instrucciones UNIR oficiales

Fuente: Repositorio del proyecto.

-

 

A.3 Requisitos de Software

-

Sistema de Desarrollo

-
-

Tabla 55. 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

+

Sistema de Desarrollo

+

Tabla 55. 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

Fuente: docs/metrics/metrics.md.

-

 

-

Dependencias

-

Dependencias

-
-

Tabla 56. Dependencias del proyecto.

-

Componente

Versión

PaddlePaddle

3.2.2

PaddleOCR

3.3.2

Ray Tune

2.52.1

Optuna

4.7.0

DocTR (python-doctr)

>= 0.8.0

EasyOCR

>= 1.7.0

Docker

Requerido para contenedores

NVIDIA Container Toolkit

Requerido para GPU

+

Dependencias

+

Dependencias

+

Tabla 56. Dependencias del proyecto.

+

Componente

Versión

PaddlePaddle

3.2.2

PaddleOCR

3.3.2

Ray Tune

2.52.1

Optuna

4.7.0

DocTR (python-doctr)

>= 0.8.0

EasyOCR

>= 1.7.0

Docker

Requerido para contenedores

NVIDIA Container Toolkit

Requerido para GPU

Fuente: src/paddle_ocr/requirements.txt, src/raytune/requirements.txt, src/doctr_service/requirements.txt, src/easyocr_service/requirements.txt, src/README.md.

-

 

A.4 Instrucciones de Ejecución de Servicios OCR

A.4 Instrucciones de Ejecución de Servicios OCR

-

PaddleOCR (Puerto 8002)

+

PaddleOCR (Puerto 8002)

Imágenes Docker:

·     GPU: seryus.ddns.net/unir/paddle-ocr-gpu

·     CPU: seryus.ddns.net/unir/paddle-ocr-cpu

@@ -5898,7 +5754,7 @@ docker compose up -d # CPU (más lento, 82x) docker compose -f docker-compose.cpu-registry.yml up -d -

DocTR (Puerto 8003)

+

DocTR (Puerto 8003)

Imagen Docker: seryus.ddns.net/unir/doctr-gpu(https://seryus.ddns.net/unir/-/packages/container/doctr-gpu/latest)

cd src/doctr_service
@@ -5906,7 +5762,7 @@ docker compose -f docker-compose.cpu-registry.yml up -d
# GPU docker compose up -d
-

EasyOCR (Puerto 8002)

+

EasyOCR (Puerto 8002)

Nota: EasyOCR utiliza el mismo puerto (8002) que PaddleOCR. No se pueden ejecutar simultáneamente. Por esta razón, existe un archivo docker-compose separado para EasyOCR.

Imagen Docker: seryus.ddns.net/unir/easyocr-gpu(https://seryus.ddns.net/unir/-/packages/container/easyocr-gpu/latest)

@@ -5915,7 +5771,7 @@ docker compose up -d # GPU (usar archivo separado para evitar conflicto de puerto) docker compose up -d
-

Verificar Estado del Servicio

+

Verificar Estado del Servicio

# Verificar salud del servicio
 curl http://localhost:8002/health
@@ -5924,7 +5780,7 @@ curl http://localhost:8002/health
 # {"status": "ok", "model_loaded": true, "gpu_name": "NVIDIA GeForce RTX 3060"}

A.5 Uso de la API OCR

-

Evaluar Dataset Completo

+

Evaluar Dataset Completo

# PaddleOCR - Evaluación completa
 curl -X POST http://localhost:8002/evaluate_full \
@@ -5934,7 +5790,7 @@ curl -X POST http://localhost:8002/evaluate_full \
     "save_output": true
   }'
-

Evaluar con Hiperparámetros Optimizados

+

Evaluar con Hiperparámetros Optimizados

# PaddleOCR con configuración óptima
 curl -X POST http://localhost:8002/evaluate_full \
@@ -5952,7 +5808,7 @@ curl -X POST http://localhost:8002/evaluate_full \
   }'

A.6 Ajuste de Hiperparámetros con Ray Tune

-

Ejecutar Ajuste

+

Ejecutar Ajuste

cd src
 
@@ -5970,47 +5826,37 @@ results = run_tuner(trainable, PADDLE_OCR_SEARCH_SPACE, num_samples=64)
 analyze_results(results, prefix='raytune_paddle', config_keys=PADDLE_OCR_CONFIG_KEYS)
 "
-

Servicios y Puertos

-
-

Tabla 57. 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

+

Servicios y Puertos

+

Tabla 57. 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

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.

A.7 Métricas de Rendimiento

Esta sección presenta los resultados completos de las evaluaciones comparativas y del ajuste de hiperparámetros realizado con Ray Tune sobre los tres servicios OCR evaluados.

-

Comparativa General de Servicios

-
-

Tabla 58. Comparativa de servicios OCR en dataset de 45 páginas (GPU RTX 3060).

-

Servicio

CER

WER

Tiempo/Página

Tiempo Total

VRAM

PaddleOCR (Mobile)

7.76%

11.62%

0.58s

32.0s

0.06 GB

EasyOCR

11.23%

36.36%

1.88s

88.5s

~2 GB

DocTR

12.06%

42.01%

0.50s

28.4s

~1 GB

+

Comparativa General de Servicios

+

Tabla 58. Comparativa de servicios OCR en dataset de 45 páginas (GPU RTX 3060).

+

Servicio

CER

WER

Tiempo/Página

Tiempo Total

VRAM

PaddleOCR (Mobile)

7.76%

11.62%

0.58s

32.0s

0.06 GB

EasyOCR

11.23%

36.36%

1.88s

88.5s

~2 GB

DocTR

12.06%

42.01%

0.50s

28.4s

~1 GB

Fuente: docs/metrics/metrics_paddle.md, docs/metrics/metrics_easyocr.md, docs/metrics/metrics_doctr.md.

-

 

Ganador: PaddleOCR (Mobile) - Mejor precisión (7.76% CER) con velocidad competitiva y mínimo consumo de VRAM.

-

Resultados de Ajuste de Hiperparámetros

+

Resultados de Ajuste de Hiperparámetros

Se ejecutaron 64 trials por servicio utilizando Ray Tune con Optuna sobre las páginas 5-10 del primer documento.

-
-

Tabla 59. Resultados del ajuste de hiperparámetros por servicio.

-

Servicio

CER Base

CER Ajustado

Mejora

Mejor Trial (5 páginas)

PaddleOCR

8.85%

7.72%

12.8%

0.79%

DocTR

12.06%

12.07%

0%

7.43%

EasyOCR

11.23%

11.14%

0.8%

5.83%

+

Tabla 59. Resultados del ajuste de hiperparámetros por servicio.

+

Servicio

CER Base

CER Ajustado

Mejora

Mejor Trial (5 páginas)

PaddleOCR

8.85%

7.72%

12.8%

0.79%

DocTR

12.06%

12.07%

0%

7.43%

EasyOCR

11.23%

11.14%

0.8%

5.83%

Fuente: docs/metrics/metrics_paddle.md, docs/metrics/metrics_easyocr.md, docs/metrics/metrics_doctr.md.

-

 

Nota sobre sobreajuste: La diferencia entre los resultados del mejor trial (subconjunto de 5 páginas) y el dataset completo (45 páginas) indica sobreajuste parcial a las páginas de ajuste. Un subconjunto más amplio mejoraría la generalización.

-

Distribución de trials por rango de CER (PaddleOCR)

-
-

Tabla 60. 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%

+

Distribución de trials por rango de CER (PaddleOCR)

+

Tabla 60. 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%

Fuente: src/results/raytune_paddle_results_20260119_122609.csv.

-

 

-
-

Figura 17. Distribución de trials por rango de CER (PaddleOCR)

-

Distribución de trials por rango de CER (PaddleOCR)

+

Figura 17. Distribución de trials por rango de CER (PaddleOCR)

+

Distribución de trials por rango de CER (PaddleOCR)

Fuente: src/results/raytune_paddle_results_20260119_122609.csv.

-

 

-

Configuración Óptima PaddleOCR

+

Configuración Óptima PaddleOCR

La siguiente configuración logró el mejor rendimiento en el ajuste de hiperparámetros:

{
@@ -6028,33 +5874,25 @@ analyze_results(results, prefix='raytune_paddle', config_keys=PADDLE_OCR_CONFIG_
 

·     use_doc_orientation_classify=true: Mejora detección de orientación

·     use_doc_unwarping=false: Innecesario para PDFs digitales

·     text_det_thresh bajo (0.0462): Detección más sensible mejora resultados

-

Rendimiento CPU vs GPU

-
-

Tabla 61. Comparación de rendimiento CPU vs GPU (PaddleOCR).

-

Métrica

CPU

GPU (RTX 3060)

Aceleración

Tiempo/Página

69.4s

0.84s

82x más rápido

45 páginas

~52 min

~38 seg

82x más rápido

+

Rendimiento CPU vs GPU

+

Tabla 61. Comparación de rendimiento CPU vs GPU (PaddleOCR).

+

Métrica

CPU

GPU (RTX 3060)

Aceleración

Tiempo/Página

69.4s

0.84s

82x más rápido

45 páginas

~52 min

~38 seg

82x más rápido

Fuente: Datos de tiempo CPU de src/raytune_paddle_subproc_results_20251207_192320.csv y tiempos de GPU en trials de ajuste. Elaboración propia.

-

 

-
-

Figura 18. Tiempo de procesamiento: CPU vs GPU (segundos/página)

-

Tiempo de procesamiento: CPU vs GPU (segundos/página)

+

Figura 18. Tiempo de procesamiento: CPU vs GPU (segundos/página)

+

Tiempo de procesamiento: CPU vs GPU (segundos/página)

Fuente: src/raytune_paddle_subproc_results_20251207_192320.csv y src/results/raytune_paddle_results_20260119_122609.csv. Leyenda: Aceleración de 82× con GPU. El procesamiento de una página pasa de 69.4s (CPU) a 0.84s (GPU).

-

 

-

Análisis de Errores por Servicio

-
-

Tabla 62. Tipos de errores identificados por servicio OCR.

-

Servicio

Fortalezas

Debilidades

¿Fine-tuning recomendado?

PaddleOCR

Preserva estructura, buen manejo de español

Errores menores de acentos

No (ya excelente)

DocTR

Más rápido

Pierde estructura, omite TODOS los diacríticos

Sí (para diacríticos)

EasyOCR

Modelo correcto para español

Caracteres espurios, confunde o/0

Sí (problemas del detector)

+

Análisis de Errores por Servicio

+

Tabla 62. Tipos de errores identificados por servicio OCR.

+

Servicio

Fortalezas

Debilidades

¿Fine-tuning recomendado?

PaddleOCR

Preserva estructura, buen manejo de español

Errores menores de acentos

No (ya excelente)

DocTR

Más rápido

Pierde estructura, omite TODOS los diacríticos

Sí (para diacríticos)

EasyOCR

Modelo correcto para español

Caracteres espurios, confunde o/0

Sí (problemas del detector)

Fuente: Análisis manual del debugset. Elaboración propia.

-

 

-

Archivos de Resultados

+

Archivos de Resultados

Los resultados crudos de los 64 trials por servicio están disponibles en el repositorio:

-
-

Tabla 63. Ubicación de archivos de resultados.

-

Servicio

Archivo CSV

PaddleOCR

src/results/raytune_paddle_results_20260119_122609.csv

DocTR

src/results/raytune_doctr_results_20260119_121445.csv

EasyOCR

src/results/raytune_easyocr_results_20260119_120204.csv

+

Tabla 63. Ubicación de archivos de resultados.

+

Servicio

Archivo CSV

PaddleOCR

src/results/raytune_paddle_results_20260119_122609.csv

DocTR

src/results/raytune_doctr_results_20260119_121445.csv

EasyOCR

src/results/raytune_easyocr_results_20260119_120204.csv

Fuente: Elaboración propia.

-

 

A.8 Fuentes de precios cloud

Las tablas de costos cloud se basan en las páginas oficiales de precios. Se consultaron en enero de 2026.