color:#0098CD;mso-fareast-language:EN-US">Optimización de Hiperparámetros OCR
con Ray Tune para Documentos Académicos en </span></a><spanclass="GramE"><spanstyle="mso-bookmark:_Hlk216726907"><spanlang="ES"style="font-size:26.0pt;
<pclass="Ttulondices"><spanlang="ES">Resumen </span></p><pclass="MsoNormal"><spanlang="ES">El presente Trabajo Fin de Máster aborda la optimización de sistemas de Reconocimiento Óptico de Caracteres (OCR) basados en inteligencia artificial para documentos en español. El objetivo principal es identificar la configuración óptima de hiperparámetros que maximice la precisión del reconocimiento de texto sin requerir fine-tuning de los modelos base.
Se realizó un estudio comparativo de tres soluciones OCR de código abierto: EasyOCR, PaddleOCR (PP-OCRv5) y DocTR, evaluando su rendimiento mediante las métricas estándar CER (Character Error Rate) y WER (Word Error Rate) sobre un corpus de 45 páginas de documentos académicos en español. Tras identificar PaddleOCR como la solución más prometedora, se procedió a una optimización sistemática de hiperparámetros utilizando Ray Tune con el algoritmo de búsqueda Optuna, ejecutando 64 configuraciones diferentes con aceleración GPU (NVIDIA RTX 3060).
Los resultados demuestran que la optimización de hiperparámetros logró mejoras significativas: el mejor trial individual alcanzó un CER de 0.79% (precisión del 99.21%), cumpliendo el objetivo de CER < 2%. Al validar la configuración optimizada sobre el dataset completo de 45 páginas, se obtuvo una mejora del 12.8% en CER (de 8.85% a 7.72%). El hallazgo más relevante fue que el parámetro `textline_orientation` (clasificación de orientación de línea de texto) tiene un impacto crítico en el rendimiento. Adicionalmente, se identificó que el umbral de detección (`text_det_thresh`) presenta una correlación negativa moderada (-0.52) con el error.
Este trabajo demuestra que la optimización de hiperparámetros es una alternativa viable al fine-tuning, especialmente útil cuando se dispone de modelos preentrenados para el idioma objetivo. La infraestructura dockerizada desarrollada permite reproducir los experimentos y facilita la evaluación sistemática de configuraciones OCR.</span></p>
<pclass="MsoNormal"><b><spanlang="ES">Palabras clave:</span></b><spanlang="ES"> OCR, Reconocimiento Óptico de Caracteres, PaddleOCR, Optimización de Hiperparámetros, Ray Tune, Procesamiento de Documentos, Inteligencia Artificial</span></p>
<pclass="Ttulondices"><spanstyle="mso-bookmark:_Toc437509152"><spanclass="SpellE"><spanlang="ES">Abstract</span></span></span></p><pclass="MsoNormal"><spanlang="EN-US">This Master's Thesis addresses the optimization of Artificial Intelligence-based Optical Character Recognition (OCR) systems for Spanish documents. The main objective is to identify the optimal hyperparameter configuration that maximizes text recognition accuracy without requiring fine-tuning of the base models.
A comparative study of three open-source OCR solutions was conducted: EasyOCR, PaddleOCR (PP-OCRv5), and DocTR, evaluating their performance using standard CER (Character Error Rate) and WER (Word Error Rate) metrics on a corpus of 45 pages of academic documents in Spanish. After identifying PaddleOCR as the most promising solution, systematic hyperparameter optimization was performed using Ray Tune with the Optuna search algorithm, executing 64 different configurations with GPU acceleration (NVIDIA RTX 3060).
Results demonstrate that hyperparameter optimization achieved significant improvements: the best individual trial reached a CER of 0.79% (99.21% accuracy), meeting the CER < 2% objective. When validating the optimized configuration on the full 45-page dataset, a 12.8% CER improvement was obtained (from 8.85% to 7.72%). The most relevant finding was that the `textline_orientation` parameter (text line orientation classification) has a critical impact on performance. Additionally, the detection threshold (`text_det_thresh`) was found to have a moderate negative correlation (-0.52) with error.
This work demonstrates that hyperparameter optimization is a viable alternative to fine-tuning, especially useful when pre-trained models for the target language are available. The dockerized infrastructure developed enables experiment reproducibility and facilitates systematic evaluation of OCR configurations.</span></p>
<pclass="MsoToc2"style="tab-stops:48.0pt right dotted 453.05pt"><spanlang="ES"><ahref="#_Toc160619806"><spanstyle="mso-no-proof:yes">1.1.</span><spanstyle='mso-fareast-font-family:"TimesNewRoman";mso-fareast-theme-font:minor-fareast;
mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
<pclass="MsoToc2"style="tab-stops:48.0pt right dotted 453.05pt"><spanlang="ES"><ahref="#_Toc160619807"><spanstyle="mso-no-proof:yes">1.2.</span><spanstyle='mso-fareast-font-family:"TimesNewRoman";mso-fareast-theme-font:minor-fareast;
mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
<pclass="MsoToc2"style="tab-stops:48.0pt right dotted 453.05pt"><spanlang="ES"><ahref="#_Toc160619808"><spanstyle="mso-no-proof:yes">1.3.</span><spanstyle='mso-fareast-font-family:"TimesNewRoman";mso-fareast-theme-font:minor-fareast;
mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
<pclass="MsoToc1"style="tab-stops:22.0pt right dotted 453.05pt"><spanlang="ES"><ahref="#_Toc160619809"><spanstyle="mso-no-proof:yes">2.</span><spanstyle='mso-fareast-font-family:"TimesNewRoman";mso-fareast-theme-font:minor-fareast;
mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
<pclass="MsoToc2"style="tab-stops:48.0pt right dotted 453.05pt"><spanlang="ES"><ahref="#_Toc160619810"><spanstyle="mso-no-proof:yes">2.1.</span><spanstyle='mso-fareast-font-family:"TimesNewRoman";mso-fareast-theme-font:minor-fareast;
mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
<pclass="MsoToc2"style="tab-stops:48.0pt right dotted 453.05pt"><spanlang="ES"><ahref="#_Toc160619811"><spanstyle="mso-no-proof:yes">2.2.</span><spanstyle='mso-fareast-font-family:"TimesNewRoman";mso-fareast-theme-font:minor-fareast;
mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
<pclass="MsoToc2"style="tab-stops:48.0pt right dotted 453.05pt"><spanlang="ES"><ahref="#_Toc160619812"><spanstyle="mso-no-proof:yes">2.3.</span><spanstyle='mso-fareast-font-family:"TimesNewRoman";mso-fareast-theme-font:minor-fareast;
mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
<pclass="MsoToc1"style="tab-stops:22.0pt right dotted 453.05pt"><spanlang="ES"><ahref="#_Toc160619813"><spanstyle="mso-no-proof:yes">3.</span><spanstyle='mso-fareast-font-family:"TimesNewRoman";mso-fareast-theme-font:minor-fareast;
mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
<pclass="MsoToc2"style="tab-stops:48.0pt right dotted 453.05pt"><spanlang="ES"><ahref="#_Toc160619814"><spanstyle="mso-no-proof:yes">3.1.</span><spanstyle='mso-fareast-font-family:"TimesNewRoman";mso-fareast-theme-font:minor-fareast;
mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
<pclass="MsoToc2"style="tab-stops:48.0pt right dotted 453.05pt"><spanlang="ES"><ahref="#_Toc160619815"><spanstyle="mso-no-proof:yes">3.2.</span><spanstyle='mso-fareast-font-family:"TimesNewRoman";mso-fareast-theme-font:minor-fareast;
mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
<pclass="MsoToc2"style="tab-stops:48.0pt right dotted 453.05pt"><spanlang="ES"><ahref="#_Toc160619816"><spanstyle="mso-no-proof:yes">3.3.</span><spanstyle='mso-fareast-font-family:"TimesNewRoman";mso-fareast-theme-font:minor-fareast;
mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
<pclass="MsoToc1"style="tab-stops:22.0pt right dotted 453.05pt"><spanlang="ES"><ahref="#_Toc160619817"><spanstyle='font-family:"CalibriLight",sans-serif;
<pclass="MsoToc1"style="tab-stops:22.0pt right dotted 453.05pt"><spanlang="ES"><ahref="#_Toc160619818"><spanstyle="mso-no-proof:yes">5.</span><spanstyle='mso-fareast-font-family:"TimesNewRoman";mso-fareast-theme-font:minor-fareast;
mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
<pclass="MsoToc2"style="tab-stops:48.0pt right dotted 453.05pt"><spanlang="ES"><ahref="#_Toc160619819"><spanstyle="mso-no-proof:yes">5.1.</span><spanstyle='mso-fareast-font-family:"TimesNewRoman";mso-fareast-theme-font:minor-fareast;
mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
<pclass="MsoToc2"style="tab-stops:48.0pt right dotted 453.05pt"><spanlang="ES"><ahref="#_Toc160619820"><spanstyle="mso-no-proof:yes">5.2.</span><spanstyle='mso-fareast-font-family:"TimesNewRoman";mso-fareast-theme-font:minor-fareast;
mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
<pclass="MsoToc1"style="tab-stops:60.0pt right dotted 453.05pt"><spanlang="ES"><ahref="#_Toc160619822"><spanstyle="mso-no-proof:yes">Anexo A.</span><spanstyle='mso-fareast-font-family:"TimesNewRoman";mso-fareast-theme-font:minor-fareast;
mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
"Times New Roman";mso-fareast-language:ES'><spanstyle='mso-element:field-end'></span></span><![endif]--><spanlang="ES"><brclear="all"style="page-break-before:always"/>
mso-bidi-font-family:"Calibri Light";mso-bidi-theme-font:major-latin'><spanstyle="mso-list:Ignore">1.<spanstyle='font:7.0pt "Times New Roman"'>
</span></span></span><?endif?><spanlang="ES"style="text-transform:none">Introducción</span></span></span></span></a><spanstyle="mso-bookmark:_Toc14106979"><spanstyle="mso-bookmark:_Toc437515557"><spanlang="ES"style="text-transform:none"></span></span></span></h1><pclass="MsoNormal"><spanlang="ES">Este capítulo presenta la motivación del trabajo, identificando el problema a resolver y justificando su relevancia. Se plantea la pregunta de investigación central y se describe la estructura del documento.</span></p>
<pclass="MsoNormal"><spanlang="ES">El Reconocimiento Óptico de Caracteres (OCR) es una tecnología fundamental en la era de la digitalización documental. Su capacidad para convertir imágenes de texto en datos editables y procesables ha transformado sectores como la administración pública, el ámbito legal, la banca y la educación. Según estimaciones del sector, el mercado global de OCR alcanzó los 13.4 mil millones de dólares en 2023, con proyecciones de crecimiento continuo impulsado por la transformación digital empresarial (Grand View Research, 2023). Sin embargo, a pesar de los avances significativos impulsados por el aprendizaje profundo, la implementación práctica de sistemas OCR de alta precisión sigue presentando desafíos considerables.</span></p>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">El contexto de la digitalización documental</span></h3>
<pclass="MsoNormal"><spanlang="ES">La digitalización de documentos ha pasado de ser una opción a una necesidad estratégica para organizaciones de todos los tamaños. Los beneficios son múltiples: reducción del espacio físico de almacenamiento, facilidad de búsqueda y recuperación, preservación del patrimonio documental, y habilitación de flujos de trabajo automatizados. Sin embargo, la mera conversión de papel a imagen digital no aprovecha plenamente estas ventajas; es necesario extraer el texto contenido en los documentos para permitir su indexación, análisis y procesamiento automatizado.</span></p>
<pclass="MsoNormal"><spanlang="ES">El OCR actúa como puente entre el mundo físico del documento impreso y el mundo digital del texto procesable. Su precisión determina directamente la calidad de los procesos downstream: un error de reconocimiento en un nombre propio puede invalidar una búsqueda; un dígito mal reconocido en una factura puede causar discrepancias contables; una palabra mal interpretada en un contrato puede alterar su significado legal.</span></p>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">Desafíos específicos del español</span></h3>
<pclass="MsoNormal"><spanlang="ES">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.</span></p>
<pclass="MsoNormal"><spanlang="ES">La Tabla 1 resume los principales desafíos lingüísticos del OCR en español:</span></p>
<aname="_Ref_Tab1"></a><pclass="MsoCaption"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->1<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Desafíos lingüísticos específicos del OCR en español.</span></i></p>
<pclass="MsoNormal"><spanlang="ES">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.</span></p>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">La brecha entre investigación y práctica</span></h3>
<pclass="MsoNormal"><spanlang="ES">Los modelos OCR basados en redes neuronales profundas, como los empleados en PaddleOCR, EasyOCR o DocTR, ofrecen un rendimiento impresionante en benchmarks estándar. PaddleOCR, por ejemplo, reporta tasas de precisión superiores al 97% en conjuntos de datos como ICDAR 2015 (Du et al., 2020). No obstante, estos resultados en condiciones controladas no siempre se trasladan a documentos del mundo real.</span></p>
<pclass="MsoNormal"><spanlang="ES">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.</span></p>
<pclass="MsoNormal"><spanlang="ES">La Tabla 2 ilustra los requisitos típicos para diferentes estrategias de mejora de OCR:</span></p>
<aname="_Ref_Tab2"></a><pclass="MsoCaption"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->2<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Comparación de estrategias de mejora de modelos OCR.</span></i></p>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">La oportunidad: optimización sin fine-tuning</span></h3>
<pclass="MsoNormal"><spanlang="ES">La presente investigación surge de una necesidad práctica: optimizar un sistema OCR para documentos académicos en español sin disponer de recursos GPU para realizar fine-tuning. Esta restricción, lejos de ser una limitación excepcional, representa la realidad de muchos entornos académicos y empresariales donde el acceso a infraestructura de cómputo avanzada es limitado.</span></p>
<pclass="MsoNormal"><spanlang="ES">La hipótesis central de este trabajo es que los modelos OCR preentrenados contienen capacidades latentes que pueden activarse mediante la configuración adecuada de sus hiperparámetros de inferencia. Parámetros como los umbrales de detección de texto, las opciones de preprocesamiento de imagen, y los filtros de confianza de reconocimiento pueden tener un impacto significativo en el rendimiento final, y su optimización sistemática puede aproximarse a los beneficios del fine-tuning sin sus costes asociados.</span></p>
<pclass="MsoNormal"><spanlang="ES">Esta oportunidad se ve reforzada por la disponibilidad de frameworks modernos de optimización de hiperparámetros como Ray Tune (Liaw et al., 2018) y algoritmos de búsqueda eficientes como Optuna (Akiba et al., 2019), que permiten explorar espacios de configuración de manera sistemática y eficiente.</span></p>
<h2style="mso-list:l22 level2 lfo18"><spanlang="ES"style="text-transform:none">Planteamiento del trabajo</span></h2>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">Formulación del problema</span></h3>
<pclass="MsoNormal"><spanlang="ES">El problema central que aborda este trabajo puede formularse de la siguiente manera:</span></p>
<pclass="MsoNormal"style="margin-left:2cm;margin-right:1cm"><i><spanlang="ES">¿Es posible mejorar significativamente el rendimiento de modelos OCR preentrenados para documentos en español mediante la optimización sistemática de hiperparámetros, sin requerir fine-tuning ni recursos GPU?</span></i></p>
<pclass="MsoNormal"><spanlang="ES">Este planteamiento parte de una observación fundamental: los sistemas OCR modernos exponen múltiples parámetros configurables que afectan su comportamiento durante la inferencia. Estos parámetros incluyen umbrales de detección, opciones de preprocesamiento, y filtros de calidad. En la práctica habitual, estos parámetros se dejan en sus valores por defecto, asumiendo que fueron optimizados por los desarrolladores del modelo. Sin embargo, los valores por defecto representan compromisos generales que pueden no ser óptimos para dominios específicos.</span></p>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">Preguntas de investigación</span></h3>
<pclass="MsoNormal"><spanlang="ES">Este planteamiento se descompone en las siguientes cuestiones específicas:</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>PI1. Selección de modelo base</b>: ¿Cuál de las soluciones OCR de código abierto disponibles (EasyOCR, PaddleOCR, DocTR) ofrece el mejor rendimiento base para documentos en español?</span></p>
<pclass="MsoNormal"><spanlang="ES">Esta pregunta es fundamental porque la elección del modelo base determinará el punto de partida para la optimización. Un modelo con mejor rendimiento inicial puede ofrecer mayor margen de mejora o, alternativamente, estar ya cerca de su límite de optimización.</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>PI2. Impacto de hiperparámetros</b>: ¿Qué hiperparámetros del pipeline OCR tienen mayor influencia en las métricas de error (CER, WER)?</span></p>
<pclass="MsoNormal"><spanlang="ES">Identificar los parámetros más influyentes permite focalizar el esfuerzo de optimización y proporciona insights sobre el funcionamiento interno del sistema. Parámetros con alta correlación con las métricas de error son candidatos prioritarios para ajuste.</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>PI3. Optimización automatizada</b>: ¿Puede un proceso de búsqueda automatizada de hiperparámetros (mediante Ray Tune/Optuna) encontrar configuraciones que superen significativamente los valores por defecto?</span></p>
<pclass="MsoNormal"><spanlang="ES">Esta pregunta evalúa la viabilidad práctica de la metodología propuesta. "Significativamente" se define operacionalmente como una reducción del CER de al menos 50% respecto al baseline, un umbral que representaría una mejora sustancial en la calidad del texto reconocido.</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>PI4. Viabilidad práctica</b>: ¿Son los tiempos de inferencia y los recursos requeridos compatibles con un despliegue en entornos con recursos limitados?</span></p>
<pclass="MsoNormal"><spanlang="ES">Una solución técnicamente superior pero impracticable tiene valor limitado. Esta pregunta ancla la investigación en consideraciones del mundo real.</span></p>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">Alcance y delimitación</span></h3>
<pclass="MsoNormal"><spanlang="ES">Este trabajo se centra específicamente en:</span></p>
<aname="_Ref_Tab3"></a><pclass="MsoCaption"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->3<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Delimitación del alcance del trabajo.</span></i></p>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">Relevancia y beneficiarios</span></h3>
<pclass="MsoNormal"><spanlang="ES">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:</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Investigadores académicos</b>: Quienes procesan grandes volúmenes de documentos para análisis de contenido, revisiones sistemáticas de literatura, o estudios bibliométricos. Un OCR más preciso reduce el tiempo de corrección manual y mejora la calidad de los análisis downstream.</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Instituciones educativas</b>: Universidades y centros de investigación que digitalizan archivos históricos, actas administrativas, o materiales docentes. La preservación del patrimonio documental requiere transcripciones precisas.</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Pequeñas y medianas empresas</b>: Organizaciones que automatizan flujos documentales (facturas, contratos, correspondencia) sin presupuesto para soluciones enterprise o infraestructura GPU.</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Desarrolladores de software</b>: Quienes integran OCR en aplicaciones con restricciones de recursos, como dispositivos móviles o servidores compartidos, y necesitan maximizar el rendimiento sin costes adicionales de hardware.</span></p>
<h2style="mso-list:l22 level2 lfo18"><spanlang="ES"style="text-transform:none">Estructura del trabajo</span></h2>
<pclass="MsoNormal"><spanlang="ES">El presente documento se organiza en los siguientes capítulos:</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Capítulo 2 - Contexto y Estado del Arte</b>: Se presenta una revisión de las tecnologías OCR basadas en aprendizaje profundo, incluyendo las arquitecturas de detección y reconocimiento de texto, así como los trabajos previos en optimización de estos sistemas.</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Capítulo 3 - Objetivos y Metodología</b>: Se definen los objetivos SMART del trabajo y se describe la metodología experimental seguida, incluyendo la preparación del dataset, las métricas de evaluación y el proceso de optimización con Ray Tune.</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Capítulo 4 - Desarrollo Específico de la Contribución</b>: Este capítulo presenta el desarrollo completo del estudio comparativo y la optimización de hiperparámetros de sistemas OCR, estructurado en tres secciones: (4.1) planteamiento de la comparativa con la evaluación de EasyOCR, PaddleOCR y DocTR; (4.2) desarrollo de la comparativa con la optimización de hiperparámetros mediante Ray Tune; y (4.3) discusión y análisis de resultados.</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Capítulo 5 - Conclusiones y Trabajo Futuro</b>: Se resumen las contribuciones del trabajo, se discute el grado de cumplimiento de los objetivos y se proponen líneas de trabajo futuro.</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Anexos</b>: Se incluye el enlace al repositorio de código fuente y datos, así como tablas completas de resultados experimentales.</span></p><h1style="mso-list:l22 level1 lfo18"><spanstyle="mso-bookmark:_Toc14106979"><spanstyle="mso-bookmark:_Toc437515557"><aname="_Toc147741195"></a><aname="_Toc160619809"><spanstyle="mso-bookmark:_Toc147741195"><?if !supportLists?><spanlang="ES"style='mso-fareast-font-family:"CalibriLight";mso-fareast-theme-font:
y estado del arte</span></span></a></span></span><spanstyle="mso-bookmark:
_Toc14106979"><spanstyle="mso-bookmark:_Toc437515557"><spanlang="ES"style="text-transform:none"><o:p></o:p></span></span></span></h1><pclass="MsoNormal"><spanlang="ES">Este capítulo presenta el marco teórico y tecnológico en el que se desarrolla el presente trabajo. Se revisan los fundamentos del Reconocimiento Óptico de Caracteres (OCR), la evolución de las técnicas basadas en aprendizaje profundo, las principales soluciones de código abierto disponibles y los trabajos previos relacionados con la optimización de sistemas OCR.</span></p>
<h2style="mso-list:l22 level2 lfo18"><spanlang="ES"style="text-transform:none">Contexto del problema</span></h2>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">Definición y Evolución Histórica del OCR</span></h3>
<pclass="MsoNormal"><spanlang="ES">El Reconocimiento Óptico de Caracteres (OCR) es el proceso de conversión de imágenes de texto manuscrito, mecanografiado o impreso en texto codificado digitalmente. Esta tecnología permite la digitalización masiva de documentos, facilitando su búsqueda, edición y almacenamiento electrónico. La tecnología OCR ha evolucionado significativamente desde sus orígenes en la década de 1950, atravesando cuatro generaciones claramente diferenciadas:</span></p>
<h4><spanlang="ES">Primera Generación (1950-1970): Sistemas basados en plantillas</span></h4>
<pclass="MsoNormal"><spanlang="ES">Los primeros sistemas OCR surgieron en la década de 1950 con el objetivo de automatizar la lectura de documentos bancarios y postales. Estos sistemas utilizaban técnicas de correspondencia de plantillas (<i>template matching</i>), donde cada carácter de entrada se comparaba píxel a píxel con un conjunto predefinido de plantillas (Mori et al., 1992).</span></p>
<pclass="MsoNormal"><spanlang="ES">Las principales limitaciones de esta generación incluían:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Dependencia de fuentes tipográficas específicas (OCR-A, OCR-B)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Incapacidad para manejar variaciones en tamaño, rotación o estilo</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Alto coste computacional para la época</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Sensibilidad extrema al ruido y degradación de la imagen</span></p>
<pclass="MsoNormal"><spanlang="ES">A pesar de sus limitaciones, estos sistemas sentaron las bases para el desarrollo posterior del campo y demostraron la viabilidad comercial del reconocimiento automático de texto.</span></p>
<h4><spanlang="ES">Segunda Generación (1970-1990): Extracción de características</span></h4>
<pclass="MsoNormal"><spanlang="ES">La segunda generación introdujo técnicas más sofisticadas basadas en la extracción de características geométricas y estructurales de los caracteres. En lugar de comparar imágenes completas, estos sistemas extraían propiedades como:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Número y posición de trazos</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Proporciones geométricas (altura, anchura, relación de aspecto)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Momentos estadísticos de la distribución de píxeles</span></p>
<pclass="MsoNormal"><spanlang="ES">Los clasificadores estadísticos, como el análisis discriminante lineal y los k-vecinos más cercanos (k-NN), se utilizaban para asignar cada vector de características a una clase de carácter (Trier et al., 1996). Esta aproximación permitió mayor robustez frente a variaciones tipográficas, aunque seguía requiriendo un diseño manual cuidadoso de las características a extraer.</span></p>
<h4><spanlang="ES">Tercera Generación (1990-2010): Redes neuronales y modelos probabilísticos</span></h4>
<pclass="MsoNormal"><spanlang="ES">La tercera generación marcó la introducción de técnicas de aprendizaje automático más avanzadas. Los Modelos Ocultos de Markov (HMM) se convirtieron en el estándar para el reconocimiento de secuencias de caracteres, especialmente en el reconocimiento de escritura manuscrita (Plamondon & Srihari, 2000).</span></p>
<pclass="MsoNormal"><spanlang="ES">Las Redes Neuronales Artificiales (ANN) también ganaron popularidad en esta época, con arquitecturas como el Perceptrón Multicapa (MLP) demostrando capacidades superiores de generalización. El trabajo seminal de LeCun et al. (1998) con las redes convolucionales (CNN) para el reconocimiento de dígitos manuscritos (dataset MNIST) estableció los fundamentos para la siguiente revolución.</span></p>
<pclass="MsoNormal"><spanlang="ES">Las características de esta generación incluían:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Aprendizaje automático de características discriminativas</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Modelado probabilístico de secuencias de caracteres</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Mayor robustez frente a ruido y degradación</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Capacidad de incorporar conocimiento lingüístico mediante modelos de lenguaje</span></p>
<pclass="MsoNormal"><spanlang="ES">La cuarta y actual generación está dominada por arquitecturas de aprendizaje profundo que han superado ampliamente el rendimiento de los métodos tradicionales. Los avances clave incluyen:</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Redes Convolucionales Profundas (Deep CNNs)</b>: Arquitecturas como VGGNet, ResNet e Inception permiten la extracción automática de características jerárquicas a múltiples escalas, eliminando la necesidad de diseño manual de características (Krizhevsky et al., 2012).</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Redes Recurrentes (RNN/LSTM)</b>: Las redes Long Short-Term Memory (LSTM) permiten modelar dependencias a largo plazo en secuencias de caracteres, siendo fundamentales para el reconocimiento de texto de longitud variable (Graves et al., 2009).</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Mecanismos de Atención y Transformers</b>: La arquitectura Transformer (Vaswani et al., 2017) y sus variantes han revolucionado el procesamiento de secuencias, permitiendo capturar relaciones globales sin las limitaciones de las RNN. Modelos como TrOCR (Li et al., 2023) representan el estado del arte actual.</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Connectionist Temporal Classification (CTC)</b>: 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.</span></p>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">Pipeline Moderno de OCR</span></h3>
<pclass="MsoNormal"><spanlang="ES">Los sistemas OCR modernos siguen típicamente un pipeline de dos etapas principales, precedidas opcionalmente por una fase de preprocesamiento:</span></p>
<aname="_Ref_Fig1"></a><pclass="MsoCaption"style="text-align:center"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Figura <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Figura \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->1<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Pipeline de un sistema OCR moderno</span></i></p>
<pclass="MsoNormal"style="text-align:center"><spanlang="ES"><imgalt="Pipeline de un sistema OCR moderno"src="figures/figura_1.png"style="width:16cm;display:block;margin:0 auto"width="604"/></span></p>
<h4><spanlang="ES">Etapa de Preprocesamiento</span></h4>
<pclass="MsoNormal"><spanlang="ES">Antes de la detección, muchos sistemas aplican técnicas de preprocesamiento para mejorar la calidad de la imagen de entrada:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>Binarización</b>: Conversión a imagen binaria (blanco/negro) mediante técnicas como Otsu o Sauvola</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>Corrección de inclinación (deskewing)</b>: Alineamiento horizontal del texto</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>Eliminación de ruido</b>: Filtros morfológicos y de suavizado</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>Normalización de contraste</b>: Mejora de la legibilidad mediante ecualización de histograma</span></p>
<h4><spanlang="ES">Etapa 1: Detección de Texto (Text Detection)</span></h4>
<pclass="MsoNormal"><spanlang="ES">La detección de texto tiene como objetivo localizar todas las regiones de una imagen que contienen texto. Esta tarea es particularmente desafiante debido a la variabilidad en:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Tamaño y orientación del texto</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Fondos complejos y oclusiones parciales</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Texto curvo o deformado</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Múltiples idiomas y scripts en una misma imagen</span></p>
<pclass="MsoNormal"><spanlang="ES">Las arquitecturas más utilizadas para detección de texto incluyen:</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>EAST (Efficient and Accurate Scene Text Detector)</b>: 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.</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>CRAFT (Character Region Awareness for Text Detection)</b>: 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.</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>DB (Differentiable Binarization)</b>: 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.</span></p>
<aname="_Ref_Tab4"></a><pclass="MsoCaption"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->4<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Comparativa de arquitecturas de detección de texto.</span></i></p>
<h4><spanlang="ES">Etapa 2: Reconocimiento de Texto (Text Recognition)</span></h4>
<pclass="MsoNormal"><spanlang="ES">Una vez detectadas las regiones de texto, la etapa de reconocimiento transcribe el contenido visual a texto digital. Las arquitecturas predominantes son:</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>CRNN (Convolutional Recurrent Neural Network)</b>: Propuesta por Shi et al. (2016), CRNN combina una CNN para extracción de características visuales con una RNN bidireccional (típicamente LSTM) para modelado de secuencias, entrenada con pérdida CTC. Esta arquitectura estableció el paradigma encoder-decoder que domina el campo.</span></p>
<pclass="MsoNormal"><spanlang="ES">La arquitectura CRNN consta de tres componentes:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Capas convolucionales</b>: Extraen características visuales de la imagen de entrada</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">2.<spanstyle="font-size:7pt"></span><b>Capas recurrentes</b>: Modelan las dependencias secuenciales entre características</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">3.<spanstyle="font-size:7pt"></span><b>Capa de transcripción</b>: Convierte las predicciones de la RNN en secuencias de caracteres mediante CTC</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>SVTR (Scene-Text Visual Transformer Recognition)</b>: 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.</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Arquitecturas con Atención</b>: 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.</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>TrOCR (Transformer-based OCR)</b>: 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.</span></p>
<aname="_Ref_Tab5"></a><pclass="MsoCaption"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->5<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Comparativa de arquitecturas de reconocimiento de texto.</span></i></p>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">Métricas de Evaluación</span></h3>
<pclass="MsoNormal"><spanlang="ES">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.</span></p>
<h4><spanlang="ES">Distancia de Levenshtein</span></h4>
<pclass="MsoNormal"><spanlang="ES">La distancia de Levenshtein (Levenshtein, 1966) entre dos cadenas es el número mínimo de operaciones de edición (inserción, eliminación, sustitución) necesarias para transformar una cadena en otra. Formalmente, para dos cadenas <i>a</i> y <i>b</i>:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">S = número de sustituciones de caracteres</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">D = número de eliminaciones de caracteres</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">I = número de inserciones de caracteres</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">N = número total de caracteres en el texto de referencia</span></p>
<pclass="MsoNormal"><spanlang="ES">Un CER del 1% indica que, en promedio, 1 de cada 100 caracteres contiene un error. Para aplicaciones críticas como:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>Documentos financieros</b>: Se requiere CER < 0.1%</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>Documentos médicos</b>: Se requiere CER < 0.5%</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>Documentos académicos</b>: CER < 2% es aceptable</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>Búsqueda y archivo</b>: CER < 5% puede ser suficiente</span></p>
<pclass="MsoNormal"><spanlang="ES">El WER mide el error a nivel de palabra, utilizando la misma fórmula pero considerando palabras como unidades:</span></p>
<pclass="MsoNormal"><spanlang="ES">El WER es generalmente mayor que el CER, ya que un solo error de carácter puede invalidar una palabra completa. La relación típica es WER ≈ 2-3 × CER para texto en español.</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Precision y Recall a nivel de palabra</b>: Útiles cuando se evalúa la capacidad del sistema para detectar palabras específicas.</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Bag-of-Words Accuracy</b>: Mide la proporción de palabras correctamente reconocidas independientemente de su orden.</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>BLEU Score</b>: Adaptado de traducción automática, mide la similitud entre el texto predicho y la referencia considerando n-gramas.</span></p>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">Particularidades del OCR para el Idioma Español</span></h3>
<pclass="MsoNormal"><spanlang="ES">El español, como lengua romance, presenta características específicas que impactan el rendimiento de los sistemas OCR:</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Caracteres especiales</b>: El español incluye caracteres no presentes en el alfabeto inglés básico:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">La letra eñe (ñ, Ñ)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Vocales acentuadas (á, é, í, ó, ú, Á, É, Í, Ó, Ú)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Diéresis sobre u (ü, Ü)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Signos de puntuación invertidos (¿, ¡)</span></p>
<pclass="MsoNormal"><spanlang="ES">Estos caracteres requieren que los modelos OCR incluyan dichos símbolos en su vocabulario de salida y que el entrenamiento incluya suficientes ejemplos de cada uno.</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Diacríticos y acentos</b>: Los acentos gráficos del español son elementos pequeños que pueden confundirse fácilmente con ruido, artefactos de imagen o signos de puntuación. La distinción entre vocales acentuadas y no acentuadas es crucial para el significado (e.g., "él" vs "el", "más" vs "mas").</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Longitud de palabras</b>: Las palabras en español tienden a ser más largas que en inglés debido a la morfología flexiva rica (conjugaciones verbales, géneros, plurales). Esto puede aumentar la probabilidad de error acumulativo.</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Vocabulario</b>: El español tiene un vocabulario amplio con muchas variantes morfológicas de cada raíz. Los modelos de lenguaje utilizados para post-corrección deben contemplar esta diversidad.</span></p>
<h4><spanlang="ES">Recursos y Datasets</span></h4>
<pclass="MsoNormal"><spanlang="ES">Los recursos disponibles para OCR en español son significativamente menores que para inglés o chino:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Menor cantidad de datasets etiquetados de gran escala</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Menos modelos preentrenados específicos para español</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Documentación y tutoriales predominantemente en inglés</span></p>
<pclass="MsoNormal"><spanlang="ES">Esta escasez de recursos específicos para español motiva la necesidad de técnicas de adaptación como la optimización de hiperparámetros explorada en este trabajo.</span></p>
<h2style="mso-list:l22 level2 lfo18"><spanlang="ES"style="text-transform:none">Estado del arte</span></h2>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">Soluciones OCR de Código Abierto</span></h3>
<pclass="MsoNormal"><spanlang="ES">En los últimos años han surgido varias soluciones OCR de código abierto que democratizan el acceso a esta tecnología. A continuación se analizan en detalle las tres principales alternativas evaluadas en este trabajo.</span></p>
<h4><spanlang="ES">EasyOCR</span></h4>
<pclass="MsoNormal"><spanlang="ES">EasyOCR es una biblioteca de OCR desarrollada por Jaided AI (2020) con el objetivo de proporcionar una solución de fácil uso que soporte múltiples idiomas. Actualmente soporta más de 80 idiomas, incluyendo español.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>Detector</b>: CRAFT (Character Region Awareness for Text Detection)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>Reconocedor</b>: CRNN con backbone ResNet/VGG + BiLSTM + CTC</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>Modelos preentrenados</b>: Disponibles para descarga automática</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">API simple de una línea para casos de uso básicos</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Soporte para GPU (CUDA) y CPU</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Reconocimiento de múltiples idiomas en una misma imagen</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Bajo consumo de memoria comparado con otras soluciones</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Opciones de configuración limitadas (pocos hiperparámetros ajustables)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Menor precisión en documentos con layouts complejos</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Actualizaciones menos frecuentes que otras alternativas</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Documentación menos exhaustiva</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Caso de uso ideal</b>: Prototipado rápido, aplicaciones con restricciones de memoria, proyectos que requieren soporte multilingüe inmediato.</span></p>
<h4><spanlang="ES">PaddleOCR</span></h4>
<pclass="MsoNormal"><spanlang="ES">PaddleOCR es el sistema OCR desarrollado por Baidu como parte del ecosistema PaddlePaddle (2024). Representa una de las soluciones más completas y activamente mantenidas en el ecosistema de código abierto. La versión PP-OCRv5, utilizada en este trabajo, incorpora los últimos avances en el campo.</span></p>
<pclass="MsoNormal"><spanlang="ES">El pipeline de PaddleOCR consta de tres módulos principales:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Detector de texto (DB - Differentiable Binarization)</b>:</span></p>
<pclass="MsoNormal"><spanlang="ES"> - Backbone: ResNet18/ResNet50 - Neck: FPN (Feature Pyramid Network) - Head: Segmentación con binarización diferenciable - Salida: Polígonos que encierran regiones de texto</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Clasificador de orientación</b>:</span></p>
<pclass="MsoNormal"><spanlang="ES"> - Determina si el texto está rotado 0° o 180° - Permite corrección automática de texto invertido - Opcional pero recomendado para documentos escaneados</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Reconocedor de texto (SVTR)</b>:</span></p>
<pclass="MsoNormal"><spanlang="ES"> - Encoder: Vision Transformer modificado - Decoder: CTC o Attention-based - Vocabulario: Configurable por idioma</span></p>
<pclass="MsoNormal"><spanlang="ES">PaddleOCR expone numerosos hiperparámetros que permiten ajustar el comportamiento del sistema. Los más relevantes para este trabajo son:</span></p>
<aname="_Ref_Tab6"></a><pclass="MsoCaption"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->6<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Hiperparámetros de detección de PaddleOCR.</span></i></p>
<divalign="center"><tablealign="center"border="1"cellpadding="0"cellspacing="0"class="MsoTableGrid"style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><tdstyle="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><b><spanlang="ES">Parámetro</span></b></p></td><tdstyle="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><b><spanlang="ES">Descripción</span></b></p></td><tdstyle="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><b><spanlang="ES">Impacto</span></b></p></td></tr><tr><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES"><spanstyle="font-family:Consolas;font-size:10pt">use_doc_orientation_classify</span></span></p></td><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">Clasificación de orientación del documento</span></p></td><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">Alto para documentos escaneados</span></p></td></tr><tr><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES"><spanstyle="font-family:Consolas;font-size:10pt">use_doc_unwarping</span></span></p></td><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">Corrección de deformación/curvatura</span></p></td><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">Alto para fotos de documentos</span></p></td></tr><tr><tdstyle="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES"><spanstyle="font-family:Consolas;font-size:10pt">use_angle_cls</span></span></p></td><tdstyle="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">Clasificador de ángulo 0°/180°</span></p></td><tdstyle="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">Medio para documentos rotados</span></p></td></tr></table></div>
<pclass="MsoNormal"><spanlang="ES"><b>Fortalezas de PaddleOCR</b>:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Alta precisión en múltiples benchmarks</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Modelos optimizados para servidor (mayor precisión) y móvil (mayor velocidad)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Documentación exhaustiva (aunque principalmente en chino)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Comunidad activa y actualizaciones frecuentes</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Soporte para entrenamiento personalizado (fine-tuning)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Dependencia del framework PaddlePaddle (menos popular que PyTorch/TensorFlow)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Curva de aprendizaje más pronunciada</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Documentación en inglés menos completa que en chino</span></p>
<h4><spanlang="ES">DocTR</span></h4>
<pclass="MsoNormal"><spanlang="ES">DocTR (Document Text Recognition) es una biblioteca desarrollada por Mindee (2021), empresa especializada en procesamiento inteligente de documentos. Está orientada a la comunidad de investigación y ofrece una API limpia basada en TensorFlow/PyTorch.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>Detectores disponibles</b>: DB (db_resnet50), LinkNet (linknet_resnet18)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>Reconocedores disponibles</b>: CRNN (crnn_vgg16_bn), SAR (sar_resnet31), ViTSTR (vitstr_small)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>Framework</b>: TensorFlow 2.x o PyTorch</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">API Pythonic bien diseñada</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Salida estructurada con información de confianza y geometría</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Integración nativa con Hugging Face Hub</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Documentación orientada a investigación</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Menor rendimiento en español comparado con PaddleOCR según pruebas preliminares</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Comunidad más pequeña</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Menos opciones de modelos preentrenados para idiomas no ingleses</span></p>
<h4><spanlang="ES">Comparativa Detallada de Soluciones</span></h4>
<aname="_Ref_Tab9"></a><pclass="MsoCaption"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->9<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Comparativa técnica de soluciones OCR de código abierto.</span></i></p>
<pclass="MsoNormal"><spanlang="ES">La optimización de hiperparámetros (HPO, <i>Hyperparameter Optimization</i>) es el proceso de encontrar la configuración óptima de los parámetros que controlan el proceso de aprendizaje o inferencia de un modelo, pero que no se aprenden directamente de los datos (Feurer & Hutter, 2019).</span></p>
<pclass="MsoNormal"><spanlang="ES">A diferencia de los parámetros del modelo (como los pesos de una red neuronal), los hiperparámetros se establecen antes del entrenamiento e incluyen:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Tasa de aprendizaje, tamaño de batch, número de épocas</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Arquitectura del modelo (número de capas, unidades por capa)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Parámetros de regularización (dropout, weight decay)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>Umbrales de decisión en tiempo de inferencia</b> (relevante para este trabajo)</span></p>
<pclass="MsoNormal"><spanlang="ES">El problema de HPO puede formalizarse como:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><mathdisplay="inline"xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>λ</mi></mrow></math> es un vector de hiperparámetros</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><mathdisplay="inline"xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>Λ</mi></mrow></math> es el espacio de búsqueda</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><mathdisplay="inline"xmlns="http://www.w3.org/1998/Math/MathML"><mrow><msub><mi>M</mi><mi>λ</mi></msub></mrow></math> es el modelo configurado con <mathdisplay="inline"xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>λ</mi></mrow></math></span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><mathdisplay="inline"xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>ℒ</mi></mrow></math> es la función de pérdida</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><mathdisplay="inline"xmlns="http://www.w3.org/1998/Math/MathML"><mrow><msub><mi>D</mi><mrow><mi>v</mi><mi>a</mi><mi>l</mi></mrow></msub></mrow></math> es el conjunto de validación</span></p>
<h4><spanlang="ES">Métodos de Optimización</span></h4>
<pclass="MsoNormal"><spanlang="ES"><b>Grid Search (Búsqueda en rejilla)</b>:</span></p>
El método más simple consiste en evaluar todas las combinaciones posibles de valores discretizados de los hiperparámetros. Para <mathdisplay="inline"xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>k</mi></mrow></math> hiperparámetros con <mathdisplay="inline"xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>n</mi></mrow></math> valores cada uno, requiere <mathdisplay="inline"xmlns="http://www.w3.org/1998/Math/MathML"><mrow><msup><mi>n</mi><mi>k</mi></msup></mrow></math> evaluaciones.
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Exhaustivo y reproducible</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Fácil de paralelizar</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Garantiza encontrar el óptimo dentro de la rejilla</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Coste exponencial con el número de hiperparámetros</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Ineficiente si algunos hiperparámetros son más importantes que otros</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">No aprovecha información de evaluaciones previas</span></p>
<pclass="MsoNormal"><spanlang="ES">Propuesto por Bergstra & Bengio (2012), Random Search muestrea configuraciones aleatoriamente del espacio de búsqueda. Sorprendentemente, supera a Grid Search en muchos escenarios prácticos.</span></p>
<pclass="MsoNormal"><spanlang="ES">La intuición es que, cuando solo algunos hiperparámetros son importantes, Random Search explora más valores de estos parámetros críticos mientras Grid Search desperdicia evaluaciones variando parámetros irrelevantes.</span></p>
<pclass="MsoNormal"><spanlang="ES">La optimización bayesiana modela la función objetivo mediante un modelo probabilístico sustituto (<i>surrogate model</i>) y utiliza una función de adquisición para decidir qué configuración evaluar a continuación (Bergstra et al., 2011).</span></p>
<pclass="MsoNormal"><spanlang="ES">El proceso iterativo es:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span>Ajustar el modelo sustituto a las observaciones actuales</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">2.<spanstyle="font-size:7pt"></span>Optimizar la función de adquisición para seleccionar el siguiente punto</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">3.<spanstyle="font-size:7pt"></span>Evaluar la función objetivo en el punto seleccionado</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">4.<spanstyle="font-size:7pt"></span>Actualizar las observaciones y repetir</span></p>
<pclass="MsoNormal"><spanlang="ES">Los modelos sustitutos más comunes son:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>Procesos Gaussianos (GP)</b>: Proporcionan incertidumbre bien calibrada pero escalan pobremente</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>Random Forests</b>: Manejan bien espacios de alta dimensión y variables categóricas</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>Tree-structured Parzen Estimator (TPE)</b>: Modela densidades en lugar de la función objetivo</span></p>
TPE, propuesto por Bergstra et al. (2011) e implementado en Optuna, es particularmente efectivo para HPO. En lugar de modelar <mathdisplay="inline"xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>p</mi><mostretchy="false">(</mo><mi>y</mi><mostretchy="false">|</mo><mi>λ</mi><mostretchy="false">)</mo></mrow></math> directamente, TPE modela:
Donde <mathdisplay="inline"xmlns="http://www.w3.org/1998/Math/MathML"><mrow><msup><mi>y</mi><mo>*</mo></msup></mrow></math> es un umbral (típicamente el percentil 15-25 de las observaciones), <mathdisplay="inline"xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>l</mi><mostretchy="false">(</mo><mi>λ</mi><mostretchy="false">)</mo></mrow></math> es la densidad de hiperparámetros con buen rendimiento, y <mathdisplay="inline"xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>g</mi><mostretchy="false">(</mo><mi>λ</mi><mostretchy="false">)</mo></mrow></math> es la densidad de hiperparámetros con mal rendimiento.
<pclass="MsoNormal"><spanlang="ES">La función de adquisición Expected Improvement se aproxima como:</span></p>
Configuraciones con alta probabilidad bajo <mathdisplay="inline"xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>l</mi></mrow></math> y baja probabilidad bajo <mathdisplay="inline"xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>g</mi></mrow></math> tienen mayor Expected Improvement.
<pclass="MsoNormal"><spanlang="ES"><b>Ventajas de TPE</b>:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Maneja naturalmente espacios condicionales (hiperparámetros que dependen de otros)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Eficiente para espacios de alta dimensión</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">No requiere derivadas de la función objetivo</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Implementación eficiente en Optuna</span></p>
<h4><spanlang="ES">Ray Tune</span></h4>
<pclass="MsoNormal"><spanlang="ES">Ray Tune (Liaw et al., 2018) es un framework de optimización de hiperparámetros escalable construido sobre Ray, un sistema de computación distribuida. Sus características principales incluyen:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Ejecución paralela de múltiples trials</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Distribución automática en clusters</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Soporte para recursos heterogéneos (CPU/GPU)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Integración con múltiples algoritmos de búsqueda (Optuna, HyperOpt, Ax, etc.)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Checkpointing y recuperación de fallos</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">ASHA (Asynchronous Successive Halving Algorithm): Termina trials poco prometedores</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">PBT (Population-Based Training): Evoluciona hiperparámetros durante el entrenamiento</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Integración con Optuna</b>:</span></p>
<pclass="MsoNormal"><spanlang="ES">La combinación de Ray Tune con OptunaSearch permite:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span>Utilizar TPE como algoritmo de búsqueda</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">2.<spanstyle="font-size:7pt"></span>Paralelizar la evaluación de trials</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">3.<spanstyle="font-size:7pt"></span>Beneficiarse de la infraestructura de Ray para distribución</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">4.<spanstyle="font-size:7pt"></span>Acceder a las visualizaciones de Optuna</span></p>
<aname="_Ref_Fig2"></a><pclass="MsoCaption"style="text-align:center"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Figura <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Figura \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->2<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Ciclo de optimización con Ray Tune y Optuna</span></i></p>
<pclass="MsoNormal"style="text-align:center"><spanlang="ES"><imgalt="Ciclo de optimización con Ray Tune y Optuna"src="figures/figura_2.png"style="width:16cm;display:block;margin:0 auto"width="604"/></span></p>
<h4><spanlang="ES">HPO en Sistemas OCR</span></h4>
<pclass="MsoNormal"><spanlang="ES">La aplicación de HPO a sistemas OCR ha sido explorada en varios contextos:</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Optimización de preprocesamiento</b>:</span></p>
<pclass="MsoNormal"><spanlang="ES">Liang et al. (2005) propusieron optimizar parámetros de binarización adaptativa para mejorar el OCR de documentos degradados. Los parámetros optimizados incluían tamaño de ventana, factor de corrección y umbral local.</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Optimización de arquitectura</b>:</span></p>
<pclass="MsoNormal"><spanlang="ES">Breuel (2013) exploró la selección automática de arquitecturas de red para reconocimiento de texto manuscrito, optimizando número de capas, unidades y tipo de activación.</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Optimización de post-procesamiento</b>:</span></p>
<pclass="MsoNormal"><spanlang="ES">Schulz & Kuhn (2017) optimizaron parámetros de modelos de lenguaje para corrección de errores OCR, incluyendo pesos de interpolación entre modelos de caracteres y palabras.</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Vacío en la literatura</b>:</span></p>
<pclass="MsoNormal"><spanlang="ES">A pesar de estos trabajos, existe un vacío significativo respecto a la optimización sistemática de hiperparámetros de inferencia en pipelines OCR modernos como PaddleOCR. La mayoría de trabajos se centran en:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Entrenamiento de modelos (fine-tuning)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Preprocesamiento de imagen</span></p>
<pclass="MsoNormal"><spanlang="ES">La optimización de umbrales de detección y reconocimiento en tiempo de inferencia ha recibido poca atención, especialmente para idiomas diferentes del inglés y chino.</span></p>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">Datasets y Benchmarks para Español</span></h3>
<h4><spanlang="ES">Datasets Públicos</span></h4>
<pclass="MsoNormal"><spanlang="ES">Los principales recursos para evaluación de OCR en español incluyen:</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>FUNSD-ES</b>: Versión en español del Form Understanding in Noisy Scanned Documents dataset. Contiene formularios escaneados con anotaciones de texto y estructura.</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>MLT (ICDAR Multi-Language Text)</b>: Dataset multilingüe de las competiciones ICDAR que incluye muestras en español. Las ediciones 2017 y 2019 contienen texto en escenas naturales.</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>XFUND</b>: Dataset de comprensión de formularios en múltiples idiomas, incluyendo español, con anotaciones de entidades y relaciones.</span></p>
<aname="_Ref_Tab11"></a><pclass="MsoCaption"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->11<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Datasets públicos con contenido en español.</span></i></p>
<h4><spanlang="ES">Limitaciones de Recursos para Español</span></h4>
<pclass="MsoNormal"><spanlang="ES">Comparado con inglés y chino, el español cuenta con:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Menor cantidad de datasets etiquetados de gran escala</span></p>
<pclass="MsoNormal"><spanlang="ES">Esta escasez de recursos específicos para español motivó la creación de un dataset propio basado en documentos académicos de UNIR para este trabajo.</span></p>
<h4><spanlang="ES">Trabajos Previos en OCR para Español</span></h4>
<pclass="MsoNormal"><spanlang="ES">Los trabajos previos en OCR para español se han centrado principalmente en:</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Digitalización de archivos históricos</b>: 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).</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Procesamiento de documentos de identidad</b>: Sistemas OCR especializados para DNI, pasaportes y documentos oficiales españoles y latinoamericanos (Bulatov et al., 2020).</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Reconocimiento de texto en escenas</b>: Participaciones en competiciones ICDAR para detección y reconocimiento de texto en español en imágenes naturales.</span></p>
<aname="_Ref_Tab12"></a><pclass="MsoCaption"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->12<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Trabajos previos relevantes en OCR para español.</span></i></p>
<pclass="MsoNormal"><spanlang="ES">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.</span></p>
<h2style="mso-list:l22 level2 lfo18"><spanlang="ES"style="text-transform:none">Conclusiones del capítulo</span></h2>
<pclass="MsoNormal"><spanlang="ES">Este capítulo ha presentado el marco teórico y tecnológico necesario para contextualizar la contribución del presente trabajo:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Evolución del OCR</b>: Se ha trazado la evolución desde los sistemas de plantillas hasta las arquitecturas de aprendizaje profundo actuales, destacando los avances clave en cada generación.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Pipeline moderno</b>: Se ha descrito el pipeline de dos etapas (detección + reconocimiento) utilizado por los sistemas OCR contemporáneos, detallando las arquitecturas más relevantes (DB, CRAFT, CRNN, SVTR, Transformer).</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Métricas de evaluación</b>: Se han definido formalmente las métricas CER y WER, estableciendo los umbrales de aceptabilidad para diferentes aplicaciones.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Particularidades del español</b>: Se han identificado los desafíos específicos del OCR para español, incluyendo caracteres especiales, diacríticos y escasez de recursos.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Soluciones de código abierto</b>: Se han analizado en profundidad EasyOCR, PaddleOCR y DocTR, justificando la selección de PaddleOCR para este trabajo por su alta configurabilidad.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Optimización de hiperparámetros</b>: Se han presentado los fundamentos teóricos de HPO, con énfasis en TPE (Optuna) y Ray Tune, identificando el vacío en la literatura respecto a la optimización de hiperparámetros de inferencia en OCR.</span></p>
<pclass="MsoNormal"><spanlang="ES">El estado del arte revela que, si bien existen soluciones OCR de alta calidad, su optimización para dominios específicos mediante ajuste de hiperparámetros (sin fine-tuning) ha recibido poca atención en la literatura. Este trabajo contribuye a llenar ese vacío proponiendo una metodología reproducible para la optimización de PaddleOCR en documentos académicos en español.</span></p><h1style="mso-list:l22 level1 lfo18"><spanstyle="mso-bookmark:_Toc14106979"><spanstyle="mso-bookmark:_Toc437515557"><aname="_Toc147741196"></a><aname="_Toc160619813"><spanstyle="mso-bookmark:_Toc147741196"><?if !supportLists?><spanlang="ES"style='mso-fareast-font-family:"CalibriLight";mso-fareast-theme-font:
concretos y metodología de trabajo</span></span></a></span></span><spanstyle="mso-bookmark:_Toc14106979"><spanstyle="mso-bookmark:_Toc437515557"><spanlang="ES"style="text-transform:none"><o:p></o:p></span></span></span></h1><pclass="MsoNormal"><spanlang="ES">Este capítulo establece los objetivos del trabajo siguiendo la metodología SMART (Doran, 1981) y describe la metodología experimental empleada para alcanzarlos. Se define un objetivo general y cinco objetivos específicos, todos ellos medibles y verificables.</span></p>
<pclass="MsoNormal"style="margin-left:2cm;margin-right:1cm"><i><spanlang="ES"><b>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.</b></span></i></p>
<divalign="center"><tablealign="center"border="1"cellpadding="0"cellspacing="0"class="MsoTableGrid"style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><tdstyle="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><b><spanlang="ES">Criterio</span></b></p></td><tdstyle="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><b><spanlang="ES">Cumplimiento</span></b></p></td></tr><tr><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES"><b>Específico (S)</b></span></p></td><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">Se define claramente qué se quiere lograr: optimizar PaddleOCR mediante ajuste de hiperparámetros para documentos en español</span></p></td></tr><tr><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES"><b>Medible (M)</b></span></p></td><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">Se establece una métrica cuantificable: CER < 2%</span></p></td></tr><tr><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES"><b>Alcanzable (A)</b></span></p></td><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">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</span></p></td></tr><tr><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES"><b>Relevante (R)</b></span></p></td><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">El impacto es demostrable: mejora la extracción de texto en documentos académicos sin costes adicionales de infraestructura</span></p></td></tr><tr><tdstyle="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES"><b>Temporal (T)</b></span></p></td><tdstyle="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">El plazo es un cuatrimestre, correspondiente al TFM</span></p></td></tr></table></div>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">OE1: Comparar soluciones OCR de código abierto</span></h3>
<pclass="MsoNormal"style="margin-left:2cm;margin-right:1cm"><i><spanlang="ES"><b>Evaluar el rendimiento base de EasyOCR, PaddleOCR y DocTR en documentos académicos en español, utilizando CER y WER como métricas, para seleccionar el modelo más prometedor.</b></span></i></p>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">OE2: Preparar un dataset de evaluación</span></h3>
<pclass="MsoNormal"style="margin-left:2cm;margin-right:1cm"><i><spanlang="ES"><b>Construir un dataset estructurado de imágenes de documentos académicos en español con su texto de referencia (ground truth) extraído del PDF original.</b></span></i></p>
<pclass="MsoNormal"style="margin-left:2cm;margin-right:1cm"><i><spanlang="ES"><b>Analizar la correlación entre los hiperparámetros de PaddleOCR y las métricas de error para identificar los parámetros con mayor impacto en el rendimiento.</b></span></i></p>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">OE4: Optimizar hiperparámetros con Ray Tune</span></h3>
<pclass="MsoNormal"style="margin-left:2cm;margin-right:1cm"><i><spanlang="ES"><b>Ejecutar una búsqueda automatizada de hiperparámetros utilizando Ray Tune con Optuna, evaluando al menos 50 configuraciones diferentes.</b></span></i></p>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">OE5: Validar la configuración optimizada</span></h3>
<pclass="MsoNormal"style="margin-left:2cm;margin-right:1cm"><i><spanlang="ES"><b>Comparar el rendimiento de la configuración baseline versus la configuración optimizada sobre el dataset completo, documentando la mejora obtenida.</b></span></i></p>
<h2style="mso-list:l22 level2 lfo18"><spanlang="ES"style="text-transform:none">Metodología del trabajo</span></h2>
<aname="_Ref_Fig3"></a><pclass="MsoCaption"style="text-align:center"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Figura <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Figura \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->3<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Fases de la metodología experimental</span></i></p>
<pclass="MsoNormal"style="text-align:center"><spanlang="ES"><imgalt="Fases de la metodología experimental"src="figures/figura_3.png"style="width:16cm;display:block;margin:0 auto"width="604"/></span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Descripción de las fases:</b></span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>Fase 1 - Preparación del Dataset</b>: Conversión PDF a imágenes (300 DPI), extracción de ground truth con PyMuPDF</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>Fase 2 - Benchmark Comparativo</b>: Evaluación de EasyOCR, PaddleOCR, DocTR con métricas CER/WER</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>Fase 3 - Espacio de Búsqueda</b>: Identificación de hiperparámetros y configuración de Ray Tune + Optuna</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>Fase 4 - Optimización</b>: Ejecución de 64 trials con paralelización (2 concurrentes)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>Fase 5 - Validación</b>: Comparación baseline vs optimizado, análisis de correlaciones</span></p>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">Fase 1: Preparación del Dataset</span></h3>
<h4><spanlang="ES">Fuente de Datos</span></h4>
<pclass="MsoNormal"><spanlang="ES">Se utilizaron documentos PDF académicos de UNIR (Universidad Internacional de La Rioja), específicamente las instrucciones para la elaboración del TFE del Máster en Inteligencia Artificial.</span></p>
<h4><spanlang="ES">Proceso de Conversión</span></h4>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Conversión PDF a imágenes</b>:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Extracción de texto de referencia</b>:</span></p>
<pclass="MsoNormal"><spanlang="ES"> - Método: <spanstyle="font-family:Consolas;font-size:10pt">page.get_text("dict")</span> de PyMuPDF - Preservación de estructura de líneas - Tratamiento de texto vertical/marginal - Normalización de espacios y saltos de línea</span></p>
<h4><spanlang="ES">Estructura del Dataset</span></h4>
<aname="_Ref_Fig4"></a><pclass="MsoCaption"style="text-align:center"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Figura <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Figura \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->4<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Estructura del dataset de evaluación</span></i></p>
<pclass="MsoNormal"style="text-align:center"><spanlang="ES"><imgalt="Estructura del dataset de evaluación"src="figures/figura_4.png"style="width:16cm;display:block;margin:0 auto"width="604"/></span></p>
<pclass="MsoNormal"><spanlang="ES">Se implementó una clase Python para cargar pares imagen-texto que retorna tuplas (PIL.Image, str) desde carpetas pareadas. La implementación completa está disponible en <spanstyle="font-family:Consolas;font-size:10pt">src/ocr_benchmark_notebook.ipynb</span> (ver Anexo A).</span></p>
<h4><spanlang="ES">Métricas de Evaluación</span></h4>
<pclass="MsoNormal"><spanlang="ES">Se utilizó la biblioteca <spanstyle="font-family:Consolas;font-size:10pt">jiwer</span> para calcular CER y WER comparando el texto de referencia con la predicción del modelo OCR. La implementación está disponible en <spanstyle="font-family:Consolas;font-size:10pt">src/ocr_benchmark_notebook.ipynb</span> (ver Anexo A).</span></p>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">Fase 3: Espacio de Búsqueda</span></h3>
<divalign="center"><tablealign="center"border="1"cellpadding="0"cellspacing="0"class="MsoTableGrid"style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><tdstyle="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><b><spanlang="ES">Parámetro</span></b></p></td><tdstyle="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><b><spanlang="ES">Tipo</span></b></p></td><tdstyle="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><b><spanlang="ES">Rango/Valores</span></b></p></td><tdstyle="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><b><spanlang="ES">Descripción</span></b></p></td></tr><tr><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES"><spanstyle="font-family:Consolas;font-size:10pt">use_doc_orientation_classify</span></span></p></td><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">Booleano</span></p></td><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">[True, False]</span></p></td><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">Clasificación de orientación del documento</span></p></td></tr><tr><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES"><spanstyle="font-family:Consolas;font-size:10pt">use_doc_unwarping</span></span></p></td><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">Booleano</span></p></td><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">[True, False]</span></p></td><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">Corrección de deformación del documento</span></p></td></tr><tr><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES"><spanstyle="font-family:Consolas;font-size:10pt">textline_orientation</span></span></p></td><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">Booleano</span></p></td><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">[True, False]</span></p></td><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">Clasificación de orientación de línea de texto</span></p></td></tr><tr><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES"><spanstyle="font-family:Consolas;font-size:10pt">text_det_thresh</span></span></p></td><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">Continuo</span></p></td><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">[0.0, 0.7]</span></p></td><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">Umbral de detección de píxeles de texto</span></p></td></tr><tr><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES"><spanstyle="font-family:Consolas;font-size:10pt">text_det_box_thresh</span></span></p></td><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">Continuo</span></p></td><tdstyle="borde
<h4><spanlang="ES">Configuración de Ray Tune</span></h4>
<pclass="MsoNormal"><spanlang="ES">El espacio de búsqueda se definió utilizando <spanstyle="font-family:Consolas;font-size:10pt">tune.choice()</span> para parámetros booleanos y <spanstyle="font-family:Consolas;font-size:10pt">tune.uniform()</span> 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 <spanstyle="font-family:Consolas;font-size:10pt">src/raytune/raytune_ocr.py</span> (ver Anexo A).</span></p>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">Fase 4: Ejecución de Optimización</span></h3>
<h4><spanlang="ES">Arquitectura de Ejecución</span></h4>
<pclass="MsoNormal"><spanlang="ES">Se implementó una arquitectura basada en contenedores Docker para aislar los servicios OCR y facilitar la reproducibilidad (ver sección 4.2.3 para detalles de la arquitectura).</span></p>
<h4><spanlang="ES">Ejecución con Docker Compose</span></h4>
<pclass="MsoNormal"><spanlang="ES">Los servicios se orquestan mediante Docker Compose (<spanstyle="font-family:Consolas;font-size:10pt">src/docker-compose.tuning.*.yml</span>):</span></p>
<h4><spanlang="ES">Protocolo de Validación</span></h4>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Baseline</b>: Ejecución con configuración por defecto de PaddleOCR</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">2.<spanstyle="font-size:7pt"></span><b>Optimizado</b>: Ejecución con mejor configuración encontrada</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">3.<spanstyle="font-size:7pt"></span><b>Comparación</b>: Evaluación sobre las 45 páginas del dataset completo</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">4.<spanstyle="font-size:7pt"></span><b>Métricas reportadas</b>: CER, WER, tiempo de procesamiento</span></p>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">Entorno de Ejecución</span></h3>
<h4><spanlang="ES">Hardware</span></h4>
<aname="_Ref_Tab16"></a><pclass="MsoCaption"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->16<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Especificaciones de hardware del entorno de desarrollo.</span></i></p>
<h4><spanlang="ES">Justificación de Ejecución Local vs Cloud</span></h4>
<pclass="MsoNormal"><spanlang="ES">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.</span></p>
<aname="_Ref_Tab18"></a><pclass="MsoCaption"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->18<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Costos de GPU en plataformas cloud.</span></i></p>
<pclass="MsoNormal"><spanlang="ES">Para las tareas específicas de este proyecto, los costos estimados en cloud serían:</span></p>
<aname="_Ref_Tab19"></a><pclass="MsoCaption"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->19<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Análisis de costos del proyecto en plataformas cloud.</span></i></p>
<pclass="MsoNormal"><spanlang="ES">Las ventajas de la ejecución local incluyen:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Costo cero de GPU</b>: La RTX 3060 ya está disponible en el equipo de desarrollo</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">2.<spanstyle="font-size:7pt"></span><b>Sin límites de tiempo</b>: AWS y Colab imponen timeouts de sesión que interrumpen experimentos largos</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">3.<spanstyle="font-size:7pt"></span><b>Acceso instantáneo</b>: Sin tiempo de aprovisionamiento de instancias cloud</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">4.<spanstyle="font-size:7pt"></span><b>Almacenamiento local</b>: Dataset y resultados en disco sin costos de transferencia</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">5.<spanstyle="font-size:7pt"></span><b>Iteración rápida</b>: Reinicio inmediato de contenedores Docker para depuración</span></p>
<pclass="MsoNormal"><spanlang="ES">Para un proyecto de investigación con múltiples iteraciones de ajuste de hiperparámetros, la ejecución local ahorra aproximadamente $50-100 mensuales comparado con servicios cloud, además de ofrecer mayor flexibilidad en la velocidad de iteración durante el desarrollo.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Tamaño del dataset</b>: El dataset contiene 45 páginas de documentos académicos UNIR. Resultados pueden no generalizar a otros formatos.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Subconjunto de optimización</b>: El ajuste de hiperparámetros se realizó sobre 5 páginas (páginas 5-10), lo que contribuyó al sobreajuste observado en la validación del dataset completo.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Texto de referencia imperfecto</b>: El texto de referencia extraído de PDF puede contener errores en documentos con diseños complejos.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Parámetro fijo</b>: <spanstyle="font-family:Consolas;font-size:10pt">text_det_unclip_ratio</span> quedó fijado en 0.0 durante todo el experimento por decisión de diseño inicial.</span></p>
<h2style="mso-list:l22 level2 lfo18"><spanlang="ES"style="text-transform:none">Resumen del capítulo</span></h2>
<pclass="MsoNormal"><spanlang="ES">Este capítulo ha establecido:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span>Un objetivo general SMART: alcanzar CER < 2% mediante optimización de hiperparámetros (logrado en el mejor trial: 0.79%)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">2.<spanstyle="font-size:7pt"></span>Cinco objetivos específicos medibles y alcanzables</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">3.<spanstyle="font-size:7pt"></span>Una metodología experimental en cinco fases claramente definidas</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">4.<spanstyle="font-size:7pt"></span>El espacio de búsqueda de hiperparámetros y la configuración de Ray Tune</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">5.<spanstyle="font-size:7pt"></span>Las limitaciones reconocidas del enfoque</span></p>
<pclass="MsoNormal"><spanlang="ES">El siguiente capítulo presenta el desarrollo específico de la contribución, incluyendo el benchmark comparativo de soluciones OCR, la optimización de hiperparámetros y el análisis de resultados.</span></p><pclass="MsoNormal"style="margin-left:18.0pt;text-indent:-18.0pt;page-break-after:
mso-font-kerning:16.0pt;mso-bidi-font-weight:bold'><spanstyle="mso-list:Ignore">4.<spanstyle='font:7.0pt "Times New Roman"'></span></span></span><?endif?><spanlang="ES"style='font-size:18.0pt;mso-bidi-font-size:16.0pt;line-height:150%;
específico de la contribución</span></span></span></span><spanstyle="mso-bookmark:_Toc14106979"><spanstyle="mso-bookmark:_Toc437515557"><spanlang="ES"style='font-size:18.0pt;mso-bidi-font-size:16.0pt;line-height:150%;
mso-hansi-theme-font:major-latin;mso-bidi-font-family:"Times New Roman";
color:#0098CD;mso-font-kerning:16.0pt;mso-bidi-font-weight:bold'><o:p></o:p></span></span></span></p><pclass="MsoNormal"><spanlang="ES">Este capítulo presenta el desarrollo completo del estudio comparativo y la optimización de hiperparámetros de sistemas OCR. Se estructura según el tipo de trabajo "Comparativa de soluciones" establecido por las instrucciones de UNIR: planteamiento de la comparativa, desarrollo de la comparativa, y discusión y análisis de resultados.</span></p>
<h2style="mso-list:l22 level2 lfo18"><spanlang="ES"style="text-transform:none">Planteamiento de la comparativa</span></h2>
<pclass="MsoNormal"><spanlang="ES">Esta sección presenta los resultados del estudio comparativo realizado entre tres soluciones OCR de código abierto: EasyOCR, PaddleOCR y DocTR. Los experimentos fueron documentados en el notebook <spanstyle="font-family:Consolas;font-size:10pt">ocr_benchmark_notebook.ipynb</span> del repositorio. El objetivo es identificar el modelo base más prometedor para la posterior fase de optimización de hiperparámetros.</span></p>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">Identificación del Problema</span></h3>
<pclass="MsoNormal"><spanlang="ES">El reconocimiento óptico de caracteres (OCR) en documentos académicos en español presenta desafíos específicos que no han sido ampliamente abordados en la literatura:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Layouts complejos</b>: Los documentos académicos combinan texto corrido, tablas, listas numeradas, encabezados multinivel y notas al pie.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Caracteres específicos del español</b>: Acentos (á, é, í, ó, ú), eñe (ñ), diéresis (ü) y signos de puntuación invertidos (¿, ¡).</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Formato formal</b>: Tipografía profesional con múltiples fuentes, tamaños y estilos (negrita, cursiva).</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Calidad variable</b>: Documentos digitales de alta calidad pero con posibles artefactos de compresión PDF.</span></p>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">Criterios de Éxito</span></h3>
<pclass="MsoNormal"><spanlang="ES">Los criterios establecidos para evaluar las soluciones fueron:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Precisión (CER < 5%)</b>: Error de caracteres aceptable para documentos académicos</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">2.<spanstyle="font-size:7pt"></span><b>Configurabilidad</b>: Disponibilidad de hiperparámetros ajustables</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">3.<spanstyle="font-size:7pt"></span><b>Soporte para español</b>: Modelos preentrenados que incluyan el idioma</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">4.<spanstyle="font-size:7pt"></span><b>Documentación</b>: Calidad de la documentación técnica</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">5.<spanstyle="font-size:7pt"></span><b>Mantenimiento activo</b>: Actualizaciones recientes y comunidad activa</span></p>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">Configuración del Experimento</span></h3>
<h4><spanlang="ES">Dataset de Evaluación</span></h4>
<pclass="MsoNormal"><spanlang="ES">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 <spanstyle="font-family:Consolas;font-size:10pt">instructions/</span>.</span></p>
<aname="_Ref_Tab21"></a><pclass="MsoCaption"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->21<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Características del dataset de evaluación inicial.</span></i></p>
<h4><spanlang="ES">Proceso de Conversión</span></h4>
<pclass="MsoNormal"><spanlang="ES">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 <spanstyle="font-family:Consolas;font-size:10pt">src/ocr_benchmark_notebook.ipynb</span> (ver Anexo A).</span></p>
<h4><spanlang="ES">Extracción del Ground Truth</span></h4>
<pclass="MsoNormal"><spanlang="ES">El texto de referencia se extrajo directamente del PDF mediante PyMuPDF, preservando la estructura de líneas del documento original. Esta aproximación puede introducir errores en layouts muy complejos (tablas anidadas, texto en columnas). La implementación está disponible en <spanstyle="font-family:Consolas;font-size:10pt">src/ocr_benchmark_notebook.ipynb</span> (ver Anexo A).</span></p>
<h4><spanlang="ES">Configuración de los Modelos</span></h4>
<pclass="MsoNormal"><spanlang="ES">La configuración de cada modelo se detalla en <spanstyle="font-family:Consolas;font-size:10pt">src/ocr_benchmark_notebook.ipynb</span> (ver Anexo A):</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>EasyOCR</b>: Configurado con soporte para español e inglés, permitiendo reconocer palabras en ambos idiomas que puedan aparecer en documentos académicos (referencias, términos técnicos).</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>PaddleOCR (PP-OCRv5)</b>: Se utilizaron los modelos "server" (PP-OCRv5_server_det y PP-OCRv5_server_rec) que ofrecen mayor precisión a costa de mayor tiempo de inferencia. La versión utilizada fue PaddleOCR 3.2.0.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>DocTR</b>: Se seleccionaron las arquitecturas db_resnet50 para detección y sar_resnet31 para reconocimiento, representando una configuración de alta precisión.</span></p>
<h4><spanlang="ES">Métricas de Evaluación</span></h4>
<pclass="MsoNormal"><spanlang="ES">Se utilizó la biblioteca <spanstyle="font-family:Consolas;font-size:10pt">jiwer</span> para calcular CER y WER de manera estandarizada. La normalización a minúsculas y eliminación de espacios extremos asegura una comparación justa que no penaliza diferencias de capitalización. La implementación está disponible en <spanstyle="font-family:Consolas;font-size:10pt">src/ocr_benchmark_notebook.ipynb</span> (ver Anexo A).</span></p>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">Resultados del Benchmark</span></h3>
<h4><spanlang="ES">Resultados de PaddleOCR (Configuración Baseline)</span></h4>
<pclass="MsoNormal"><spanlang="ES">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.</span></p>
<aname="_Ref_Tab22"></a><pclass="MsoCaption"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->22<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Variabilidad del CER por tipo de contenido.</span></i></p>
<pclass="MsoNormal"><spanlang="ES"><b>Observaciones del benchmark inicial:</b></span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span>Las páginas con tablas y layouts complejos presentaron mayor error debido a la dificultad de ordenar correctamente las líneas de texto.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span>La página con texto corrido continuo obtuvo el mejor resultado (CER ~1.5%), demostrando la capacidad del modelo para texto estándar.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span>El promedio general se situó en CER ~5-6%, superando el umbral de aceptabilidad para documentos académicos pero con margen de mejora.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span>Los errores más frecuentes fueron: confusión de acentos, caracteres duplicados, y errores en signos de puntuación.</span></p>
<h4><spanlang="ES">Comparativa de Modelos</span></h4>
<pclass="MsoNormal"><spanlang="ES">Los tres modelos evaluados representan diferentes paradigmas de OCR:</span></p>
<aname="_Ref_Tab23"></a><pclass="MsoCaption"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->23<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Comparativa de arquitecturas OCR evaluadas.</span></i></p>
<pclass="MsoNormal"><spanlang="ES"><b>Ejemplo de predicción de PaddleOCR para una página:</b></span></p>
<pclass="MsoNormal"style="margin-left:2cm;margin-right:1cm"><i><spanlang="ES">"Escribe siempre al menos un párrafo de introducción en cada capítulo o apartado, explicando de qué vas a tratar en esa sección. Evita que aparezcan dos encabezados de nivel consecutivos sin ningún texto entre medias. [...] En esta titulacióon se cita de acuerdo con la normativa Apa."</span></i></p>
<pclass="MsoNormal"><spanlang="ES"><b>Errores identificados en este ejemplo:</b></span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><spanstyle="font-family:Consolas;font-size:10pt">titulacióon</span> en lugar de <spanstyle="font-family:Consolas;font-size:10pt">titulación</span> (carácter duplicado)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><spanstyle="font-family:Consolas;font-size:10pt">Apa</span> en lugar de <spanstyle="font-family:Consolas;font-size:10pt">APA</span> (capitalización)</span></p>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">Justificación de la Selección de PaddleOCR</span></h3>
<h4><spanlang="ES">Criterios de Selección</span></h4>
<pclass="MsoNormal"><spanlang="ES">La selección de PaddleOCR para la fase de optimización se basó en los siguientes criterios:</span></p>
<aname="_Ref_Tab24"></a><pclass="MsoCaption"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->24<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Evaluación de criterios de selección.</span></i></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><spanstyle="font-family:Consolas;font-size:10pt">text_det_thresh</span>: Umbral de probabilidad para píxeles de texto</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><spanstyle="font-family:Consolas;font-size:10pt">text_det_box_thresh</span>: Umbral de confianza para cajas detectadas</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><spanstyle="font-family:Consolas;font-size:10pt">text_det_unclip_ratio</span>: Factor de expansión de cajas</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><spanstyle="font-family:Consolas;font-size:10pt">text_rec_score_thresh</span>: Umbral de confianza para resultados</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><spanstyle="font-family:Consolas;font-size:10pt">use_textline_orientation</span>: Clasificación de orientación de línea</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><spanstyle="font-family:Consolas;font-size:10pt">use_doc_orientation_classify</span>: Clasificación de orientación de documento</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><spanstyle="font-family:Consolas;font-size:10pt">use_doc_unwarping</span>: Corrección de deformación</span></p>
<pclass="MsoNormal"><spanlang="ES">Esta riqueza de configuración permite explorar sistemáticamente el espacio de hiperparámetros mediante técnicas de optimización automática.</span></p>
<h4><spanlang="ES">Decisión Final</span></h4>
<pclass="MsoNormal"><spanlang="ES"><b>Se selecciona PaddleOCR (PP-OCRv5)</b> para la fase de optimización debido a:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Resultados iniciales prometedores</b>: CER ~5% en configuración por defecto, con potencial de mejora</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">2.<spanstyle="font-size:7pt"></span><b>Alta configurabilidad</b>: Más de 10 hiperparámetros ajustables en tiempo de inferencia</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">3.<spanstyle="font-size:7pt"></span><b>Pipeline modular</b>: Permite aislar el impacto de cada componente</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">4.<spanstyle="font-size:7pt"></span><b>Soporte activo para español</b>: Modelos específicos y actualizaciones frecuentes</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">5.<spanstyle="font-size:7pt"></span><b>Documentación técnica</b>: Descripción detallada de cada parámetro</span></p>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">Limitaciones del Benchmark</span></h3>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Tamaño reducido</b>: Solo 5 páginas evaluadas en el benchmark comparativo inicial. Esto limita la generalización de las conclusiones.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Único tipo de documento</b>: Documentos académicos de UNIR únicamente. Otros tipos de documentos (facturas, formularios, contratos) podrían presentar resultados diferentes.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Ground truth automático</b>: El texto de referencia se extrajo programáticamente del PDF, lo cual puede introducir errores en layouts complejos donde el orden de lectura no es evidente.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Ejecución en CPU</b>: Todos los experimentos se realizaron en CPU, limitando la exploración de configuraciones que podrían beneficiarse de aceleración GPU.</span></p>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">Resumen de la Sección</span></h3>
<pclass="MsoNormal"><spanlang="ES">Esta sección ha presentado:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span>La identificación del problema y los criterios de éxito establecidos</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">2.<spanstyle="font-size:7pt"></span>La configuración detallada del benchmark con tres soluciones OCR</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">3.<spanstyle="font-size:7pt"></span>Los resultados cuantitativos y cualitativos obtenidos</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">4.<spanstyle="font-size:7pt"></span>La justificación de la selección de PaddleOCR para optimización</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">5.<spanstyle="font-size:7pt"></span>Las limitaciones reconocidas del benchmark</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Fuentes de datos utilizadas:</b></span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><spanstyle="font-family:Consolas;font-size:10pt">ocr_benchmark_notebook.ipynb</span>: Código del benchmark</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Documentación oficial de PaddleOCR</span></p>
<h2style="mso-list:l22 level2 lfo18"><spanlang="ES"style="text-transform:none">Desarrollo de la comparativa: Optimización de hiperparámetros</span></h2>
<pclass="MsoNormal"><spanlang="ES">Esta sección describe el proceso de optimización de hiperparámetros de PaddleOCR utilizando Ray Tune con el algoritmo de búsqueda Optuna. Los experimentos fueron implementados en <ahref="https://github.com/seryus/MastersThesis/blob/main/src/run_tuning.py"><spanstyle="font-family:Consolas;font-size:10pt">src/run_tuning.py</span></a> con la librería de utilidades <ahref="https://github.com/seryus/MastersThesis/blob/main/src/raytune_ocr.py"><spanstyle="font-family:Consolas;font-size:10pt">src/raytune_ocr.py</span></a>, y los resultados se almacenaron en <ahref="https://github.com/seryus/MastersThesis/tree/main/src/results"><spanstyle="font-family:Consolas;font-size:10pt">src/results/</span></a>.</span></p>
<pclass="MsoNormal"><spanlang="ES">La optimización de hiperparámetros representa una alternativa al fine-tuning tradicional que no requiere:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Acceso a GPU dedicada</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Dataset de entrenamiento etiquetado</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Modificación de los pesos del modelo</span></p>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">Configuración del Experimento</span></h3>
<h4><spanlang="ES">Entorno de Ejecución</span></h4>
<pclass="MsoNormal"><spanlang="ES">El experimento se ejecutó en el siguiente entorno:</span></p>
<aname="_Ref_Tab25"></a><pclass="MsoCaption"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->25<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Entorno de ejecución del experimento.</span></i></p>
<h4><spanlang="ES">Arquitectura de Ejecución</span></h4>
<pclass="MsoNormal"><spanlang="ES">La arquitectura basada en contenedores Docker es fundamental para este proyecto debido a los conflictos de dependencias inherentes entre los diferentes componentes:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>Conflictos entre motores OCR</b>: PaddleOCR, DocTR y EasyOCR tienen dependencias mutuamente incompatibles (diferentes versiones de PyTorch/PaddlePaddle, OpenCV, etc.)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>Incompatibilidades CUDA/cuDNN</b>: Cada motor OCR requiere versiones específicas de CUDA y cuDNN que no pueden coexistir en un mismo entorno virtual</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>Aislamiento de Ray Tune</b>: Ray Tune tiene sus propias dependencias que pueden entrar en conflicto con las librerías de inferencia OCR</span></p>
<pclass="MsoNormal"><spanlang="ES">Esta arquitectura containerizada permite ejecutar cada componente en su entorno aislado óptimo, comunicándose via API REST:</span></p>
<aname="_Ref_Fig5"></a><pclass="MsoCaption"style="text-align:center"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Figura <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Figura \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->5<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Arquitectura de ejecución con Docker Compose</span></i></p>
<pclass="MsoNormal"style="text-align:center"><spanlang="ES"><imgalt="Arquitectura de ejecución con Docker Compose"src="figures/figura_5.png"style="width:16cm;display:block;margin:0 auto"width="604"/></span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span>Aislamiento de dependencias entre Ray Tune y los motores OCR</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">2.<spanstyle="font-size:7pt"></span>Health checks automáticos para asegurar disponibilidad del servicio</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">3.<spanstyle="font-size:7pt"></span>Comunicación via API REST (endpoints <spanstyle="font-family:Consolas;font-size:10pt">/health</span> y <spanstyle="font-family:Consolas;font-size:10pt">/evaluate</span>)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">4.<spanstyle="font-size:7pt"></span>Soporte para GPU mediante nvidia-docker</span></p>
<pclass="MsoNormal"style="margin-left:1cm"><spanstyle="font-family:Consolas;font-size:9pt"><pre># Iniciar servicio OCR con GPU
docker compose -f docker-compose.tuning.doctr.yml up -d doctr-gpu
# Ejecutar optimización (64 trials)
docker compose -f docker-compose.tuning.doctr.yml run raytune --service doctr --samples 64
<pclass="MsoNormal"><spanlang="ES">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.</span></p>
<aname="_Ref_Tab26"></a><pclass="MsoCaption"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->26<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Imágenes Docker generadas para el proyecto.</span></i></p>
<aname="_Ref_Fig6"></a><pclass="MsoCaption"style="text-align:center"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Figura <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Figura \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->6<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Arquitectura de microservicios para optimización OCR</span></i></p>
<pclass="MsoNormal"style="text-align:center"><spanlang="ES"><imgalt="Arquitectura de microservicios para optimización OCR"src="figures/figura_6.png"style="width:16cm;display:block;margin:0 auto"width="604"/></span></p>
<h4><spanlang="ES">Estrategia de Build Multi-Stage</span></h4>
<pclass="MsoNormal"><spanlang="ES">Los Dockerfiles utilizan una estrategia de build multi-stage para optimizar tiempos de construcción y tamaño de imágenes:</span></p>
<aname="_Ref_Fig7"></a><pclass="MsoCaption"style="text-align:center"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Figura <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Figura \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->7<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Estrategia de build multi-stage</span></i></p>
<pclass="MsoNormal"style="text-align:center"><spanlang="ES"><imgalt="Estrategia de build multi-stage"src="figures/figura_7.png"style="width:16cm;display:block;margin:0 auto"width="604"/></span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Ventajas de esta estrategia:</b></span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Caché de dependencias</b>: La etapa base (CUDA + dependencias) se cachea y reutiliza</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">2.<spanstyle="font-size:7pt"></span><b>Builds rápidos</b>: Los cambios de código solo reconstruyen la etapa de deploy (~10 segundos)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">3.<spanstyle="font-size:7pt"></span><b>Imágenes optimizadas</b>: Solo se incluyen los archivos necesarios para ejecución</span></p>
<pclass="MsoNormal"style="margin-left:2cm;margin-right:1cm"><i><spanlang="ES">*<i>\</i> 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.</span></i></p>
<h4><spanlang="ES">Gestión de Volúmenes</span></h4>
<pclass="MsoNormal"><spanlang="ES">Se utilizan volúmenes Docker nombrados para persistir los modelos descargados entre ejecuciones:</span></p>
<aname="_Ref_Tab28"></a><pclass="MsoCaption"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->28<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Volúmenes Docker para caché de modelos.</span></i></p>
<h4><spanlang="ES">Health Checks y Monitorización</span></h4>
<pclass="MsoNormal"><spanlang="ES">Todos los servicios implementan health checks para garantizar disponibilidad antes de iniciar la optimización:</span></p>
<pclass="MsoNormal"><spanlang="ES">Los tiempos de <spanstyle="font-family:Consolas;font-size:10pt">start_period</span> varían según el servicio debido al tiempo de carga de modelos:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>PaddleOCR</b>: 60 segundos (modelos más ligeros)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>EasyOCR</b>: 120 segundos (carga de modelos CRAFT)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>DocTR</b>: 180 segundos (modelos ResNet más pesados)</span></p>
<h4><spanlang="ES">Flujo de Ejecución Completo</span></h4>
<aname="_Ref_Fig8"></a><pclass="MsoCaption"style="text-align:center"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Figura <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Figura \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->8<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Flujo de ejecución de optimización con Ray Tune</span></i></p>
<pclass="MsoNormal"style="text-align:center"><spanlang="ES"><imgalt="Flujo de ejecución de optimización con Ray Tune"src="figures/figura_8.png"style="width:16cm;display:block;margin:0 auto"width="604"/></span></p>
<pclass="MsoNormal"><spanlang="ES">La clase <spanstyle="font-family:Consolas;font-size:10pt">ImageTextDataset</span> gestiona la carga de pares imagen-texto desde la estructura de carpetas pareadas. La implementación está disponible en el repositorio (ver Anexo A).</span></p>
<h4><spanlang="ES">Espacio de Búsqueda</span></h4>
<pclass="MsoNormal"><spanlang="ES">El espacio de búsqueda se definió considerando los hiperparámetros más relevantes identificados en la documentación de PaddleOCR, utilizando <spanstyle="font-family:Consolas;font-size:10pt">tune.choice()</span> para parámetros booleanos y <spanstyle="font-family:Consolas;font-size:10pt">tune.uniform()</span> para umbrales continuos. La implementación está disponible en <spanstyle="font-family:Consolas;font-size:10pt">src/raytune/raytune_ocr.py</span> (ver Anexo A).</span></p>
<divalign="center"><tablealign="center"border="1"cellpadding="0"cellspacing="0"class="MsoTableGrid"style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><tdstyle="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><b><spanlang="ES">Parámetro</span></b></p></td><tdstyle="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><b><spanlang="ES">Tipo</span></b></p></td><tdstyle="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><b><spanlang="ES">Rango</span></b></p></td><tdstyle="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><b><spanlang="ES">Descripción</span></b></p></td></tr><tr><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES"><spanstyle="font-family:Consolas;font-size:10pt">use_doc_orientation_classify</span></span></p></td><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">Booleano</span></p></td><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">{True, False}</span></p></td><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">Clasificación de orientación del documento completo</span></p></td></tr><tr><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES"><spanstyle="font-family:Consolas;font-size:10pt">use_doc_unwarping</span></span></p></td><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">Booleano</span></p></td><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">{True, False}</span></p></td><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">Corrección de deformación/curvatura</span></p></td></tr><tr><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES"><spanstyle="font-family:Consolas;font-size:10pt">textline_orientation</span></span></p></td><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">Booleano</span></p></td><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">{True, False}</span></p></td><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">Clasificación de orientación por línea de texto</span></p></td></tr><tr><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES"><spanstyle="font-family:Consolas;font-size:10pt">text_det_thresh</span></span></p></td><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">Continuo</span></p></td><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">[0.0, 0.7]</span></p></td><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">Umbral de probabilidad para píxeles de texto</span></p></td></tr><tr><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES"><spanstyle="font-family:Consolas;font-size:10pt">text_det_box_thresh</span></span></p></td><tdstyle="border:none;padding:5px"><pclass="MsoNormal"style="margin:0;text-align:center"><spanlang="ES">Continuo</span></p></td><tdstyle="bor
<pclass="MsoNormal"><spanlang="ES"><b>Justificación del espacio:</b></span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Rango [0.0, 0.7] para umbrales</b>: 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.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b><spanstyle="font-family:Consolas;font-size:10pt">text_det_unclip_ratio</span> fijo</b>: Por decisión de diseño inicial, este parámetro se mantuvo constante para reducir la dimensionalidad del espacio de búsqueda.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Parámetros booleanos completos</b>: Los tres parámetros de preprocesamiento se exploran completamente para identificar cuáles son necesarios para documentos digitales.</span></p>
<h4><spanlang="ES">Configuración de Ray Tune</span></h4>
<pclass="MsoNormal"><spanlang="ES">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 <spanstyle="font-family:Consolas;font-size:10pt">src/raytune/raytune_ocr.py</span> (ver Anexo A).</span></p>
<aname="_Ref_Tab31"></a><pclass="MsoCaption"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->31<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Parámetros de configuración de Ray Tune.</span></i></p>
<pclass="MsoNormal"><spanlang="ES"><b>Elección de 64 trials:</b></span></p>
<pclass="MsoNormal"><spanlang="ES">El número de trials se eligió considerando:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Espacio de búsqueda de 7 dimensiones (3 booleanas + 4 continuas)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Tiempo estimado por trial: ~6 minutos</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Tiempo total objetivo: <8 horas</span></p>
<aname="_Ref_Tab32"></a><pclass="MsoCaption"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->32<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Resumen de la ejecución del experimento.</span></i></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Baja varianza en CER</b>: 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.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Mediana vs Media</b>: La mediana del CER (0.87%) es menor que la media (2.30%), confirmando una distribución ligeramente sesgada hacia valores bajos.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Velocidad GPU</b>: 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).</span></p>
<aname="_Ref_Tab34"></a><pclass="MsoCaption"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->34<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Distribución de trials por rango de CER.</span></i></p>
<pclass="MsoNormal"><spanlang="ES">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.</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Hallazgo clave</b>: El parámetro <spanstyle="font-family:Consolas;font-size:10pt">text_det_thresh</span> 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.</span></p>
<h4><spanlang="ES">Impacto del Parámetro textline_orientation</span></h4>
<pclass="MsoNormal"><spanlang="ES">El parámetro booleano <spanstyle="font-family:Consolas;font-size:10pt">textline_orientation</span> demostró tener el mayor impacto en el rendimiento:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Reducción del CER</b>: Con <spanstyle="font-family:Consolas;font-size:10pt">textline_orientation=True</span>, el CER medio es 3.3 veces menor (3.76% vs 12.40%).</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Menor varianza</b>: La desviación estándar también se reduce significativamente (7.12% vs 14.93%), indicando resultados más consistentes.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Reducción del CER</b>: 69.7% cuando se habilita la clasificación de orientación de línea.</span></p>
<pclass="MsoNormal"style="text-align:center"><spanlang="ES"><imgalt="Impacto de textline_orientation en CER"src="figures/figura_9.png"style="width:16cm;display:block;margin:0 auto"width="604"/></span></p>
<pclass="MsoNormal"><spanlang="ES">El parámetro <spanstyle="font-family:Consolas;font-size:10pt">textline_orientation</span> activa un clasificador que determina la orientación de cada línea de texto detectada. Para documentos con layouts mixtos (tablas, encabezados laterales, direcciones postales), este clasificador asegura que el texto se lea en el orden correcto, evitando la mezcla de líneas de diferentes columnas o secciones.</span></p>
<h4><spanlang="ES">Análisis de Fallos Catastróficos</span></h4>
<pclass="MsoNormal"><spanlang="ES">Los trials con CER muy alto (>20%) presentaron patrones específicos:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Umbral de detección muy bajo</b> (<spanstyle="font-family:Consolas;font-size:10pt">text_det_thresh</span>< 0.1): Genera exceso de falsos positivos en la detección, incluyendo artefactos, manchas y ruido como "texto".</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Desactivación de orientación</b>: Sin el clasificador de orientación, las líneas de texto pueden mezclarse incorrectamente, especialmente en tablas.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Combinación fatal</b>: La peor combinación es umbral bajo + sin orientación, que produce textos completamente desordenados y con inserciones de ruido.</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Recomendación</b>: Evitar <spanstyle="font-family:Consolas;font-size:10pt">text_det_thresh</span>< 0.1 en cualquier configuración.</span></p>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">Comparación Baseline vs Optimizado</span></h3>
<h4><spanlang="ES">Evaluación sobre Dataset Completo</span></h4>
<pclass="MsoNormal"><spanlang="ES">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: <spanstyle="font-family:Consolas;font-size:10pt">textline_orientation=True</span>, <spanstyle="font-family:Consolas;font-size:10pt">use_doc_orientation_classify=True</span>, <spanstyle="font-family:Consolas;font-size:10pt">text_det_thresh=0.0462</span>, <spanstyle="font-family:Consolas;font-size:10pt">text_det_box_thresh=0.4862</span>, y <spanstyle="font-family:Consolas;font-size:10pt">text_rec_score_thresh=0.5658</span>.</span></p>
<aname="_Ref_Tab40"></a><pclass="MsoCaption"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->40<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Comparación baseline vs optimizado (45 páginas).</span></i></p>
<pclass="MsoNormal"style="margin-left:2cm;margin-right:1cm"><i><spanlang="ES"><b>Nota sobre generalización:</b> 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.</span></i></p>
<pclass="MsoNormal"style="text-align:center"><spanlang="ES"><imgalt="Reducción de errores: Baseline vs Optimizado (45 páginas)"src="figures/figura_10.png"style="width:16cm;display:block;margin:0 auto"width="604"/></span></p>
<pclass="MsoNormal"><spanlang="ES"><i>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.</i></span></p>
<pclass="MsoNormal"style="margin-left:2cm;margin-right:1cm"><i><spanlang="ES">"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."</span></i></p>
<aname="_Ref_Tab43"></a><pclass="MsoCaption"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->43<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Métricas de tiempo del experimento (GPU).</span></i></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span>El tiempo por página (~0.84 segundos) corresponde a ejecución con GPU (RTX 3060).</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">2.<spanstyle="font-size:7pt"></span>La variabilidad del tiempo es moderada (std = 0.53 s/página), con algunos trials más lentos debido a configuraciones con módulos de preprocesamiento activos.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">3.<spanstyle="font-size:7pt"></span>En comparación, la ejecución en CPU requiere ~69 segundos/página (82× más lento), lo que justifica el uso de GPU para optimización y producción.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Configuración del experimento</b>: Arquitectura Docker Compose, dataset de 45 páginas, espacio de búsqueda de 7 dimensiones, ejecución con GPU RTX 3060</span></p>
<pclass="MsoNormal"><spanlang="ES"> - <spanstyle="font-family:Consolas;font-size:10pt">textline_orientation=True</span> y <spanstyle="font-family:Consolas;font-size:10pt">use_doc_orientation_classify=True</span> son críticos - <spanstyle="font-family:Consolas;font-size:10pt">text_det_thresh</span> bajo (0.0462) optimiza la detección de texto - Ningún trial presentó fallos catastróficos (CER > 10%)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Mejora en dataset completo</b>: CER reducido de 8.85% a 7.72% (reducción del 12.8%)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Observación sobre generalización</b>: El mejor trial (0.79%) no generalizó completamente al dataset completo (7.72%), evidenciando sobreajuste al subconjunto de 5 páginas</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Fuentes de datos:</b></span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><ahref="https://github.com/seryus/MastersThesis/blob/main/src/run_tuning.py"><spanstyle="font-family:Consolas;font-size:10pt">src/run_tuning.py</span></a>: Script principal de optimización</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><ahref="https://github.com/seryus/MastersThesis/blob/main/src/raytune_ocr.py"><spanstyle="font-family:Consolas;font-size:10pt">src/raytune_ocr.py</span></a>: Librería de utilidades Ray Tune</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><ahref="https://github.com/seryus/MastersThesis/blob/main/src/results/raytune_paddle_results_20260119_122609.csv"><spanstyle="font-family:Consolas;font-size:10pt">src/results/raytune_paddle_results_20260119_122609.csv</span></a>: Resultados CSV de los 64 trials</span></p>
<pclass="MsoNormal"><spanlang="ES">Esta sección presenta un análisis consolidado de los resultados obtenidos en las fases de benchmark comparativo y optimización de hiperparámetros. Se discuten las implicaciones prácticas, se evalúa el cumplimiento de los objetivos planteados y se identifican las limitaciones del estudio.</span></p>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">Resumen Consolidado de Resultados</span></h3>
<h4><spanlang="ES">Progresión del Rendimiento</span></h4>
<aname="_Ref_Tab44"></a><pclass="MsoCaption"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->44<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Evolución del rendimiento a través del estudio.</span></i></p>
<pclass="MsoNormal"><spanlang="ES">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.</span></p>
<pclass="MsoNormal"style="margin-left:2cm;margin-right:1cm"><i><spanlang="ES"><b>Análisis del cumplimiento:</b> 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.</span></i></p>
<pclass="MsoNormal"><spanlang="ES">Basándose en el análisis de los resultados de optimización:</span></p>
<aname="_Ref_Tab46"></a><pclass="MsoCaption"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->46<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Ranking de importancia de hiperparámetros.</span></i></p>
<h4><spanlang="ES">Análisis del Parámetro textline_orientation</span></h4>
<pclass="MsoNormal"><spanlang="ES"><b>Por qué es tan importante:</b></span></p>
<pclass="MsoNormal"><spanlang="ES">El clasificador de orientación de línea resuelve un problema fundamental en documentos con layouts complejos: determinar el orden correcto de lectura. Sin este clasificador:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span>Las líneas de una tabla pueden mezclarse con texto adyacente</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">2.<spanstyle="font-size:7pt"></span>Los encabezados laterales pueden insertarse en posiciones incorrectas</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">3.<spanstyle="font-size:7pt"></span>El texto en columnas puede leerse en orden incorrecto</span></p>
<pclass="MsoNormal"><spanlang="ES">Para documentos académicos que típicamente incluyen tablas, listas y encabezados multinivel, este clasificador es esencial.</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Recomendación</b>: Siempre activar <spanstyle="font-family:Consolas;font-size:10pt">textline_orientation=True</span> para documentos estructurados.</span></p>
<h4><spanlang="ES">Análisis del Parámetro text_det_thresh</span></h4>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">En ejecución GPU con modelos Mobile, valores bajos de <spanstyle="font-family:Consolas;font-size:10pt">text_det_thresh</span> funcionan bien</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">El valor óptimo (0.0462) indica que una detección más sensible beneficia el rendimiento</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">A diferencia de CPU, no se observaron fallos catastróficos con valores bajos</span></p>
<pclass="MsoNormal"><spanlang="ES">En la configuración óptima GPU, este parámetro está <b>activado</b> (True), a diferencia de lo observado en experimentos anteriores. Esto sugiere que la clasificación de orientación del documento puede beneficiar incluso documentos digitales cuando se combina con <spanstyle="font-family:Consolas;font-size:10pt">textline_orientation=True</span>.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Documentos escaneados con rotación</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Fotografías de documentos con perspectiva</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Documentos curvados o deformados</span></p>
<pclass="MsoNormal"><spanlang="ES">Para documentos PDF digitales como los evaluados, este módulo es innecesario y puede introducir artefactos.</span></p>
<aname="_Ref_Tab49"></a><pclass="MsoCaption"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->49<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Tasa de error por tipo de contenido.</span></i></p>
<pclass="MsoNormal"style="margin-left:2cm;margin-right:1cm"><i><spanlang="ES"><b>Nota sobre OE5:</b> 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.</span></i></p>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">Limitaciones del Estudio</span></h3>
<h4><spanlang="ES">Limitaciones de Generalización</span></h4>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Tipo de documento único</b>: Solo se evaluaron documentos académicos de UNIR. La configuración óptima puede no ser transferible a otros tipos de documentos (facturas, formularios, contratos).</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Idioma único</b>: El estudio se centró en español. Otros idiomas con diferentes características ortográficas podrían requerir configuraciones diferentes.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Formato único</b>: Solo se evaluaron PDFs digitales. Documentos escaneados o fotografías de documentos podrían beneficiarse de diferentes configuraciones.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Ground truth automático</b>: El texto de referencia se extrajo programáticamente del PDF, lo cual puede introducir errores en layouts complejos donde el orden de lectura no es evidente.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Tamaño del dataset</b>: 45 páginas es un dataset limitado. Un dataset más amplio proporcionaría estimaciones más robustas.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Parámetro fijo</b>: <spanstyle="font-family:Consolas;font-size:10pt">text_det_unclip_ratio</span> se mantuvo en 0.0 durante todo el experimento. Explorar este parámetro podría revelar mejoras adicionales.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Subconjunto de ajuste limitado</b>: El ajuste de hiperparámetros se realizó sobre 5 páginas (páginas 5-10), lo que contribuyó al sobreajuste observado en la validación del dataset completo.</span></p>
<h4><spanlang="ES">Limitaciones de Validación</span></h4>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Sin validación cruzada</b>: No se realizó validación cruzada sobre diferentes subconjuntos del dataset.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Sin test set independiente</b>: El dataset de validación final se solapaba parcialmente con el de optimización.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>GPU disponible</b>: Acelera significativamente la exploración del espacio de hiperparámetros (82× más rápido que CPU).</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Modelo preentrenado adecuado</b>: El modelo ya soporta el idioma objetivo (como PaddleOCR para español).</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Dominio específico</b>: Se busca optimizar para un tipo de documento particular.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Mejora incremental</b>: El rendimiento baseline es aceptable pero mejorable.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Sin datos de entrenamiento</b>: No se dispone de datasets etiquetados para fine-tuning.</span></p>
<h4><spanlang="ES">Cuándo NO Aplicar Esta Metodología</span></h4>
<pclass="MsoNormal"><spanlang="ES">La optimización de hiperparámetros puede ser insuficiente cuando:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Idioma no soportado</b>: El modelo no incluye el idioma en su vocabulario.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Escritura manuscrita</b>: Requiere fine-tuning o modelos especializados.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Documentos muy degradados</b>: Escaneos de baja calidad o documentos históricos.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Requisitos de CER < 0.5%</b>: Puede requerir fine-tuning para alcanzar precisiones muy altas.</span></p>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">Resumen del Capítulo</span></h3>
<pclass="MsoNormal"><spanlang="ES">Este capítulo ha presentado el desarrollo completo de la contribución:</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Planteamiento de la comparativa:</b></span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Evaluación de EasyOCR, PaddleOCR y DocTR</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Selección de PaddleOCR por su configurabilidad</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Desarrollo de la comparativa:</b></span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">64 trials de Ray Tune con Optuna usando GPU RTX 3060</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Identificación de <spanstyle="font-family:Consolas;font-size:10pt">textline_orientation</span>, <spanstyle="font-family:Consolas;font-size:10pt">use_doc_orientation_classify</span> y <spanstyle="font-family:Consolas;font-size:10pt">text_det_thresh</span> como críticos</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">CER mínimo alcanzado en trial individual: <b>0.79%</b></span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Mejora del CER en dataset completo de 8.85% a 7.72% (reducción del <b>12.8%</b>)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Identificación de sobreajuste y recomendaciones prácticas</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">El objetivo de CER < 2% se cumple en el mejor trial (0.79%)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">La generalización al dataset completo (7.72%) revela sobreajuste que requiere trabajo futuro</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">La optimización de hiperparámetros con GPU es viable y eficiente (82× más rápido que CPU)</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Fuentes de datos:</b></span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><ahref="https://github.com/seryus/MastersThesis/blob/main/src/run_tuning.py"><spanstyle="font-family:Consolas;font-size:10pt">src/run_tuning.py</span></a>: Script principal de optimización</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><ahref="https://github.com/seryus/MastersThesis/blob/main/src/results/raytune_paddle_results_20260119_122609.csv"><spanstyle="font-family:Consolas;font-size:10pt">src/results/raytune_paddle_results_20260119_122609.csv</span></a>: Resultados CSV de PaddleOCR</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><ahref="https://github.com/seryus/MastersThesis/blob/main/src/results/raytune_easyocr_results_20260119_120204.csv"><spanstyle="font-family:Consolas;font-size:10pt">src/results/raytune_easyocr_results_20260119_120204.csv</span></a>: Resultados CSV de EasyOCR</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><ahref="https://github.com/seryus/MastersThesis/blob/main/src/results/raytune_doctr_results_20260119_121445.csv"><spanstyle="font-family:Consolas;font-size:10pt">src/results/raytune_doctr_results_20260119_121445.csv</span></a>: Resultados CSV de DocTR</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><spanstyle="font-family:Consolas;font-size:10pt">seryus.ddns.net/unir/paddle-ocr-gpu</span>: PaddleOCR con soporte GPU</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><spanstyle="font-family:Consolas;font-size:10pt">seryus.ddns.net/unir/easyocr-gpu</span>: EasyOCR con soporte GPU</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><spanstyle="font-family:Consolas;font-size:10pt">seryus.ddns.net/unir/doctr-gpu</span>: DocTR con soporte GPU</span></p>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">Comparativa de Rendimiento CPU vs GPU</span></h3>
<pclass="MsoNormal"><spanlang="ES">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.</span></p>
<pclass="MsoNormal"><spanlang="ES">Este hardware representa configuración típica de desarrollo, permitiendo evaluar el rendimiento en condiciones realistas de despliegue.</span></p>
<pclass="MsoNormal"><spanlang="ES">Se comparó el tiempo de procesamiento entre CPU y GPU utilizando los datos de <ahref="https://github.com/seryus/MastersThesis/blob/main/src/raytune_paddle_subproc_results_20251207_192320.csv"><spanstyle="font-family:Consolas;font-size:10pt">src/raytune_paddle_subproc_results_20251207_192320.csv</span></a> (CPU) y <ahref="https://github.com/seryus/MastersThesis/blob/main/src/results/raytune_paddle_results_20260119_122609.csv"><spanstyle="font-family:Consolas;font-size:10pt">src/results/raytune_paddle_results_20260119_122609.csv</span></a> (GPU).</span></p>
<aname="_Ref_Tab53"></a><pclass="MsoCaption"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->53<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Rendimiento comparativo CPU vs GPU.</span></i></p>
<pclass="MsoNormal"><spanlang="ES">La aceleración de 82× obtenida con GPU transforma la viabilidad del enfoque:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>Optimización en CPU (6.4 horas)</b>: Viable pero lento para iteraciones rápidas</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>Optimización en GPU (1.5 horas)</b>: Permite explorar más configuraciones y realizar múltiples experimentos</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>Producción con GPU (0.84s/página)</b>: Habilita procesamiento en tiempo real</span></p>
<h4><spanlang="ES">Comparación de Modelos PaddleOCR</span></h4>
<pclass="MsoNormal"><spanlang="ES">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.</span></p>
<aname="_Ref_Tab54"></a><pclass="MsoCaption"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->54<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Comparación de modelos Mobile vs Server en RTX 3060.</span></i></p>
<pclass="MsoNormal"><spanlang="ES">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.</span></p>
<h4><spanlang="ES">Conclusiones de la Validación GPU</span></h4>
<pclass="MsoNormal"><spanlang="ES">La validación con aceleración GPU permite extraer las siguientes conclusiones:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Aceleración significativa</b>: La GPU proporciona una aceleración de 82× sobre CPU, haciendo viable el procesamiento en tiempo real para aplicaciones interactivas.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Modelos Mobile recomendados</b>: Para hardware con VRAM limitada (≤6 GB), los modelos Mobile de PP-OCRv5 ofrecen el mejor balance entre precisión y recursos, funcionando de manera estable sin errores de memoria.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Viabilidad práctica</b>: Con GPU, el procesamiento de un documento completo (45 páginas) toma menos de 30 segundos, validando la aplicabilidad en entornos de producción donde el tiempo de respuesta es crítico.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Escalabilidad</b>: La arquitectura de microservicios dockerizados utilizada para la validación GPU facilita el despliegue horizontal, permitiendo escalar el procesamiento según demanda.</span></p>
<pclass="MsoNormal"><spanlang="ES">Esta validación demuestra que la configuración optimizada mediante Ray Tune mejora la precisión (CER: 8.85% → 7.72% en dataset completo, 0.79% en mejor trial individual) y, combinada con aceleración GPU, resulta prácticamente aplicable en escenarios de producción real.</span></p><h1style="mso-list:l22 level1 lfo18"><aname="_Toc160619818"><?if !supportLists?><spanlang="ES"style='mso-fareast-font-family:"CalibriLight";mso-fareast-theme-font:
major-latin;mso-bidi-font-family:"Calibri Light";mso-bidi-theme-font:major-latin'><spanstyle="mso-list:Ignore">5.<spanstyle='font:7.0pt "Times New Roman"'>
y trabajo futuro</span></a></h1><pclass="MsoNormal"><spanlang="ES">Este capítulo resume las principales conclusiones del trabajo, evalúa el grado de cumplimiento de los objetivos planteados y propone líneas de trabajo futuro que permitirían ampliar y profundizar los resultados obtenidos.</span></p>
<pclass="MsoNormal"><spanlang="ES">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.</span></p>
<pclass="MsoNormal"><spanlang="ES">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:</span></p>
<aname="_Ref_Tab55"></a><pclass="MsoCaption"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->55<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Cumplimiento del objetivo de CER.</span></i></p>
<pclass="MsoNormal"style="margin-left:2cm;margin-right:1cm"><i><spanlang="ES"><b>Nota:</b> 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.</span></i></p>
<pclass="MsoNormal"><spanlang="ES"><b>Respecto a OE1 (Comparativa de soluciones OCR)</b>:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Se evaluaron tres soluciones OCR de código abierto: EasyOCR, PaddleOCR (PP-OCRv5) y DocTR</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">PaddleOCR demostró el mejor rendimiento base para documentos en español</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">La configurabilidad del pipeline de PaddleOCR lo hace idóneo para optimización</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Respecto a OE2 (Preparación del conjunto de datos)</b>:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Se construyó un conjunto de datos estructurado con 45 páginas de documentos académicos</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">La clase <spanstyle="font-family:Consolas;font-size:10pt">ImageTextDataset</span> facilita la carga de pares imagen-texto</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">El texto de referencia se extrajo automáticamente del PDF mediante PyMuPDF</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">El parámetro <spanstyle="font-family:Consolas;font-size:10pt">textline_orientation</span> es el más influyente, siendo crítico para obtener buenos resultados</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">El parámetro <spanstyle="font-family:Consolas;font-size:10pt">use_doc_orientation_classify</span> demostró impacto positivo en la configuración GPU</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">El umbral <spanstyle="font-family:Consolas;font-size:10pt">text_det_thresh</span> presenta correlación negativa moderada (-0.52) con el CER</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">El parámetro <spanstyle="font-family:Consolas;font-size:10pt">use_doc_unwarping</span> no aporta mejora en documentos digitales</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Se ejecutaron 64 trials con el algoritmo OptunaSearch y aceleración GPU</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">El tiempo total del experimento fue aproximadamente 1.5 horas (con GPU RTX 3060)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">La arquitectura basada en contenedores Docker permitió superar incompatibilidades entre Ray y los motores OCR, facilitando además la portabilidad y reproducibilidad</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Respecto a OE5 (Validación de la configuración)</b>:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">Se validó la configuración óptima sobre el conjunto de datos completo de 45 páginas</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">El mejor trial individual alcanzó un CER de 0.79% (precisión del 99.21%)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">En el conjunto de datos completo se obtuvo una mejora del 12.8% en CER (8.85% → 7.72%)</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES">La diferencia entre resultados de trial y validación completa revela sobreajuste al subconjunto de optimización</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Arquitectura sobre umbrales</b>: Un único parámetro booleano (<spanstyle="font-family:Consolas;font-size:10pt">textline_orientation</span>) tiene más impacto que todos los umbrales continuos combinados.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Simplicidad para documentos digitales</b>: Para documentos PDF digitales (no escaneados), los módulos de corrección de orientación y deformación son innecesarios.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Optimización sin fine-tuning</b>: Se puede mejorar el rendimiento de modelos preentrenados mediante ajuste de hiperparámetros de inferencia, aunque la generalización a conjuntos de datos más amplios requiere validación cuidadosa.</span></p>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">Contribuciones del Trabajo</span></h3>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Metodología reproducible</b>: Se documenta un proceso completo de optimización de hiperparámetros OCR con Ray Tune + Optuna.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Análisis de hiperparámetros de PaddleOCR</b>: Se cuantifica el impacto de cada parámetro configurable mediante correlaciones y análisis comparativo.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Configuración óptima para español</b>: Se proporciona una configuración validada para documentos académicos en español.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Código fuente</b>: Todo el código está disponible en el repositorio GitHub para reproducción y extensión.</span></p>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">Limitaciones del Trabajo</span></h3>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Tipo de documento único</b>: Los experimentos se realizaron únicamente sobre documentos académicos de UNIR. La generalización a otros tipos de documentos requiere validación adicional.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Tamaño del conjunto de datos</b>: 45 páginas es un corpus limitado para conclusiones estadísticamente robustas.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Texto de referencia automático</b>: La extracción automática del texto de referencia puede introducir errores en diseños complejos.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Sobreajuste al subconjunto de optimización</b>: El ajuste sobre 5 páginas no generalizó completamente al conjunto de datos de 45 páginas, resultando en un CER de 7.72% frente al 0.79% del mejor trial.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Parámetro no explorado</b>: <spanstyle="font-family:Consolas;font-size:10pt">text_det_unclip_ratio</span> permaneció fijo en 0.0 durante todo el experimento.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Hardware de consumo</b>: Aunque la GPU RTX 3060 proporcionó una aceleración de 82× respecto a CPU, hardware empresarial podría ofrecer mejor rendimiento.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Validación cruzada</b>: Evaluar la configuración óptima en otros tipos de documentos en español (facturas, formularios, textos manuscritos).</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Subconjunto de optimización más amplio</b>: Utilizar un subconjunto mayor (15-20 páginas) para el ajuste de hiperparámetros y reducir el sobreajuste.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Exploración de <spanstyle="font-family:Consolas;font-size:10pt">text_det_unclip_ratio</span></b>: Incluir este parámetro en el espacio de búsqueda.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Conjunto de datos ampliado</b>: Construir un corpus más amplio y diverso de documentos en español.</span></p>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">Líneas de Investigación</span></h3>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Transfer learning de hiperparámetros</b>: Investigar si las configuraciones óptimas para un tipo de documento transfieren a otros dominios.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Optimización multi-objetivo</b>: Considerar simultáneamente CER, WER y tiempo de inferencia como objetivos.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>AutoML para OCR</b>: Aplicar técnicas de AutoML más avanzadas (Neural Architecture Search, meta-learning).</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Comparación con fine-tuning</b>: Cuantificar la brecha de rendimiento entre optimización de hiperparámetros y fine-tuning real.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Herramienta de configuración automática</b>: Desarrollar una herramienta que determine automáticamente la configuración óptima para un nuevo tipo de documento.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Integración en pipelines de producción</b>: Implementar la configuración optimizada en sistemas reales de procesamiento documental.</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES">1.<spanstyle="font-size:7pt"></span><b>Benchmark público</b>: Publicar un benchmark de OCR para documentos en español que facilite la comparación de soluciones.</span></p>
<pclass="MsoNormal"><spanlang="ES">Este trabajo demuestra que la optimización de hiperparámetros representa una alternativa viable al fine-tuning para mejorar sistemas OCR, especialmente cuando se dispone de modelos preentrenados para el idioma objetivo.</span></p>
<pclass="MsoNormal"><spanlang="ES">La metodología propuesta es reproducible, los resultados son cuantificables, y las conclusiones son aplicables a escenarios reales de procesamiento documental. Aunque el objetivo de CER < 2% se alcanzó en el mejor trial individual (0.79%), la validación sobre el conjunto de datos completo (7.72%) revela la importancia de utilizar subconjuntos de optimización representativos y de validar rigurosamente la generalización.</span></p>
<pclass="MsoNormal"><spanlang="ES">La infraestructura dockerizada desarrollada facilita la reproducibilidad de los experimentos y la evaluación sistemática de configuraciones OCR. La aceleración de 82× proporcionada por GPU hace viable la exploración exhaustiva de espacios de hiperparámetros en tiempos razonables.</span></p>
<pclass="MsoNormal"><spanlang="ES">El código fuente, las imágenes Docker y los datos experimentales están disponibles públicamente en el <ahref="https://github.com/seryus/MastersThesis">repositorio del proyecto</a> para facilitar la reproducción y extensión de este trabajo.</span></p><pclass="Ttulo1sinnumerar"><aname="_Toc160619821"><spanlang="ES">Referencias
bibliográficas</span></a></p><pclass="MsoBibliography"style="margin-left:36.0pt;text-indent:-36.0pt"><spanlang="ES">Akiba, T., Sano, S., Yanase, T., Ohta, T., & Koyama, M. (2019). Optuna: A next-generation hyperparameter optimization framework. <i>Proceedings of the 25th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining</i>, 2623-2631. https://doi.org/10.1145/3292500.3330701</span></p>
<pclass="MsoBibliography"style="margin-left:36.0pt;text-indent:-36.0pt"><spanlang="ES">Baek, Y., Lee, B., Han, D., Yun, S., & Lee, H. (2019). Character region awareness for text detection. <i>Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition</i>, 9365-9374. https://doi.org/10.1109/CVPR.2019.00959</span></p>
<pclass="MsoBibliography"style="margin-left:36.0pt;text-indent:-36.0pt"><spanlang="ES">Bergstra, J., & Bengio, Y. (2012). Random search for hyper-parameter optimization. <i>Journal of Machine Learning Research</i>, 13(1), 281-305. https://jmlr.org/papers/v13/bergstra12a.html</span></p>
<pclass="MsoBibliography"style="margin-left:36.0pt;text-indent:-36.0pt"><spanlang="ES">Bergstra, J., Bardenet, R., Bengio, Y., & Kégl, B. (2011). Algorithms for hyper-parameter optimization. <i>Advances in Neural Information Processing Systems</i>, 24, 2546-2554. https://papers.nips.cc/paper/2011/hash/86e8f7ab32cfd12577bc2619bc635690-Abstract.html</span></p>
<pclass="MsoBibliography"style="margin-left:36.0pt;text-indent:-36.0pt"><spanlang="ES">Cohen, J. (1988). <i>Statistical power analysis for the behavioral sciences</i> (2nd ed.). Lawrence Erlbaum Associates.</span></p>
<pclass="MsoBibliography"style="margin-left:36.0pt;text-indent:-36.0pt"><spanlang="ES">Doran, G. T. (1981). There's a S.M.A.R.T. way to write management's goals and objectives. <i>Management Review</i>, 70(11), 35-36.</span></p>
<pclass="MsoBibliography"style="margin-left:36.0pt;text-indent:-36.0pt"><spanlang="ES">Du, Y., Li, C., Guo, R., Yin, X., Liu, W., Zhou, J., Bai, Y., Yu, Z., Yang, Y., Dang, Q., & Wang, H. (2020). PP-OCR: A practical ultra lightweight OCR system. <i>arXiv preprint arXiv:2009.09941</i>. https://arxiv.org/abs/2009.09941</span></p>
<pclass="MsoBibliography"style="margin-left:36.0pt;text-indent:-36.0pt"><spanlang="ES">Du, Y., Li, C., Guo, R., Cui, C., Liu, W., Zhou, J., Lu, B., Yang, Y., Liu, Q., Hu, X., Yu, D., & Wang, H. (2023). PP-OCRv4: Mobile scene text detection and recognition. <i>arXiv preprint arXiv:2310.05930</i>. https://arxiv.org/abs/2310.05930</span></p>
<pclass="MsoBibliography"style="margin-left:36.0pt;text-indent:-36.0pt"><spanlang="ES">Feurer, M., & Hutter, F. (2019). Hyperparameter optimization. In F. Hutter, L. Kotthoff, & J. Vanschoren (Eds.), <i>Automated machine learning: Methods, systems, challenges</i> (pp. 3-33). Springer. https://doi.org/10.1007/978-3-030-05318-5_1</span></p>
<pclass="MsoBibliography"style="margin-left:36.0pt;text-indent:-36.0pt"><spanlang="ES">He, P., Huang, W., Qiao, Y., Loy, C. C., & Tang, X. (2016). Reading scene text in deep convolutional sequences. <i>Proceedings of the AAAI Conference on Artificial Intelligence</i>, 30(1), 3501-3508. https://doi.org/10.1609/aaai.v30i1.10291</span></p>
<pclass="MsoBibliography"style="margin-left:36.0pt;text-indent:-36.0pt"><spanlang="ES">Liang, J., Doermann, D., & Li, H. (2005). Camera-based analysis of text and documents: A survey. <i>International Journal of Document Analysis and Recognition</i>, 7(2), 84-104. https://doi.org/10.1007/s10032-004-0138-z</span></p>
<pclass="MsoBibliography"style="margin-left:36.0pt;text-indent:-36.0pt"><spanlang="ES">Liao, M., Wan, Z., Yao, C., Chen, K., & Bai, X. (2020). Real-time scene text detection with differentiable binarization. <i>Proceedings of the AAAI Conference on Artificial Intelligence</i>, 34(07), 11474-11481. https://doi.org/10.1609/aaai.v34i07.6812</span></p>
<pclass="MsoBibliography"style="margin-left:36.0pt;text-indent:-36.0pt"><spanlang="ES">Liaw, R., Liang, E., Nishihara, R., Moritz, P., Gonzalez, J. E., & Stoica, I. (2018). Tune: A research platform for distributed model selection and training. <i>arXiv preprint arXiv:1807.05118</i>. https://arxiv.org/abs/1807.05118</span></p>
<pclass="MsoBibliography"style="margin-left:36.0pt;text-indent:-36.0pt"><spanlang="ES">Mindee. (2021). DocTR: Document Text Recognition. GitHub. https://github.com/mindee/doctr</span></p>
<pclass="MsoBibliography"style="margin-left:36.0pt;text-indent:-36.0pt"><spanlang="ES">Moritz, P., Nishihara, R., Wang, S., Tumanov, A., Liaw, R., Liang, E., Elibol, M., Yang, Z., Paul, W., Jordan, M. I., & Stoica, I. (2018). Ray: A distributed framework for emerging AI applications. <i>13th USENIX Symposium on Operating Systems Design and Implementation (OSDI 18)</i>, 561-577. https://www.usenix.org/conference/osdi18/presentation/moritz</span></p>
<pclass="MsoBibliography"style="margin-left:36.0pt;text-indent:-36.0pt"><spanlang="ES">Morris, A. C., Maier, V., & Green, P. D. (2004). From WER and RIL to MER and WIL: Improved evaluation measures for connected speech recognition. <i>Eighth International Conference on Spoken Language Processing</i>. https://doi.org/10.21437/Interspeech.2004-668</span></p>
<pclass="MsoBibliography"style="margin-left:36.0pt;text-indent:-36.0pt"><spanlang="ES">PaddlePaddle. (2024). PaddleOCR: Awesome multilingual OCR toolkits based on PaddlePaddle. GitHub. https://github.com/PaddlePaddle/PaddleOCR</span></p>
<pclass="MsoBibliography"style="margin-left:36.0pt;text-indent:-36.0pt"><spanlang="ES">Pearson, K. (1895). Notes on regression and inheritance in the case of two parents. <i>Proceedings of the Royal Society of London</i>, 58, 240-242. https://doi.org/10.1098/rspl.1895.0041</span></p>
<pclass="MsoBibliography"style="margin-left:36.0pt;text-indent:-36.0pt"><spanlang="ES">Shi, B., Bai, X., & Yao, C. (2016). An end-to-end trainable neural network for image-based sequence recognition and its application to scene text recognition. <i>IEEE Transactions on Pattern Analysis and Machine Intelligence</i>, 39(11), 2298-2304. https://doi.org/10.1109/TPAMI.2016.2646371</span></p>
<pclass="MsoBibliography"style="margin-left:36.0pt;text-indent:-36.0pt"><spanlang="ES">Smith, R. (2007). An overview of the Tesseract OCR engine. <i>Ninth International Conference on Document Analysis and Recognition (ICDAR 2007)</i>, 2, 629-633. https://doi.org/10.1109/ICDAR.2007.4376991</span></p>
<pclass="MsoBibliography"style="margin-left:36.0pt;text-indent:-36.0pt"><spanlang="ES">Zhou, X., Yao, C., Wen, H., Wang, Y., Zhou, S., He, W., & Liang, J. (2017). EAST: An efficient and accurate scene text detector. <i>Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition</i>, 5551-5560. https://doi.org/10.1109/CVPR.2017.283</span></p>
<pclass="MsoBibliography"style="margin-left:36.0pt;text-indent:-36.0pt"><spanlang="ES">Zoph, B., & Le, Q. V. (2017). Neural architecture search with reinforcement learning. <i>International Conference on Learning Representations (ICLR)</i>. https://arxiv.org/abs/1611.01578</span></p>
major-latin;mso-bidi-font-family:"Calibri Light";mso-bidi-theme-font:major-latin'><spanstyle="mso-list:Ignore">Anexo A.<spanstyle='font:7.0pt "Times New Roman"'>
</span></span></span><?endif?><spanlang="ES">Código fuente y datos analizados</span></a></p><h2style="mso-list:l22 level2 lfo18"><spanlang="ES"style="text-transform:none">A.1 Repositorio del Proyecto</span></h2>
<pclass="MsoNormal"><spanlang="ES">El código fuente completo y los datos utilizados en este trabajo están disponibles en el siguiente repositorio:</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>URL del repositorio:</b> https://github.com/seryus/MastersThesis</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>Servicios OCR dockerizados</b>: PaddleOCR, DocTR, EasyOCR con soporte GPU</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>Scripts de evaluación</b>: Herramientas para evaluar y comparar modelos OCR</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>Scripts de ajuste</b>: Ray Tune con Optuna para optimización de hiperparámetros</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>Dataset</b>: Imágenes y textos de referencia utilizados</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><b>Resultados</b>: Archivos CSV con los resultados de los 64 trials por servicio</span></p>
<h2style="mso-list:l22 level2 lfo18"><spanlang="ES"style="text-transform:none">A.2 Estructura del Repositorio</span></h2>
<pclass="MsoNormal"style="text-align:center"><spanlang="ES"><imgalt="Estructura del repositorio MastersThesis"src="figures/figura_11.png"style="width:16cm;display:block;margin:0 auto"width="604"/></span></p>
<aname="_Ref_Tab57"></a><pclass="MsoCaption"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->57<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Especificaciones del sistema de desarrollo.</span></i></p>
<pclass="MsoNormal"style="margin-left:2cm;margin-right:1cm"><i><spanlang="ES"><b>Nota:</b> 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.</span></i></p>
<pclass="MsoNormal"style="margin-left:2cm;margin-right:1cm"><i><spanlang="ES"><b>Nota:</b> 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 <spanstyle="font-family:Consolas;font-size:10pt">docker compose down</span>.</span></i></p>
<h2style="mso-list:l22 level2 lfo18"><spanlang="ES"style="text-transform:none">A.7 Métricas de Rendimiento</span></h2>
<pclass="MsoNormal"><spanlang="ES">Los resultados detallados de las evaluaciones y ajustes de hiperparámetros se encuentran en:</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><ahref="metrics/metrics.md">Métricas Generales</a> - Comparativa de los tres servicios</span></p>
<pclass="MsoListParagraphCxSpMiddle"style="margin-left:36pt;text-indent:-18pt"><spanlang="ES"style="font-family:Symbol">·</span><spanlang="ES"style="font-size:7pt"></span><spanlang="ES"><ahref="metrics/metrics_doctr.md">DocTR</a> - Más rápido (0.50s/página)</span></p>
<aname="_Ref_Tab60"></a><pclass="MsoCaption"><b><spanlang="ES"style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->60<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><spanlang="ES"style="font-size:12.0pt;line-height:150%"></span><i><spanlang="ES"style="font-size:12.0pt;line-height:150%">Resumen de resultados del benchmark por servicio.</span></i></p>