Next.js + React
Frontend
Carga, progreso, revisión, exportación y comparación.
Arquitectura, pipeline de procesamiento, herramientas y formas de ejecutar el proyecto con CPU o GPU NVIDIA.
Entrada
Documento PDF
Hasta 25 MB y 50 páginas por trabajo.
Motor OCR
PaddleOCR
Resultado
JSON · CSV · XLSX
Arquitectura
El navegador se comunica con Next.js. El frontend reenvía las solicitudes al backend privado, donde el pipeline procesa los archivos y persiste los resultados.
Next.js + React
Carga, progreso, revisión, exportación y comparación.
FastAPI + Python
Validación, trabajos, servicios y contratos REST.
OCR + SQLite
Imágenes, reconocimiento, campos y persistencia.
Flujo de datos
Cada trabajo atraviesa seis etapas. El frontend consulta el avance y recupera los resultados cuando el procesamiento termina.
El frontend carga el archivo y FastAPI valida formato, peso y cantidad de páginas.
PyMuPDF renderiza cada página y OpenCV corrige perspectiva, rotación y contraste.
PaddleOCR reconoce las líneas y devuelve texto, confianza y coordenadas.
El extractor normaliza documentos, nombres, fechas y otros valores estructurados.
La interfaz permite comprobar campos inciertos y guardar correcciones.
Los resultados se exportan a CSV/XLSX o se comparan con otro Excel.
Instalación
Docker Compose construye el frontend y el backend, conecta los servicios y conserva la base de datos y los modelos en volúmenes.
Requiere Git, Docker Desktop o Docker Engine y Docker Compose.
git clone https://github.com/JhonatanC4STRO/ocr.git
cd ocrOpción recomendada: acelera PaddleOCR y ofrece mayor capacidad para PDFs extensos.
docker compose -f docker-compose.yml -f docker-compose.gpu.yml up --build -dEs la mejor opción para este proyecto cuando está disponible: CUDA acelera la inferencia de PaddleOCR y reduce el tiempo de procesamiento. Requiere una GPU NVIDIA, controlador compatible y acceso desde Docker.
Requisito recomendado
La GPU acelera la parte más costosa del flujo: el reconocimiento OCR. La precisión usa los mismos modelos; la diferencia principal es la velocidad y la cantidad de documentos que puede procesar.
Antes de iniciar, valida que Docker vea la GPU:
Inicio rápido NVIDIA
En Windows necesita Docker Desktop con WSL 2. En Linux necesita NVIDIA Container Toolkit.
powershell -ExecutionPolicy Bypass -File .\\scripts\\start-gpu.ps1bash scripts/start-gpu.shÚltima alternativa
Úsala solo si no cuentas con GPU NVIDIA. La aplicación funciona completa, pero OCR tarda más y tiene menor capacidad en PDFs extensos.
docker compose up --build -dStack técnico
Cada tecnología ocupa una responsabilidad concreta dentro del flujo, desde la interfaz hasta el reconocimiento y la persistencia.
Next.js 16
Interfaz, estado y comunicación HTTP
FastAPI
API REST y procesamiento en segundo plano
PaddleOCR
Detección y reconocimiento local de texto
OpenCV
Corrección y preparación de imágenes
PyMuPDF
Validación y renderizado de páginas PDF
SQLite
Documentos, correcciones y reportes
Docker
Entorno reproducible para CPU o NVIDIA
pandas
Comparación y exportación de Excel
Referencia técnica
Datos operativos para desarrollar, integrar o diagnosticar la aplicación sin tener que recorrer el código fuente.
Base pública en Docker: /backend-api
| Método | Ruta | Operación |
|---|---|---|
| POST | /api/documents/process | Crear trabajo OCR |
| GET | /api/documents/{job_id} | Consultar progreso |
| GET | /api/documents/{job_id}/results | Obtener resultados |
| PATCH | /api/documents/{job_id}/results/{id} | Guardar corrección |
| GET | /api/documents/{job_id}/export | Exportar CSV/XLSX |
| POST | /api/documents/{job_id}/compare | Comparar Excel |
Se configuran mediante el archivo .env.
| Variable | Base | Controla |
|---|---|---|
| PADDLE_OCR_DEVICE | cpu / gpu:0 | Dispositivo de inferencia |
| PDF_RENDER_DPI | 240 | Resolución del PDF |
| OCR_MIN_CONFIDENCE | 0.35 | Líneas aceptadas |
| REVIEW_THRESHOLD | 85 | Campos para revisión |
| MAX_PDF_SIZE_MB | 25 | Peso máximo |
| MAX_PDF_PAGES | 50 | Páginas máximas |
Preparación mínima del host
Instalar WSL 2 con wsl --install y reiniciar Windows.
Actualizar con wsl --update y confirmar versión 2.
Activar el motor WSL 2 dentro de Docker Desktop.
Validar Windows y Docker mediante nvidia-smi.
Interfaz
http://localhost:3000Documentación OpenAPI
http://localhost:3000/backend-api/docsEstado del backend
http://localhost:3000/backend-api/health