more doc corrections
Some checks failed
build_docker / essential (pull_request) Has been cancelled
build_docker / build_cpu (pull_request) Has been cancelled
build_docker / build_gpu (pull_request) Has been cancelled
build_docker / build_easyocr (pull_request) Has been cancelled
build_docker / build_easyocr_gpu (pull_request) Has been cancelled
build_docker / build_doctr (pull_request) Has been cancelled
build_docker / build_doctr_gpu (pull_request) Has been cancelled
build_docker / build_raytune (pull_request) Has been cancelled
Some checks failed
build_docker / essential (pull_request) Has been cancelled
build_docker / build_cpu (pull_request) Has been cancelled
build_docker / build_gpu (pull_request) Has been cancelled
build_docker / build_easyocr (pull_request) Has been cancelled
build_docker / build_easyocr_gpu (pull_request) Has been cancelled
build_docker / build_doctr (pull_request) Has been cancelled
build_docker / build_doctr_gpu (pull_request) Has been cancelled
build_docker / build_raytune (pull_request) Has been cancelled
This commit is contained in:
@@ -5196,7 +5196,7 @@ color:#0098CD;mso-font-kerning:16.0pt;mso-bidi-font-weight:bold'><o:p></o:p></sp
|
||||
<p class="MsoNormal"><span lang="ES"><b>Fuentes de datos:</b> <span style="font-family:Consolas;font-size:10pt">ocr_benchmark_notebook.ipynb</span> y documentación oficial de PaddleOCR.</span></p>
|
||||
<h2 style="mso-list:l22 level2 lfo18"><span lang="ES" style="text-transform:none">Desarrollo de la comparativa: Optimización de hiperparámetros</span></h2>
|
||||
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Introducción</span></h3>
|
||||
<p class="MsoNormal"><span lang="ES">Una vez seleccionado PaddleOCR como motor base, el siguiente paso fue explorar sistemáticamente su espacio de configuración para identificar los hiperparámetros que maximizan el rendimiento en documentos académicos en español. Para ello se empleó Ray Tune con el algoritmo de búsqueda Optuna, una combinación que permite explorar eficientemente espacios de búsqueda mixtos (parámetros continuos y categóricos). Los experimentos se implementaron en <a href="https://github.com/seryus/MastersThesis/blob/main/src/run_tuning.py"><span style="font-family:Consolas;font-size:10pt">src/run_tuning.py</span></a> con apoyo de la librería <a href="https://github.com/seryus/MastersThesis/blob/main/src/raytune_ocr.py"><span style="font-family:Consolas;font-size:10pt">src/raytune_ocr.py</span></a>, almacenándose los resultados en <a href="https://github.com/seryus/MastersThesis/tree/main/src/results"><span style="font-family:Consolas;font-size:10pt">src/results/</span></a>.</span></p>
|
||||
<p class="MsoNormal"><span lang="ES">Una vez seleccionado PaddleOCR como motor base, el siguiente paso fue explorar sistemáticamente su espacio de configuración para identificar los hiperparámetros que maximizan el rendimiento en documentos académicos en español. Para ello se empleó Ray Tune con el algoritmo de búsqueda Optuna, una combinación que permite explorar eficientemente espacios de búsqueda mixtos (parámetros continuos y categóricos). Los experimentos se implementaron en <a href="https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/run_tuning.py"><span style="font-family:Consolas;font-size:10pt">src/run_tuning.py</span></a> con apoyo de la librería <a href="https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/raytune_ocr.py"><span style="font-family:Consolas;font-size:10pt">src/raytune_ocr.py</span></a>, almacenándose los resultados en <a href="https://seryus.ddns.net/unir/MastersThesis/-/tree/main/src/results"><span style="font-family:Consolas;font-size:10pt">src/results/</span></a>.</span></p>
|
||||
<p class="MsoNormal"><span lang="ES">Esta aproximación ofrece ventajas significativas frente al fine-tuning tradicional: no requiere datasets de entrenamiento etiquetados, no modifica los pesos del modelo preentrenado, y puede ejecutarse con hardware de consumo cuando se dispone de aceleración GPU.</span></p>
|
||||
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Configuración del Experimento</span></h3>
|
||||
<h4><span lang="ES">Entorno de Ejecución</span></h4>
|
||||
@@ -5264,7 +5264,7 @@ docker compose -f docker-compose.tuning.doctr.yml down</pre>
|
||||
<h4><span lang="ES">Docker Compose Files</span></h4>
|
||||
<p class="MsoNormal"><span lang="ES">El proyecto incluye múltiples archivos Docker Compose para diferentes escenarios de uso:</span></p>
|
||||
<a name="_Ref_Tab27"></a><p class="MsoCaption"><b><span lang="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]-->27<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Archivos Docker Compose del proyecto.</span></i></p>
|
||||
<div align="center"><table align="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><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Archivo</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Propósito</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Servicios</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><a href="https://github.com/seryus/MastersThesis/blob/main/src/docker-compose.tuning.yml"><span style="font-family:Consolas;font-size:10pt">docker-compose.tuning.yml</span></a></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Optimización principal</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">RayTune + PaddleOCR + DocTR</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><a href="https://github.com/seryus/MastersThesis/blob/main/src/docker-compose.tuning.easyocr.yml"><span style="font-family:Consolas;font-size:10pt">docker-compose.tuning.easyocr.yml</span></a></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Optimización EasyOCR</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">RayTune + EasyOCR</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><a href="https://github.com/seryus/MastersThesis/blob/main/src/docker-compose.tuning.paddle.yml"><span style="font-family:Consolas;font-size:10pt">docker-compose.tuning.paddle.yml</span></a></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Optimización PaddleOCR</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">RayTune + PaddleOCR</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><a href="https://github.com/seryus/MastersThesis/blob/main/src/docker-compose.tuning.doctr.yml"><span style="font-family:Consolas;font-size:10pt">docker-compose.tuning.doctr.yml</span></a></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Optimización DocTR</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">RayTune + DocTR</span></p></td></tr></table></div>
|
||||
<div align="center"><table align="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><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Archivo</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Propósito</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Servicios</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/docker-compose.tuning.yml"><span style="font-family:Consolas;font-size:10pt">docker-compose.tuning.yml</span></a></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Optimización principal</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">RayTune + PaddleOCR + DocTR</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/docker-compose.tuning.easyocr.yml"><span style="font-family:Consolas;font-size:10pt">docker-compose.tuning.easyocr.yml</span></a></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Optimización EasyOCR</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">RayTune + EasyOCR</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/docker-compose.tuning.paddle.yml"><span style="font-family:Consolas;font-size:10pt">docker-compose.tuning.paddle.yml</span></a></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Optimización PaddleOCR</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">RayTune + PaddleOCR</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/docker-compose.tuning.doctr.yml"><span style="font-family:Consolas;font-size:10pt">docker-compose.tuning.doctr.yml</span></a></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Optimización DocTR</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">RayTune + DocTR</span></p></td></tr></table></div>
|
||||
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: Elaboración propia.</span></p>
|
||||
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
|
||||
<p class="MsoQuote"><i><span lang="ES"><b>Nota:</b> 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>
|
||||
@@ -5297,7 +5297,7 @@ docker compose -f docker-compose.tuning.doctr.yml down</pre>
|
||||
<p class="MsoNormal"><span lang="ES">Para reproducir los experimentos:</span></p>
|
||||
<div style="background:#E6F4F9;border-top:solid #0098CD .5pt;border-bottom:solid #0098CD .5pt;padding:8pt 12pt;margin:6pt 0">
|
||||
<pre style="font-family:Consolas,monospace;font-size:9pt;color:#333333;margin:0;white-space:pre-wrap;word-wrap:break-word"># 1. Clonar repositorio
|
||||
git clone https://github.com/seryus/MastersThesis.git
|
||||
git clone https://seryus.ddns.net/unir/MastersThesis.git
|
||||
cd MastersThesis/src
|
||||
|
||||
# 2. Iniciar servicio OCR (requiere nvidia-docker)
|
||||
@@ -5317,9 +5317,9 @@ ls -la results/raytune_paddle_results_*.csv
|
||||
docker compose -f docker-compose.tuning.paddle.yml down</pre>
|
||||
</div>
|
||||
<p class="MsoNormal"><span lang="ES">Los resultados de los experimentos están disponibles en:</span></p>
|
||||
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt"> </span><span lang="ES"><a href="https://github.com/seryus/MastersThesis/blob/main/src/results/raytune_paddle_results_20260119_122609.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_paddle_results_20260119_122609.csv</span></a></span></p>
|
||||
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt"> </span><span lang="ES"><a href="https://github.com/seryus/MastersThesis/blob/main/src/results/raytune_easyocr_results_20260119_120204.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_easyocr_results_20260119_120204.csv</span></a></span></p>
|
||||
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt"> </span><span lang="ES"><a href="https://github.com/seryus/MastersThesis/blob/main/src/results/raytune_doctr_results_20260119_121445.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_doctr_results_20260119_121445.csv</span></a></span></p>
|
||||
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt"> </span><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/results/raytune_paddle_results_20260119_122609.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_paddle_results_20260119_122609.csv</span></a></span></p>
|
||||
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt"> </span><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/results/raytune_easyocr_results_20260119_120204.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_easyocr_results_20260119_120204.csv</span></a></span></p>
|
||||
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt"> </span><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/results/raytune_doctr_results_20260119_121445.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_doctr_results_20260119_121445.csv</span></a></span></p>
|
||||
<h4><span lang="ES">Dataset Extendido</span></h4>
|
||||
<p class="MsoNormal"><span lang="ES">Para la fase de optimización se extendió el dataset:</span></p>
|
||||
<a name="_Ref_Tab29"></a><p class="MsoCaption"><b><span lang="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]-->29<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Características del dataset de optimización.</span></i></p>
|
||||
@@ -5468,7 +5468,7 @@ Configuración óptima:
|
||||
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Síntesis de la Optimización</span></h3>
|
||||
<p class="MsoNormal"><span lang="ES">Los 64 trials ejecutados con Ray Tune y aceleración GPU revelaron patrones claros en el comportamiento de PaddleOCR. El hallazgo más significativo es que los parámetros estructurales —<span style="font-family:Consolas;font-size:10pt">textline_orientation</span> y <span style="font-family:Consolas;font-size:10pt">use_doc_orientation_classify</span>— tienen mayor impacto que los umbrales numéricos: activarlos reduce el CER medio de 12.40% a 3.76%. En cuanto a umbrales, valores bajos de <span style="font-family:Consolas;font-size:10pt">text_det_thresh</span> (~0.05) benefician el rendimiento, mientras que <span style="font-family:Consolas;font-size:10pt">use_doc_unwarping</span> resulta innecesario para PDFs digitales.</span></p>
|
||||
<p class="MsoNormal"><span lang="ES">El mejor trial alcanzó un CER de 0.79%, cumpliendo el objetivo de CER < 2%. No obstante, la validación sobre el dataset completo de 45 páginas arrojó un CER de 7.72%, evidenciando sobreajuste al subconjunto de optimización de 5 páginas. Aun así, esto representa una mejora del 12.8% respecto al baseline (8.85%), demostrando el valor de la optimización sistemática incluso cuando la generalización es imperfecta.</span></p>
|
||||
<p class="MsoNormal"><span lang="ES"><b>Fuentes de datos:</b> <a href="https://github.com/seryus/MastersThesis/blob/main/src/run_tuning.py"><span style="font-family:Consolas;font-size:10pt">src/run_tuning.py</span></a>, <a href="https://github.com/seryus/MastersThesis/blob/main/src/raytune_ocr.py"><span style="font-family:Consolas;font-size:10pt">src/raytune_ocr.py</span></a>, <a href="https://github.com/seryus/MastersThesis/blob/main/src/results/raytune_paddle_results_20260119_122609.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_paddle_results_20260119_122609.csv</span></a>.</span></p>
|
||||
<p class="MsoNormal"><span lang="ES"><b>Fuentes de datos:</b> <a href="https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/run_tuning.py"><span style="font-family:Consolas;font-size:10pt">src/run_tuning.py</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/raytune_ocr.py"><span style="font-family:Consolas;font-size:10pt">src/raytune_ocr.py</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/results/raytune_paddle_results_20260119_122609.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_paddle_results_20260119_122609.csv</span></a>.</span></p>
|
||||
<h2 style="mso-list:l22 level2 lfo18"><span lang="ES" style="text-transform:none">Discusión y análisis de resultados</span></h2>
|
||||
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Introducción</span></h3>
|
||||
<p class="MsoNormal"><span lang="ES">Los resultados obtenidos en las secciones anteriores requieren un análisis que trascienda los números individuales para comprender su significado práctico. En esta sección se consolidan los hallazgos del benchmark comparativo y la optimización de hiperparámetros, evaluando hasta qué punto se han cumplido los objetivos planteados y qué limitaciones condicionan la generalización de las conclusiones.</span></p>
|
||||
@@ -5575,10 +5575,10 @@ Configuración óptima:
|
||||
<p class="MsoNormal"><span lang="ES">Los resultados cuantifican tanto los logros como las limitaciones del enfoque. El mejor trial individual alcanzó un CER de 0.79%, cumpliendo holgadamente el objetivo de CER < 2%. Sin embargo, la validación sobre el dataset completo de 45 páginas reveló un CER de 7.72%, lo que representa una mejora del 12.8% respecto al baseline (8.85%) pero evidencia sobreajuste al subconjunto de optimización. Esta observación es valiosa: indica que futuros trabajos deberían emplear subconjuntos de optimización más representativos o aplicar técnicas de regularización.</span></p>
|
||||
<p class="MsoNormal"><span lang="ES">Desde el punto de vista práctico, la infraestructura dockerizada desarrollada y la aceleración GPU (82× más rápida que CPU) demuestran la viabilidad de esta metodología tanto para experimentación como para despliegue en producción.</span></p>
|
||||
<p class="MsoNormal"><span lang="ES"><b>Fuentes de datos:</b></span></p>
|
||||
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt"> </span><span lang="ES"><a href="https://github.com/seryus/MastersThesis/blob/main/src/run_tuning.py"><span style="font-family:Consolas;font-size:10pt">src/run_tuning.py</span></a>: Script principal de optimización</span></p>
|
||||
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt"> </span><span lang="ES"><a href="https://github.com/seryus/MastersThesis/blob/main/src/results/raytune_paddle_results_20260119_122609.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_paddle_results_20260119_122609.csv</span></a>: Resultados CSV de PaddleOCR</span></p>
|
||||
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt"> </span><span lang="ES"><a href="https://github.com/seryus/MastersThesis/blob/main/src/results/raytune_easyocr_results_20260119_120204.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_easyocr_results_20260119_120204.csv</span></a>: Resultados CSV de EasyOCR</span></p>
|
||||
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt"> </span><span lang="ES"><a href="https://github.com/seryus/MastersThesis/blob/main/src/results/raytune_doctr_results_20260119_121445.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_doctr_results_20260119_121445.csv</span></a>: Resultados CSV de DocTR</span></p>
|
||||
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt"> </span><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/run_tuning.py"><span style="font-family:Consolas;font-size:10pt">src/run_tuning.py</span></a>: Script principal de optimización</span></p>
|
||||
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt"> </span><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/results/raytune_paddle_results_20260119_122609.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_paddle_results_20260119_122609.csv</span></a>: Resultados CSV de PaddleOCR</span></p>
|
||||
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt"> </span><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/results/raytune_easyocr_results_20260119_120204.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_easyocr_results_20260119_120204.csv</span></a>: Resultados CSV de EasyOCR</span></p>
|
||||
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt"> </span><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/results/raytune_doctr_results_20260119_121445.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_doctr_results_20260119_121445.csv</span></a>: Resultados CSV de DocTR</span></p>
|
||||
<p class="MsoNormal"><span lang="ES"><b>Imágenes Docker:</b></span></p>
|
||||
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt"> </span><span lang="ES"><a href="https://seryus.ddns.net/unir/-/packages/container/paddle-ocr-gpu/latest"><span style="font-family:Consolas;font-size:10pt">seryus.ddns.net/unir/paddle-ocr-gpu</span></a>: PaddleOCR con soporte GPU</span></p>
|
||||
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt"> </span><span lang="ES"><a href="https://seryus.ddns.net/unir/-/packages/container/easyocr-gpu/latest"><span style="font-family:Consolas;font-size:10pt">seryus.ddns.net/unir/easyocr-gpu</span></a>: EasyOCR con soporte GPU</span></p>
|
||||
@@ -5592,7 +5592,7 @@ Configuración óptima:
|
||||
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
|
||||
<p class="MsoNormal"><span lang="ES">Este hardware representa configuración típica de desarrollo, permitiendo evaluar el rendimiento en condiciones realistas de despliegue.</span></p>
|
||||
<h4><span lang="ES">Comparación CPU vs GPU</span></h4>
|
||||
<p class="MsoNormal"><span lang="ES">Se comparó el tiempo de procesamiento entre CPU y GPU utilizando los datos de <a href="https://github.com/seryus/MastersThesis/blob/main/src/raytune_paddle_subproc_results_20251207_192320.csv"><span style="font-family:Consolas;font-size:10pt">src/raytune_paddle_subproc_results_20251207_192320.csv</span></a> (CPU) y <a href="https://github.com/seryus/MastersThesis/blob/main/src/results/raytune_paddle_results_20260119_122609.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_paddle_results_20260119_122609.csv</span></a> (GPU).</span></p>
|
||||
<p class="MsoNormal"><span lang="ES">Se comparó el tiempo de procesamiento entre CPU y GPU utilizando los datos de <a href="https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/raytune_paddle_subproc_results_20251207_192320.csv"><span style="font-family:Consolas;font-size:10pt">src/raytune_paddle_subproc_results_20251207_192320.csv</span></a> (CPU) y <a href="https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/results/raytune_paddle_results_20260119_122609.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_paddle_results_20260119_122609.csv</span></a> (GPU).</span></p>
|
||||
<a name="_Ref_Tab53"></a><p class="MsoCaption"><b><span lang="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><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Rendimiento comparativo CPU vs GPU.</span></i></p>
|
||||
<div align="center"><table align="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><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Métrica</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">CPU</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">GPU (RTX 3060)</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Factor de Aceleración</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Tiempo/Página (promedio)</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">69.4s</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.84s</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>82x</b></span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Dataset completo (45 páginas)</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">~52 min</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">~38 seg</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>82x</b></span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">64 trials × 5 páginas</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">~6.4 horas</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">~1.5 horas</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>4.3x</b></span></p></td></tr></table></div>
|
||||
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: Elaboración propia.</span></p>
|
||||
@@ -5665,7 +5665,7 @@ y trabajo futuro</span></a></h1><p class="MsoNormal"><span lang="ES">A lo largo
|
||||
<p class="MsoNormal"><span lang="ES">En síntesis, este trabajo ha demostrado 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 y recursos limitados de tiempo o datos etiquetados.</span></p>
|
||||
<p class="MsoNormal"><span lang="ES">La metodología propuesta cumple los requisitos de reproducibilidad científica: los experimentos pueden replicarse, los resultados son cuantificables y las conclusiones son aplicables a escenarios reales de procesamiento documental. Sin embargo, la experiencia también ha puesto de manifiesto la importancia de diseñar cuidadosamente los experimentos de optimización. Aunque el objetivo de CER inferior al 2% se alcanzó en el mejor trial individual (0.79%), la validación sobre el conjunto de datos completo (7.72%) revela que el tamaño y representatividad del subconjunto de optimización son factores críticos que no deben subestimarse.</span></p>
|
||||
<p class="MsoNormal"><span lang="ES">La infraestructura dockerizada desarrollada constituye una aportación práctica que trasciende los resultados numéricos. Al encapsular los motores OCR en contenedores independientes, se resuelven problemas de compatibilidad entre dependencias y se garantiza que cualquier investigador pueda reproducir exactamente las condiciones experimentales. La aceleración de 82× proporcionada por GPU transforma lo que sería un experimento de días en uno de horas, haciendo viable la exploración exhaustiva de espacios de hiperparámetros con hardware de consumo.</span></p>
|
||||
<p class="MsoNormal"><span lang="ES">El código fuente, las imágenes Docker y los datos experimentales están disponibles públicamente en el <a href="https://github.com/seryus/MastersThesis">repositorio del proyecto</a>. Esta apertura busca facilitar no solo la reproducción de los resultados, sino también la extensión de este trabajo hacia nuevos tipos de documentos, idiomas o motores OCR.</span></p><p class="Ttulo1sinnumerar"><a name="_Toc160619821"><span lang="ES">Referencias
|
||||
<p class="MsoNormal"><span lang="ES">El código fuente, las imágenes Docker y los datos experimentales están disponibles públicamente en el <a href="https://seryus.ddns.net/unir/MastersThesis">repositorio del proyecto</a>. Esta apertura busca facilitar no solo la reproducción de los resultados, sino también la extensión de este trabajo hacia nuevos tipos de documentos, idiomas o motores OCR.</span></p><p class="Ttulo1sinnumerar"><a name="_Toc160619821"><span lang="ES">Referencias
|
||||
bibliográficas</span></a></p><p class="MsoBibliography" style="margin-left:36.0pt;text-indent:-36.0pt"><span lang="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>
|
||||
<p class="MsoBibliography" style="margin-left:36.0pt;text-indent:-36.0pt"><span lang="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>
|
||||
<p class="MsoBibliography" style="margin-left:36.0pt;text-indent:-36.0pt"><span lang="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>
|
||||
@@ -5695,7 +5695,7 @@ major-latin;mso-bidi-font-family:"Calibri Light";mso-bidi-theme-font:major-latin
|
||||
</span></span></span><?endif?><span lang="ES">Código fuente y datos analizados</span></a></p><p class="MsoNormal"><span lang="ES">Este anexo proporciona la información técnica necesaria para reproducir los experimentos descritos en este trabajo. Se incluyen las instrucciones de instalación, configuración de los servicios OCR dockerizados, ejecución de los scripts de optimización y acceso a los resultados experimentales.</span></p>
|
||||
<h2 style="mso-list:l22 level2 lfo18"><span lang="ES" style="text-transform:none">A.1 Repositorio del Proyecto</span></h2>
|
||||
<p class="MsoNormal"><span lang="ES">Todo el código fuente y los datos utilizados en este trabajo están disponibles públicamente en el siguiente repositorio:</span></p>
|
||||
<p class="MsoNormal"><span lang="ES"><b>URL del repositorio:</b> https://github.com/seryus/MastersThesis</span></p>
|
||||
<p class="MsoNormal"><span lang="ES"><b>URL del repositorio:</b> https://seryus.ddns.net/unir/MastersThesis</span></p>
|
||||
<p class="MsoNormal"><span lang="ES">El repositorio incluye:</span></p>
|
||||
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt"> </span><span lang="ES"><b>Servicios OCR dockerizados</b>: PaddleOCR, DocTR, EasyOCR con soporte GPU</span></p>
|
||||
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt"> </span><span lang="ES"><b>Scripts de evaluación</b>: Herramientas para evaluar y comparar modelos OCR</span></p>
|
||||
|
||||
Reference in New Issue
Block a user