9.2 KiB
Métricas de Rendimiento OCR
Fecha de Benchmark: 2026-01-19 Dataset de Prueba: 45 páginas (2 PDFs)
Especificaciones del Sistema
| Componente | Especificación |
|---|---|
| Sistema Operativo | Ubuntu 24.04.3 LTS (Noble) |
| Kernel | 6.14.0-37-generic |
| CPU | AMD Ryzen 7 5800H with Radeon Graphics |
| RAM | 16 GB DDR4 |
| GPU | NVIDIA GeForce RTX 3060 Laptop GPU |
| VRAM | 5.66 GB |
| CUDA | 12.4 |
Justificación de Ejecución Local vs Cloud
Costos de Cloud GPU
| Plataforma | GPU | Costo/Hora | Costo Mensual |
|---|---|---|---|
| AWS EC2 g4dn.xlarge | NVIDIA T4 (16 GB) | $0.526 | ~$384 |
| Google Colab Pro | T4/P100 | ~$1.30 | $10 + CU extras |
| Google Colab Pro+ | T4/V100/A100 | ~$1.30 | $50 + CU extras |
Análisis de Costos para Este Proyecto
| Tarea | Tiempo GPU | Costo AWS | Costo Colab Pro |
|---|---|---|---|
| Ajuste hiperparámetros (64×3 trials) | ~3 horas | ~$1.58 | ~$3.90 |
| Evaluación completa (45 páginas) | ~5 min | ~$0.04 | ~$0.11 |
| Desarrollo/debug (20 horas/mes) | 20 horas | ~$10.52 | ~$26.00 |
Ventajas de Ejecución Local
- Costo cero de GPU: La RTX 3060 ya está disponible en el equipo de desarrollo
- Sin límites de tiempo: AWS y Colab tienen timeouts de sesión
- Acceso instantáneo: Sin tiempo de aprovisionamiento de instancias
- Almacenamiento local: Dataset y resultados en disco sin costos de transferencia
- Iteración rápida: Reinicio inmediato de contenedores Docker
Conclusión
Para un proyecto de investigación con múltiples iteraciones de ajuste de hiperparámetros y desarrollo, la ejecución local ahorra ~$10-50/mes comparado con cloud, además de ofrecer mayor flexibilidad y velocidad de iteración
Resumen Ejecutivo
| 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 |
Ganador: PaddleOCR (Mobile) - Mejor precisión (7.76% CER) con velocidad competitiva.
Fases Experimentales
Este documento presenta resultados de dos fases experimentales distintas realizadas durante el desarrollo del TFM. La primera fase corresponde a la optimización de hiperparámetros utilizando Ray Tune, ejecutada en CPU debido a las limitaciones de hardware iniciales. La segunda fase corresponde a la validación práctica con aceleración GPU para evaluar la viabilidad en escenarios de producción.
Tabla. Fases experimentales y sus características.
| Fase | Dataset | Hardware | Resultado Principal |
|---|---|---|---|
| Optimización (CPU) | 24 páginas | CPU | CER: 7.78% → 1.49% (80.9% mejora) |
| Validación (GPU) | 45 páginas | RTX 3060 | CER: 7.76% baseline, 0.55s/página |
Fuente: Elaboración propia.
La fase de optimización representa el resultado principal del TFM (CER 1.49%, precisión 98.51%). La fase de validación GPU confirma la viabilidad práctica del enfoque, demostrando una aceleración de 126x respecto a CPU.
Comparación de Servicios OCR
Comparación de Precisión (CER - menor es mejor)
xychart-beta
title "Tasa de Error de Caracteres por Servicio"
x-axis ["PaddleOCR", "EasyOCR", "DocTR"]
y-axis "CER %" 0 --> 15
bar [7.76, 11.23, 12.06]
Comparación de Velocidad (Tiempo por Página)
xychart-beta
title "Tiempo de Procesamiento por Página (segundos)"
x-axis ["DocTR", "PaddleOCR", "EasyOCR"]
y-axis "Segundos" 0 --> 2
bar [0.50, 0.58, 1.88]
Flujo de Recomendación de Servicio
flowchart LR
A{Prioridad?}
A -->|Precisión| B[PaddleOCR]
A -->|Velocidad| C[DocTR]
A -->|Balance| B
B --> D["7.76% CER<br/>0.58s/página"]
C --> E["12.06% CER<br/>0.50s/página"]
Hallazgos Clave
- Mejor Precisión: PaddleOCR logra las tasas de error más bajas (7.76% CER, 11.62% WER)
- Mejor Velocidad: DocTR es el más rápido (0.50s/página), pero 55% menos preciso que PaddleOCR
- EasyOCR: El más lento (3.8x más lento que PaddleOCR) con precisión intermedia
- Eficiencia VRAM: PaddleOCR Mobile usa solo 0.06 GB
Configuración de Modelos
| Servicio | Detección | Reconocimiento | ¿Correcto para Español? |
|---|---|---|---|
| PaddleOCR | PP-OCRv5_mobile_det | PP-OCRv5_mobile_rec | Sí |
| DocTR | db_resnet50 | crnn_vgg16_bn | No (entrenado en inglés/francés) |
| EasyOCR | CRAFT | latin_g2.pth | Sí |
Notas sobre Modelos
- PaddleOCR: Modelos server más precisos disponibles pero requieren >5.3 GB VRAM (OOM en RTX 3060)
- DocTR: Se probó modelo
parseqcomo alternativa, resultó 2% peor CER y 2x más lento. El problema de diacríticos es de datos de entrenamiento, no de arquitectura - EasyOCR: Modelo
latin_g2.pthes correcto. Los problemas son del detector CRAFT, no del reconocimiento
Conclusión sobre Fine-tuning: Para documentos en español, usar PaddleOCR directamente. El fine-tuning de DocTR/EasyOCR no se justifica dado que PaddleOCR ya ofrece 31-36% mejor precisión sin configuración adicional.
Análisis de Errores (del debugset)
PaddleOCR (Mejor - 7.76% CER)
- Fortalezas: Preserva estructura de líneas, maneja bien acentos españoles
- Problemas: Errores menores de espaciado, diferencias ocasionales de mayúsculas en acentos
- Mejorable: Sí - el ajuste de hiperparámetros probablemente ayude
DocTR (Peor WER - 42.01%)
- Problema Crítico: Colapsa todo el texto en líneas únicas (pierde estructura)
- Problema de Acentos: Omite diacríticos ("Indice" vs "Índice")
- Mejorable: Parcialmente - el problema de estructura puede ser a nivel de modelo
EasyOCR (36.36% WER)
- Problema Crítico: Inserciones espurias de caracteres (";", "g", "0", "1")
- Pérdida de Estructura: Saltos de línea no preservados
- Mejorable: Sí - umbrales de detección demasiado sensibles
Comparación de Modelos PaddleOCR (RTX 3060)
| Métrica | Modelos Server | Modelos Mobile | Ganador |
|---|---|---|---|
| Tiempo | 2.47s | 1.08s | Mobile (2.3x más rápido) |
| CER | 1.82% | 1.42% | Mobile |
| WER | 16.14% | 12.20% | Mobile |
| VRAM | 5.3 GB (OOM en página 2) | 0.06 GB | Mobile |
| Multi-página | No (OOM) | Sí | Mobile |
Conclusión: Se recomiendan los modelos Mobile - más rápidos, más precisos, caben en VRAM.
Rendimiento CPU vs GPU (PaddleOCR)
Datos de raytune_paddle_subproc_results_20251207_192320.csv (CPU) vs RTX 3060 (GPU):
| 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 |
xychart-beta
title "Tiempo de Procesamiento por Página: CPU vs GPU"
x-axis ["CPU", "GPU (RTX 3060)"]
y-axis "Segundos" 0 --> 80
bar [69.4, 0.55]
Conclusión: GPU es esencial para uso práctico de OCR. El procesamiento en CPU es 126x más lento, haciéndolo impráctico para procesamiento por lotes.
Datos Crudos del Benchmark
{
"timestamp": "2026-01-19T11:00:00.000000",
"platform": {
"gpu": "NVIDIA GeForce RTX 3060 Laptop GPU",
"vram": "5.66 GB",
"cuda": "12.4"
},
"services": {
"PaddleOCR_Mobile": {
"port": 8002,
"models": {"det": "PP-OCRv5_mobile_det", "rec": "PP-OCRv5_mobile_rec"},
"vram_used": "0.06 GB",
"results": {
"CER": 0.0776,
"WER": 0.1162,
"PAGES": 45,
"TIME_PER_PAGE": 0.58,
"TOTAL_TIME": 32.0
}
},
"DocTR": {
"port": 8003,
"models": {"det": "db_resnet50", "rec": "crnn_vgg16_bn"},
"vram_used": "~1 GB",
"results": {
"CER": 0.1206,
"WER": 0.4201,
"PAGES": 45,
"TIME_PER_PAGE": 0.50,
"TOTAL_TIME": 28.4
}
},
"EasyOCR": {
"port": 8002,
"languages": ["es", "en"],
"vram_used": "~2 GB",
"results": {
"CER": 0.1123,
"WER": 0.3636,
"PAGES": 45,
"TIME_PER_PAGE": 1.88,
"TOTAL_TIME": 88.5
}
}
}
}
Resultados de Ajuste de Hiperparámetros
Resultados individuales de ajuste por servicio (64 muestras cada uno, páginas 5-10):
Próximos Pasos
Ajuste de Hiperparámetros- Completado (64 muestras por servicio)- Evaluación del Dataset Completo - Ejecutar mejores configuraciones en las 45 páginas
- Comparar - Rendimiento base vs ajustado en dataset completo