Files
MastersThesis/docs/metrics/metrics.md
Sergio Jimenez Jimenez 316ace4d51
Some checks failed
build_docker / essential (pull_request) Successful in 1s
build_docker / build_gpu (pull_request) Has been cancelled
build_docker / build_easyocr (pull_request) Has been cancelled
build_docker / build_cpu (pull_request) Successful in 5m25s
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
Docs aligment on latest metrics.
2026-01-19 13:41:07 +01:00

9.2 KiB
Raw Blame History

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

  1. Costo cero de GPU: La RTX 3060 ya está disponible en el equipo de desarrollo
  2. Sin límites de tiempo: AWS y Colab tienen timeouts de sesión
  3. Acceso instantáneo: Sin tiempo de aprovisionamiento de instancias
  4. Almacenamiento local: Dataset y resultados en disco sin costos de transferencia
  5. 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

  1. Mejor Precisión: PaddleOCR logra las tasas de error más bajas (7.76% CER, 11.62% WER)
  2. Mejor Velocidad: DocTR es el más rápido (0.50s/página), pero 55% menos preciso que PaddleOCR
  3. EasyOCR: El más lento (3.8x más lento que PaddleOCR) con precisión intermedia
  4. 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
DocTR db_resnet50 crnn_vgg16_bn No (entrenado en inglés/francés)
EasyOCR CRAFT latin_g2.pth

Notas sobre Modelos

  • PaddleOCR: Modelos server más precisos disponibles pero requieren >5.3 GB VRAM (OOM en RTX 3060)
  • DocTR: Se probó modelo parseq como 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.pth es 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) 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

  1. Ajuste de Hiperparámetros - Completado (64 muestras por servicio)
  2. Evaluación del Dataset Completo - Ejecutar mejores configuraciones en las 45 páginas
  3. Comparar - Rendimiento base vs ajustado en dataset completo