@@ -217,7 +217,7 @@ El benchmark comparativo ha permitido identificar PaddleOCR como la solución m
### Introducción
### Introducción
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 [`src/run_tuning.py`](https://github.com/seryus/MastersThesis/blob/main/src/run_tuning.py) con apoyo de la librería [`src/raytune_ocr.py`](https://github.com/seryus/MastersThesis/blob/main/src/raytune_ocr.py), almacenándose los resultados en [`src/results/`](https://github.com/seryus/MastersThesis/tree/main/src/results).
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 [`src/run_tuning.py`](https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/run_tuning.py) con apoyo de la librería [`src/raytune_ocr.py`](https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/raytune_ocr.py), almacenándose los resultados en [`src/results/`](https://seryus.ddns.net/unir/MastersThesis/-/tree/main/src/results).
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.
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.
@@ -317,7 +317,7 @@ La infraestructura del proyecto se basa en contenedores Docker para garantizar r
*Fuente: Análisis de [`src/results/`](https://github.com/seryus/MastersThesis/tree/main/src/results) generados por [`src/run_tuning.py`](https://github.com/seryus/MastersThesis/blob/main/src/run_tuning.py).*
*Fuente: Análisis de [`src/results/`](https://seryus.ddns.net/unir/MastersThesis/-/tree/main/src/results) generados por [`src/run_tuning.py`](https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/run_tuning.py).*
#### Análisis de Correlación
#### Análisis de Correlación
@@ -684,7 +684,7 @@ Se calculó la correlación de Pearson entre los parámetros continuos y las mé
| `text_det_unclip_ratio` | NaN | Varianza cero (valor fijo) |
| `text_det_unclip_ratio` | NaN | Varianza cero (valor fijo) |
*Fuente: Análisis de [`src/results/`](https://github.com/seryus/MastersThesis/tree/main/src/results) generados por [`src/run_tuning.py`](https://github.com/seryus/MastersThesis/blob/main/src/run_tuning.py).*
*Fuente: Análisis de [`src/results/`](https://seryus.ddns.net/unir/MastersThesis/-/tree/main/src/results) generados por [`src/run_tuning.py`](https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/run_tuning.py).*
**Tabla 28.***Correlación de parámetros con WER.*
**Tabla 28.***Correlación de parámetros con WER.*
@@ -694,7 +694,7 @@ Se calculó la correlación de Pearson entre los parámetros continuos y las mé
*Fuente: Análisis de [`src/results/`](https://github.com/seryus/MastersThesis/tree/main/src/results) generados por [`src/run_tuning.py`](https://github.com/seryus/MastersThesis/blob/main/src/run_tuning.py).*
*Fuente: Análisis de [`src/results/`](https://seryus.ddns.net/unir/MastersThesis/-/tree/main/src/results) generados por [`src/run_tuning.py`](https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/run_tuning.py).*
**Hallazgo clave**: El parámetro `text_det_thresh` muestra la correlación más fuerte (-0.52 con ambas métricas), indicando que valores más altos de este umbral tienden a reducir el error. Este umbral controla qué píxeles se consideran "texto" en el mapa de probabilidad del detector.
**Hallazgo clave**: El parámetro `text_det_thresh` muestra la correlación más fuerte (-0.52 con ambas métricas), indicando que valores más altos de este umbral tienden a reducir el error. Este umbral controla qué píxeles se consideran "texto" en el mapa de probabilidad del detector.
@@ -709,7 +709,7 @@ El parámetro booleano `textline_orientation` demostró tener el mayor impacto e
| True | 3.76% | 7.12% | 12.73% | 32 |
| True | 3.76% | 7.12% | 12.73% | 32 |
| False | 12.40% | 14.93% | 21.71% | 32 |
| False | 12.40% | 14.93% | 21.71% | 32 |
*Fuente: Análisis de [`src/results/`](https://github.com/seryus/MastersThesis/tree/main/src/results) generados por [`src/run_tuning.py`](https://github.com/seryus/MastersThesis/blob/main/src/run_tuning.py).*
*Fuente: Análisis de [`src/results/`](https://seryus.ddns.net/unir/MastersThesis/-/tree/main/src/results) generados por [`src/run_tuning.py`](https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/run_tuning.py).*
**Interpretación:**
**Interpretación:**
@@ -778,7 +778,7 @@ La configuración óptima identificada se evaluó sobre el dataset completo de 4
*Fuente: Validación final. Código en [`src/run_tuning.py`](https://github.com/seryus/MastersThesis/blob/main/src/run_tuning.py), resultados en [`src/results/`](https://github.com/seryus/MastersThesis/tree/main/src/results).*
*Fuente: Validación final. Código en [`src/run_tuning.py`](https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/run_tuning.py), resultados en [`src/results/`](https://seryus.ddns.net/unir/MastersThesis/-/tree/main/src/results).*
> **Nota sobre generalización:** El mejor trial individual (5 páginas) alcanzó un CER de 0.79%, cumpliendo el objetivo de CER < 2%. Sin embargo, al aplicar la configuración al dataset completo de 45 páginas, el CER aumentó a 7.72%, evidenciando sobreajuste al subconjunto de entrenamiento. Esta diferencia es un hallazgo importante que se discute en la sección de análisis.
> **Nota sobre generalización:** El mejor trial individual (5 páginas) alcanzó un CER de 0.79%, cumpliendo el objetivo de CER < 2%. Sin embargo, al aplicar la configuración al dataset completo de 45 páginas, el CER aumentó a 7.72%, evidenciando sobreajuste al subconjunto de entrenamiento. Esta diferencia es un hallazgo importante que se discute en la sección de análisis.
@@ -859,7 +859,7 @@ Los 64 trials ejecutados con Ray Tune y aceleración GPU revelaron patrones clar
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.
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.
**Fuentes de datos:** [`src/run_tuning.py`](https://github.com/seryus/MastersThesis/blob/main/src/run_tuning.py), [`src/raytune_ocr.py`](https://github.com/seryus/MastersThesis/blob/main/src/raytune_ocr.py), [`src/results/raytune_paddle_results_20260119_122609.csv`](https://github.com/seryus/MastersThesis/blob/main/src/results/raytune_paddle_results_20260119_122609.csv).
**Fuentes de datos:** [`src/run_tuning.py`](https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/run_tuning.py), [`src/raytune_ocr.py`](https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/raytune_ocr.py), [`src/results/raytune_paddle_results_20260119_122609.csv`](https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/results/raytune_paddle_results_20260119_122609.csv).
## Discusión y análisis de resultados
## Discusión y análisis de resultados
@@ -915,7 +915,7 @@ Basándose en el análisis de los resultados de optimización:
| 5 | `text_rec_score_thresh` | Medio | Moderado (0.5658) |
| 5 | `text_rec_score_thresh` | Medio | Moderado (0.5658) |
*Fuente: Elaboración propia basada en [`src/results/raytune_paddle_results_20260119_122609.csv`](https://github.com/seryus/MastersThesis/blob/main/src/results/raytune_paddle_results_20260119_122609.csv).*
*Fuente: Elaboración propia basada en [`src/results/raytune_paddle_results_20260119_122609.csv`](https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/results/raytune_paddle_results_20260119_122609.csv).*
#### Análisis del Parámetro textline_orientation
#### Análisis del Parámetro textline_orientation
@@ -1055,7 +1055,7 @@ Para documentos académicos en español similares a los evaluados:
| `use_doc_unwarping` | False | No recomendado | Innecesario para PDFs digitales |
| `use_doc_unwarping` | False | No recomendado | Innecesario para PDFs digitales |
*Fuente: Análisis de [`src/results/raytune_paddle_results_20260119_122609.csv`](https://github.com/seryus/MastersThesis/blob/main/src/results/raytune_paddle_results_20260119_122609.csv).*
*Fuente: Análisis de [`src/results/raytune_paddle_results_20260119_122609.csv`](https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/results/raytune_paddle_results_20260119_122609.csv).*
#### Cuándo Aplicar Esta Metodología
#### Cuándo Aplicar Esta Metodología
@@ -1092,10 +1092,10 @@ Los resultados cuantifican tanto los logros como las limitaciones del enfoque. E
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.
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.
**Fuentes de datos:**
**Fuentes de datos:**
- [`src/run_tuning.py`](https://github.com/seryus/MastersThesis/blob/main/src/run_tuning.py): Script principal de optimización
- [`src/run_tuning.py`](https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/run_tuning.py): Script principal de optimización
- [`src/results/raytune_paddle_results_20260119_122609.csv`](https://github.com/seryus/MastersThesis/blob/main/src/results/raytune_paddle_results_20260119_122609.csv): Resultados CSV de PaddleOCR
- [`src/results/raytune_paddle_results_20260119_122609.csv`](https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/results/raytune_paddle_results_20260119_122609.csv): Resultados CSV de PaddleOCR
- [`src/results/raytune_easyocr_results_20260119_120204.csv`](https://github.com/seryus/MastersThesis/blob/main/src/results/raytune_easyocr_results_20260119_120204.csv): Resultados CSV de EasyOCR
- [`src/results/raytune_easyocr_results_20260119_120204.csv`](https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/results/raytune_easyocr_results_20260119_120204.csv): Resultados CSV de EasyOCR
- [`src/results/raytune_doctr_results_20260119_121445.csv`](https://github.com/seryus/MastersThesis/blob/main/src/results/raytune_doctr_results_20260119_121445.csv): Resultados CSV de DocTR
- [`src/results/raytune_doctr_results_20260119_121445.csv`](https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/results/raytune_doctr_results_20260119_121445.csv): Resultados CSV de DocTR
**Imágenes Docker:**
**Imágenes Docker:**
- [`seryus.ddns.net/unir/paddle-ocr-gpu`](https://seryus.ddns.net/unir/-/packages/container/paddle-ocr-gpu/latest): PaddleOCR con soporte GPU
- [`seryus.ddns.net/unir/paddle-ocr-gpu`](https://seryus.ddns.net/unir/-/packages/container/paddle-ocr-gpu/latest): PaddleOCR con soporte GPU
@@ -1124,7 +1124,7 @@ Este hardware representa configuración típica de desarrollo, permitiendo evalu
#### Comparación CPU vs GPU
#### Comparación CPU vs GPU
Se comparó el tiempo de procesamiento entre CPU y GPU utilizando los datos de [`src/raytune_paddle_subproc_results_20251207_192320.csv`](https://github.com/seryus/MastersThesis/blob/main/src/raytune_paddle_subproc_results_20251207_192320.csv) (CPU) y [`src/results/raytune_paddle_results_20260119_122609.csv`](https://github.com/seryus/MastersThesis/blob/main/src/results/raytune_paddle_results_20260119_122609.csv) (GPU).
Se comparó el tiempo de procesamiento entre CPU y GPU utilizando los datos de [`src/raytune_paddle_subproc_results_20251207_192320.csv`](https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/raytune_paddle_subproc_results_20251207_192320.csv) (CPU) y [`src/results/raytune_paddle_results_20260119_122609.csv`](https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/results/raytune_paddle_results_20260119_122609.csv) (GPU).
**Tabla 42.***Rendimiento comparativo CPU vs GPU.*
**Tabla 42.***Rendimiento comparativo CPU vs GPU.*
@@ -1134,7 +1134,7 @@ Se comparó el tiempo de procesamiento entre CPU y GPU utilizando los datos de [
| Dataset completo (45 páginas) | ~52 min | ~38 seg | **82x** |
| Dataset completo (45 páginas) | ~52 min | ~38 seg | **82x** |
*Fuente: Elaboración propia a partir de [`src/raytune_paddle_subproc_results_20251207_192320.csv`](https://github.com/seryus/MastersThesis/blob/main/src/raytune_paddle_subproc_results_20251207_192320.csv) y [`src/results/raytune_paddle_results_20260119_122609.csv`](https://github.com/seryus/MastersThesis/blob/main/src/results/raytune_paddle_results_20260119_122609.csv).*
*Fuente: Elaboración propia a partir de [`src/raytune_paddle_subproc_results_20251207_192320.csv`](https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/raytune_paddle_subproc_results_20251207_192320.csv) y [`src/results/raytune_paddle_results_20260119_122609.csv`](https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/results/raytune_paddle_results_20260119_122609.csv).*
La aceleración de 82× obtenida con GPU transforma la viabilidad del enfoque:
La aceleración de 82× obtenida con GPU transforma la viabilidad del enfoque:
- **Optimización en CPU (6.4 horas)**: Viable pero lento para iteraciones rápidas
- **Optimización en CPU (6.4 horas)**: Viable pero lento para iteraciones rápidas
@@ -96,5 +96,5 @@ La metodología propuesta cumple los requisitos de reproducibilidad científica:
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.
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.
El código fuente, las imágenes Docker y los datos experimentales están disponibles públicamente en el [repositorio del proyecto](https://github.com/seryus/MastersThesis). 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.
El código fuente, las imágenes Docker y los datos experimentales están disponibles públicamente en el [repositorio del proyecto](https://seryus.ddns.net/unir/MastersThesis). 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.
<pclass="MsoNormal"><spanlang="ES"><b>Fuentes de datos:</b><spanstyle="font-family:Consolas;font-size:10pt">ocr_benchmark_notebook.ipynb</span> y documentación oficial de PaddleOCR.</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Fuentes de datos:</b><spanstyle="font-family:Consolas;font-size:10pt">ocr_benchmark_notebook.ipynb</span> y 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>
<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">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 <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 apoyo de la librería <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>, almacenándose los resultados 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">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 <ahref="https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/run_tuning.py"><spanstyle="font-family:Consolas;font-size:10pt">src/run_tuning.py</span></a> con apoyo de la librería <ahref="https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/raytune_ocr.py"><spanstyle="font-family:Consolas;font-size:10pt">src/raytune_ocr.py</span></a>, almacenándose los resultados en <ahref="https://seryus.ddns.net/unir/MastersThesis/-/tree/main/src/results"><spanstyle="font-family:Consolas;font-size:10pt">src/results/</span></a>.</span></p>
<pclass="MsoNormal"><spanlang="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>
<pclass="MsoNormal"><spanlang="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>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">Configuración del Experimento</span></h3>
<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>
<h4><spanlang="ES">Entorno de Ejecución</span></h4>
<pclass="MsoQuote"><i><spanlang="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>
<pclass="MsoQuote"><i><spanlang="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>
<pclass="MsoNormal"><spanlang="ES">Para la fase de optimización se extendió el dataset:</span></p>
<pclass="MsoNormal"><spanlang="ES">Para la fase de optimización se extendió el dataset:</span></p>
<aname="_Ref_Tab29"></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]-->29<!--[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 optimización.</span></i></p>
<aname="_Ref_Tab29"></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]-->29<!--[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 optimización.</span></i></p>
@@ -5468,7 +5468,7 @@ Configuración óptima:
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">Síntesis de la Optimización</span></h3>
<h3style="mso-list:l22 level3 lfo18"><spanlang="ES"style="text-transform:none">Síntesis de la Optimización</span></h3>
<pclass="MsoNormal"><spanlang="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 —<spanstyle="font-family:Consolas;font-size:10pt">textline_orientation</span> y <spanstyle="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 <spanstyle="font-family:Consolas;font-size:10pt">text_det_thresh</span> (~0.05) benefician el rendimiento, mientras que <spanstyle="font-family:Consolas;font-size:10pt">use_doc_unwarping</span> resulta innecesario para PDFs digitales.</span></p>
<pclass="MsoNormal"><spanlang="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 —<spanstyle="font-family:Consolas;font-size:10pt">textline_orientation</span> y <spanstyle="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 <spanstyle="font-family:Consolas;font-size:10pt">text_det_thresh</span> (~0.05) benefician el rendimiento, mientras que <spanstyle="font-family:Consolas;font-size:10pt">use_doc_unwarping</span> resulta innecesario para PDFs digitales.</span></p>
<pclass="MsoNormal"><spanlang="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>
<pclass="MsoNormal"><spanlang="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>
<pclass="MsoNormal"><spanlang="ES"><b>Fuentes de datos:</b><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>, <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>, <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>.</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>Fuentes de datos:</b><ahref="https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/run_tuning.py"><spanstyle="font-family:Consolas;font-size:10pt">src/run_tuning.py</span></a>, <ahref="https://seryus.ddns.net/unir/MastersThesis/-/blob/main/src/raytune_ocr.py"><spanstyle="font-family:Consolas;font-size:10pt">src/raytune_ocr.py</span></a>, <ahref="https://seryus.ddns.net/unir/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>.</span></p>
<h2style="mso-list:l22 level2 lfo18"><spanlang="ES"style="text-transform:none">Discusión y análisis de resultados</span></h2>
<h2style="mso-list:l22 level2 lfo18"><spanlang="ES"style="text-transform:none">Discusión y análisis de resultados</span></h2>
<pclass="MsoNormal"><spanlang="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>
<pclass="MsoNormal"><spanlang="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:
<pclass="MsoNormal"><spanlang="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>
<pclass="MsoNormal"><spanlang="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>
<pclass="MsoNormal"><spanlang="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>
<pclass="MsoNormal"><spanlang="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>
<pclass="MsoNormal"><spanlang="ES"><b>Fuentes de datos:</b></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://seryus.ddns.net/unir/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://seryus.ddns.net/unir/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://seryus.ddns.net/unir/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"><ahref="https://seryus.ddns.net/unir/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"><ahref="https://seryus.ddns.net/unir/-/packages/container/paddle-ocr-gpu/latest"><spanstyle="font-family:Consolas;font-size:10pt">seryus.ddns.net/unir/paddle-ocr-gpu</span></a>: 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"><ahref="https://seryus.ddns.net/unir/-/packages/container/paddle-ocr-gpu/latest"><spanstyle="font-family:Consolas;font-size:10pt">seryus.ddns.net/unir/paddle-ocr-gpu</span></a>: 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"><ahref="https://seryus.ddns.net/unir/-/packages/container/easyocr-gpu/latest"><spanstyle="font-family:Consolas;font-size:10pt">seryus.ddns.net/unir/easyocr-gpu</span></a>: 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"><ahref="https://seryus.ddns.net/unir/-/packages/container/easyocr-gpu/latest"><spanstyle="font-family:Consolas;font-size:10pt">seryus.ddns.net/unir/easyocr-gpu</span></a>: EasyOCR con soporte GPU</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">Este hardware representa configuración típica de desarrollo, permitiendo evaluar el rendimiento en condiciones realistas de despliegue.</span></p>
<h4><spanlang="ES">Comparación CPU vs GPU</span></h4>
<h4><spanlang="ES">Comparación CPU vs GPU</span></h4>
<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>
<pclass="MsoNormal"><spanlang="ES">Se comparó el tiempo de procesamiento entre CPU y GPU utilizando los datos de <ahref="https://seryus.ddns.net/unir/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://seryus.ddns.net/unir/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>
<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>
@@ -5665,7 +5665,7 @@ y trabajo futuro</span></a></h1><p class="MsoNormal"><span lang="ES">A lo largo
<pclass="MsoNormal"><spanlang="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>
<pclass="MsoNormal"><spanlang="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>
<pclass="MsoNormal"><spanlang="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>
<pclass="MsoNormal"><spanlang="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>
<pclass="MsoNormal"><spanlang="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>
<pclass="MsoNormal"><spanlang="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>
<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>. 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><pclass="Ttulo1sinnumerar"><aname="_Toc160619821"><spanlang="ES">Referencias
<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://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><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>
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">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., & 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>
</span></span></span><?endif?><spanlang="ES">Código fuente y datos analizados</span></a></p><pclass="MsoNormal"><spanlang="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>
</span></span></span><?endif?><spanlang="ES">Código fuente y datos analizados</span></a></p><pclass="MsoNormal"><spanlang="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>
<h2style="mso-list:l22 level2 lfo18"><spanlang="ES"style="text-transform:none">A.1 Repositorio del Proyecto</span></h2>
<h2style="mso-list:l22 level2 lfo18"><spanlang="ES"style="text-transform:none">A.1 Repositorio del Proyecto</span></h2>
<pclass="MsoNormal"><spanlang="ES">Todo el código fuente y los datos utilizados en este trabajo están disponibles públicamente en el siguiente repositorio:</span></p>
<pclass="MsoNormal"><spanlang="ES">Todo el código fuente y los datos utilizados en este trabajo están disponibles públicamente en el siguiente repositorio:</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>URL del repositorio:</b> https://github.com/seryus/MastersThesis</span></p>
<pclass="MsoNormal"><spanlang="ES"><b>URL del repositorio:</b> https://seryus.ddns.net/unir/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>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 evaluación</b>: Herramientas para evaluar y comparar modelos OCR</span></p>
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.