Paddle ocr gpu support. #4

Merged
Seryusjj merged 40 commits from gpu_support into main 2026-01-19 17:35:25 +00:00
9 changed files with 44 additions and 7 deletions
Showing only changes of commit 2f8adbf467 - Show all commits

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View File

@@ -0,0 +1,37 @@
[
{
"file": "figura_1.png",
"title": "Pipeline de un sistema OCR moderno",
"index": 1
},
{
"file": "figura_2.png",
"title": "Ciclo de optimización con Ray Tune y Optuna",
"index": 2
},
{
"file": "figura_3.png",
"title": "Fases de la metodología experimental",
"index": 3
},
{
"file": "figura_4.png",
"title": "Estructura del dataset de evaluación",
"index": 4
},
{
"file": "figura_5.png",
"title": "Arquitectura de ejecución con Docker Compose",
"index": 5
},
{
"file": "figura_6.png",
"title": "Impacto de textline_orientation en CER",
"index": 6
},
{
"file": "figura_7.png",
"title": "Reducción de errores: Baseline vs Optimizado",
"index": 7
}
]

View File

@@ -4637,7 +4637,7 @@ _Toc14106979"><span style="mso-bookmark:_Toc437515557"><span lang="ES" style="te
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Pipeline Moderno de OCR</span></h3> <h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Pipeline Moderno de OCR</span></h3>
<p class="MsoNormal"><span lang="ES">Los sistemas OCR modernos siguen típicamente un pipeline de dos etapas principales, precedidas opcionalmente por una fase de preprocesamiento:</span></p> <p class="MsoNormal"><span lang="ES">Los sistemas OCR modernos siguen típicamente un pipeline de dos etapas principales, precedidas opcionalmente por una fase de preprocesamiento:</span></p>
<a name="_Ref_Fig1"></a><p class="MsoCaption" style="text-align:center"><b><span lang="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><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Pipeline de un sistema OCR moderno</span></i></p> <a name="_Ref_Fig1"></a><p class="MsoCaption" style="text-align:center"><b><span lang="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><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Pipeline de un sistema OCR moderno</span></i></p>
<p class="MsoNormal" style="text-align:center;border:1px dashed #999;padding:20px;margin:10px 40px;background:#f9f9f9"><span lang="ES" style="color:#666">[Insertar diagrama Mermaid aquí]</span></p> <p class="MsoNormal" style="text-align:center"><span lang="ES"><img alt="Pipeline de un sistema OCR moderno" src="figures/figura_1.png" style="width:12cm;max-width:100%"/></span></p>
<p class="Piedefoto-tabla" style="margin-left:0cm;text-align:center"><span lang="ES">Fuente: Elaboración propia.</span></p> <p class="Piedefoto-tabla" style="margin-left:0cm;text-align:center"><span lang="ES">Fuente: Elaboración propia.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p> <p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h4><span lang="ES">Etapa de Preprocesamiento</span></h4> <h4><span lang="ES">Etapa de Preprocesamiento</span></h4>
@@ -4880,7 +4880,7 @@ Configuraciones con alta probabilidad bajo <math display="inline" xmlns="http://
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">3.<span style="font-size:7pt">   </span>Beneficiarse de la infraestructura de Ray para distribución</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">3.<span style="font-size:7pt">   </span>Beneficiarse de la infraestructura de Ray para distribución</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">4.<span style="font-size:7pt">   </span>Acceder a las visualizaciones de Optuna</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">4.<span style="font-size:7pt">   </span>Acceder a las visualizaciones de Optuna</span></p>
<a name="_Ref_Fig2"></a><p class="MsoCaption" style="text-align:center"><b><span lang="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><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Ciclo de optimización con Ray Tune y Optuna</span></i></p> <a name="_Ref_Fig2"></a><p class="MsoCaption" style="text-align:center"><b><span lang="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><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Ciclo de optimización con Ray Tune y Optuna</span></i></p>
<p class="MsoNormal" style="text-align:center;border:1px dashed #999;padding:20px;margin:10px 40px;background:#f9f9f9"><span lang="ES" style="color:#666">[Insertar diagrama Mermaid aquí]</span></p> <p class="MsoNormal" style="text-align:center"><span lang="ES"><img alt="Ciclo de optimización con Ray Tune y Optuna" src="figures/figura_2.png" style="width:12cm;max-width:100%"/></span></p>
<p class="Piedefoto-tabla" style="margin-left:0cm;text-align:center"><span lang="ES">Fuente: Elaboración propia.</span></p> <p class="Piedefoto-tabla" style="margin-left:0cm;text-align:center"><span lang="ES">Fuente: Elaboración propia.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p> <p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h4><span lang="ES">HPO en Sistemas OCR</span></h4> <h4><span lang="ES">HPO en Sistemas OCR</span></h4>
@@ -4958,7 +4958,7 @@ concretos y metodología de trabajo</span></span></a></span></span><span style="
<h2 style="mso-list:l22 level2 lfo18"><span lang="ES" style="text-transform:none">Metodología del trabajo</span></h2> <h2 style="mso-list:l22 level2 lfo18"><span lang="ES" style="text-transform:none">Metodología del trabajo</span></h2>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Visión General</span></h3> <h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Visión General</span></h3>
<a name="_Ref_Fig3"></a><p class="MsoCaption" style="text-align:center"><b><span lang="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><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Fases de la metodología experimental</span></i></p> <a name="_Ref_Fig3"></a><p class="MsoCaption" style="text-align:center"><b><span lang="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><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Fases de la metodología experimental</span></i></p>
<p class="MsoNormal" style="text-align:center;border:1px dashed #999;padding:20px;margin:10px 40px;background:#f9f9f9"><span lang="ES" style="color:#666">[Insertar diagrama Mermaid aquí]</span></p> <p class="MsoNormal" style="text-align:center"><span lang="ES"><img alt="Fases de la metodología experimental" src="figures/figura_3.png" style="width:12cm;max-width:100%"/></span></p>
<p class="Piedefoto-tabla" style="margin-left:0cm;text-align:center"><span lang="ES">Fuente: Elaboración propia.</span></p> <p class="Piedefoto-tabla" style="margin-left:0cm;text-align:center"><span lang="ES">Fuente: Elaboración propia.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p> <p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="ES"><b>Descripción de las fases:</b></span></p> <p class="MsoNormal"><span lang="ES"><b>Descripción de las fases:</b></span></p>
@@ -4978,7 +4978,7 @@ concretos y metodología de trabajo</span></span></a></span></span><span style="
<p class="MsoNormal"><span lang="ES"> - Método: <span style="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> <p class="MsoNormal"><span lang="ES"> - Método: <span style="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><span lang="ES">Estructura del Dataset</span></h4> <h4><span lang="ES">Estructura del Dataset</span></h4>
<a name="_Ref_Fig4"></a><p class="MsoCaption" style="text-align:center"><b><span lang="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><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Estructura del dataset de evaluación</span></i></p> <a name="_Ref_Fig4"></a><p class="MsoCaption" style="text-align:center"><b><span lang="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><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Estructura del dataset de evaluación</span></i></p>
<p class="MsoNormal" style="text-align:center;border:1px dashed #999;padding:20px;margin:10px 40px;background:#f9f9f9"><span lang="ES" style="color:#666">[Insertar diagrama Mermaid aquí]</span></p> <p class="MsoNormal" style="text-align:center"><span lang="ES"><img alt="Estructura del dataset de evaluación" src="figures/figura_4.png" style="width:12cm;max-width:100%"/></span></p>
<p class="Piedefoto-tabla" style="margin-left:0cm;text-align:center"><span lang="ES">Fuente: Elaboración propia.</span></p> <p class="Piedefoto-tabla" style="margin-left:0cm;text-align:center"><span lang="ES">Fuente: Elaboración propia.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p> <p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h4><span lang="ES">Clase ImageTextDataset</span></h4> <h4><span lang="ES">Clase ImageTextDataset</span></h4>
@@ -5231,7 +5231,7 @@ color:#0098CD;mso-font-kerning:16.0pt;mso-bidi-font-weight:bold'><o:p></o:p></sp
<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>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> <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>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>
<p class="MsoNormal"><span lang="ES">Esta arquitectura containerizada permite ejecutar cada componente en su entorno aislado óptimo, comunicándose via API REST:</span></p> <p class="MsoNormal"><span lang="ES">Esta arquitectura containerizada permite ejecutar cada componente en su entorno aislado óptimo, comunicándose via API REST:</span></p>
<a name="_Ref_Fig5"></a><p class="MsoCaption" style="text-align:center"><b><span lang="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><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Arquitectura de ejecución con Docker Compose</span></i></p> <a name="_Ref_Fig5"></a><p class="MsoCaption" style="text-align:center"><b><span lang="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><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Arquitectura de ejecución con Docker Compose</span></i></p>
<p class="MsoNormal" style="text-align:center;border:1px dashed #999;padding:20px;margin:10px 40px;background:#f9f9f9"><span lang="ES" style="color:#666">[Insertar diagrama Mermaid aquí]</span></p> <p class="MsoNormal" style="text-align:center"><span lang="ES"><img alt="Arquitectura de ejecución con Docker Compose" src="figures/figura_5.png" style="width:12cm;max-width:100%"/></span></p>
<p class="Piedefoto-tabla" style="margin-left:0cm;text-align:center"><span lang="ES">Fuente: Elaboración propia.</span></p> <p class="Piedefoto-tabla" style="margin-left:0cm;text-align:center"><span lang="ES">Fuente: Elaboración propia.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p> <p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="ES">La arquitectura containerizada (<span style="font-family:Consolas;font-size:10pt">src/docker-compose.tuning.*.yml</span>) ofrece:</span></p> <p class="MsoNormal"><span lang="ES">La arquitectura containerizada (<span style="font-family:Consolas;font-size:10pt">src/docker-compose.tuning.*.yml</span>) ofrece:</span></p>
@@ -5346,7 +5346,7 @@ Configuración óptima:
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="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> <p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="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>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="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> <p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="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>
<a name="_Ref_Fig6"></a><p class="MsoCaption" style="text-align:center"><b><span lang="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><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Impacto de textline_orientation en CER</span></i></p> <a name="_Ref_Fig6"></a><p class="MsoCaption" style="text-align:center"><b><span lang="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><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Impacto de textline_orientation en CER</span></i></p>
<p class="MsoNormal" style="text-align:center;border:1px dashed #999;padding:20px;margin:10px 40px;background:#f9f9f9"><span lang="ES" style="color:#666">[Insertar diagrama Mermaid aquí]</span></p> <p class="MsoNormal" style="text-align:center"><span lang="ES"><img alt="Impacto de textline_orientation en CER" src="figures/figura_6.png" style="width:12cm;max-width:100%"/></span></p>
<p class="Piedefoto-tabla" style="margin-left:0cm;text-align:center"><span lang="ES">Fuente: Elaboración propia.</span></p> <p class="Piedefoto-tabla" style="margin-left:0cm;text-align:center"><span lang="ES">Fuente: Elaboración propia.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p> <p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="ES"><b>Explicación técnica:</b></span></p> <p class="MsoNormal"><span lang="ES"><b>Explicación técnica:</b></span></p>
@@ -5375,7 +5375,7 @@ Configuración óptima:
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: Elaboración propia.</span></p> <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="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<a name="_Ref_Fig7"></a><p class="MsoCaption" style="text-align:center"><b><span lang="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><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Reducción de errores: Baseline vs Optimizado</span></i></p> <a name="_Ref_Fig7"></a><p class="MsoCaption" style="text-align:center"><b><span lang="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><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Reducción de errores: Baseline vs Optimizado</span></i></p>
<p class="MsoNormal" style="text-align:center;border:1px dashed #999;padding:20px;margin:10px 40px;background:#f9f9f9"><span lang="ES" style="color:#666">[Insertar diagrama Mermaid aquí]</span></p> <p class="MsoNormal" style="text-align:center"><span lang="ES"><img alt="Reducción de errores: Baseline vs Optimizado" src="figures/figura_7.png" style="width:12cm;max-width:100%"/></span></p>
<p class="Piedefoto-tabla" style="margin-left:0cm;text-align:center"><span lang="ES">Fuente: Elaboración propia.</span></p> <p class="Piedefoto-tabla" style="margin-left:0cm;text-align:center"><span lang="ES">Fuente: Elaboración propia.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p> <p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="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.</i></span></p> <p class="MsoNormal"><span lang="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.</i></span></p>