char colors
Some checks failed
build_docker / essential (pull_request) Successful in 0s
build_docker / build_easyocr (pull_request) Has been cancelled
build_docker / build_doctr_gpu (pull_request) Has been cancelled
build_docker / build_raytune (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_cpu (pull_request) Has been cancelled
build_docker / build_gpu (pull_request) Has been cancelled

This commit is contained in:
2026-01-20 15:18:56 +01:00
parent 4088a1efd0
commit 4195c67b0c
20 changed files with 465 additions and 95 deletions

View File

@@ -76,7 +76,7 @@ flowchart TB
end
```
**Tabla A5.** *Descripción de directorios principales.*
**Tabla A1.** *Descripción de directorios principales.*
| Directorio | Contenido |
|------------|-----------|
@@ -96,7 +96,7 @@ flowchart TB
### Sistema de Desarrollo
**Tabla A1.** *Especificaciones del sistema de desarrollo.*
**Tabla A2.** *Especificaciones del sistema de desarrollo.*
| Componente | Especificación |
|------------|----------------|
@@ -110,7 +110,7 @@ flowchart TB
### Dependencias
**Tabla A2.** *Dependencias del proyecto.*
**Tabla A3.** *Dependencias del proyecto.*
| Componente | Versión |
|------------|---------|
@@ -231,7 +231,7 @@ analyze_results(results, prefix='raytune_paddle', config_keys=PADDLE_OCR_CONFIG_
### Servicios y Puertos
**Tabla A3.** *Servicios Docker y puertos.*
**Tabla A4.** *Servicios Docker y puertos.*
| Servicio | Puerto | Script de Ajuste | Nota |
|----------|--------|------------------|------|
@@ -245,22 +245,95 @@ analyze_results(results, prefix='raytune_paddle', config_keys=PADDLE_OCR_CONFIG_
## A.7 Métricas de Rendimiento
Los resultados detallados de las evaluaciones y ajustes de hiperparámetros se encuentran en:
Esta sección presenta los resultados completos de las evaluaciones comparativas y del ajuste de hiperparámetros realizado con Ray Tune sobre los tres servicios OCR evaluados.
- [Métricas Generales](metrics/metrics.md) - Comparativa de los tres servicios
- [PaddleOCR](metrics/metrics_paddle.md) - Mejor precisión (8.85% CER baseline, **7.72% optimizado**, **0.79% mejor trial**)
- [DocTR](metrics/metrics_doctr.md) - Más rápido (0.50s/página)
- [EasyOCR](metrics/metrics_easyocr.md) - Balance intermedio
### Comparativa General de Servicios
### Resumen de Resultados
**Tabla A5.** *Comparativa de servicios OCR en dataset de 45 páginas (GPU RTX 3060).*
**Tabla A4.** *Resumen de resultados del benchmark por servicio.*
| Servicio | CER | WER | Tiempo/Página | Tiempo Total | VRAM |
|----------|-----|-----|---------------|--------------|------|
| **PaddleOCR (Mobile)** | **7.76%** | **11.62%** | 0.58s | 32.0s | 0.06 GB |
| EasyOCR | 11.23% | 36.36% | 1.88s | 88.5s | ~2 GB |
| DocTR | 12.06% | 42.01% | 0.50s | 28.4s | ~1 GB |
| Servicio | CER Base | CER Ajustado | Mejora |
|----------|----------|--------------|--------|
| **PaddleOCR** | 8.85% | **7.72%** | 12.8% |
| DocTR | 12.06% | 12.07% | 0% |
| EasyOCR | 11.23% | 11.14% | 0.8% |
*Fuente: Benchmark realizado el 2026-01-19. Elaboración propia.*
**Ganador:** PaddleOCR (Mobile) - Mejor precisión (7.76% CER) con velocidad competitiva y mínimo consumo de VRAM.
### Resultados de Ajuste de Hiperparámetros
Se ejecutaron 64 trials por servicio utilizando Ray Tune con Optuna sobre las páginas 5-10 del primer documento.
**Tabla A6.** *Resultados del ajuste de hiperparámetros por servicio.*
| Servicio | CER Base | CER Ajustado | Mejora | Mejor Trial (5 páginas) |
|----------|----------|--------------|--------|-------------------------|
| **PaddleOCR** | 8.85% | **7.72%** | **12.8%** | **0.79%** ✓ |
| DocTR | 12.06% | 12.07% | 0% | 7.43% |
| EasyOCR | 11.23% | 11.14% | 0.8% | 5.83% |
*Fuente: Resultados de 64 trials Ray Tune por servicio. Elaboración propia.*
> **Nota sobre sobreajuste:** La diferencia entre los resultados del mejor trial (subconjunto de 5 páginas) y el dataset completo (45 páginas) indica sobreajuste parcial a las páginas de ajuste. Un subconjunto más grande (15-20 páginas) mejoraría la generalización.
### Configuración Óptima PaddleOCR
La siguiente configuración logró el mejor rendimiento en el ajuste de hiperparámetros:
```json
{
"use_doc_orientation_classify": true,
"use_doc_unwarping": false,
"textline_orientation": true,
"text_det_thresh": 0.0462,
"text_det_box_thresh": 0.4862,
"text_det_unclip_ratio": 0.0,
"text_rec_score_thresh": 0.5658
}
```
**Hallazgos clave:**
- `textline_orientation=true`: Crítico para documentos con layouts mixtos
- `use_doc_orientation_classify=true`: Mejora detección de orientación
- `use_doc_unwarping=false`: Innecesario para PDFs digitales
- `text_det_thresh` bajo (0.0462): Detección más sensible mejora resultados
### Rendimiento CPU vs GPU
**Tabla A7.** *Comparación de rendimiento CPU vs GPU (PaddleOCR).*
| Métrica | CPU | GPU (RTX 3060) | Aceleración |
|---------|-----|----------------|-------------|
| Tiempo/Página | 69.4s | 0.55s | **126x más rápido** |
| Mejor CER | 1.15% | 0.79% | GPU mejor |
| 45 páginas | ~52 min | ~25 seg | **126x más rápido** |
*Fuente: Datos CPU de `raytune_paddle_subproc_results_20251207_192320.csv`. Elaboración propia.*
### Análisis de Errores por Servicio
**Tabla A8.** *Tipos de errores identificados por servicio OCR.*
| Servicio | Fortalezas | Debilidades | ¿Fine-tuning recomendado? |
|----------|------------|-------------|---------------------------|
| **PaddleOCR** | Preserva estructura, buen manejo de español | Errores menores de acentos (~5%) | No (ya excelente) |
| DocTR | Más rápido | Pierde estructura, omite TODOS los diacríticos | Sí (para diacríticos) |
| EasyOCR | Modelo correcto para español | Caracteres espurios, confunde `o`/`0` | Sí (problemas del detector) |
*Fuente: Análisis manual del debugset. Elaboración propia.*
### Archivos de Resultados
Los resultados crudos de los 64 trials por servicio están disponibles en el repositorio:
**Tabla A9.** *Ubicación de archivos de resultados.*
| Servicio | Archivo CSV |
|----------|-------------|
| 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) |
| 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) |
| 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) |
*Fuente: Elaboración propia.*