Volver a Proyectos
OCR & Document Automation

DocuExtract

Extrae automáticamente los datos fiscales clave de facturas y tickets.

El Problema

La captura manual de datos de facturas para contabilidad es lenta y propensa a errores humanos, y las empresas necesitan un flujo confiable incluso cuando el OCR no está seguro del resultado.

La Solución

DocuExtract permite subir una factura o ticket y usa OCR para extraer los datos fiscales clave, dejándolos listos para contabilidad. Cuando la confianza del reconocimiento es baja, el documento pasa a un flujo de revisión humana en vez de guardar datos poco fiables.

Arquitectura / Engineering

  • Diseñé el pipeline de procesamiento (subida → OCR/extracción → parsing → persistencia) separando el procesamiento server-side de la UI.
  • Integré Tesseract.js (español + inglés) para OCR sobre imágenes, y extracción de la capa de texto nativa de PDFs con pdf-parse.
  • Construí un sistema de confianza combinando fiabilidad del OCR y campos fiscales detectados, que deriva automáticamente a revisión humana por debajo de un umbral configurable.
  • Implementé regex especializadas para identificar NIT/RIF/CUIT/RFC/RUC, fechas (numéricas y en texto) y montos según palabras clave contables.
  • Aislé los datos por empresa con Row Level Security de Supabase y serví los documentos originales mediante URLs firmadas de corta duración desde un bucket de Storage privado.
  • Mantuve la `service_role key` de Supabase exclusivamente en Route Handlers de servidor, sin exponerla nunca al navegador.

Funcionalidades Clave

  • Subida de facturas/tickets con validación de tipo y tamaño de archivo.
  • OCR sobre imágenes (Tesseract.js) y extracción de texto nativo en PDFs.
  • Extracción y normalización de campos fiscales: identificación fiscal, fechas, montos e ítems.
  • Scoring de confianza con derivación automática a revisión humana.
  • Revisión y validación manual del documento antes de marcarlo como completado.
  • Exportación de facturas a CSV.

Retos Técnicos

  • Separar el procesamiento server-side (OCR, parsing, acceso a Storage) de la UI, para que la `service_role key` nunca llegue al cliente.
  • Diseñar el cálculo de confianza combinando la fiabilidad del OCR con la cantidad de campos clave detectados, en vez de un umbral arbitrario único.
  • Aislar los datos por empresa con RLS para que ningún usuario pueda leer o escribir facturas de otra empresa aunque conozca su ID.

Resultado / Estado Actual

Desplegado en Vercel. El flujo completo —subida, OCR/parsing, persistencia y revisión humana— funciona de extremo a extremo sobre imágenes y PDFs con capa de texto nativa.

Limitación conocida

Los PDFs escaneados sin capa de texto nativa no se rasterizan a imagen para aplicarles OCR, ya que esa conversión suele requerir dependencias nativas (poppler-utils) que complican el despliegue serverless. Estos documentos se marcan automáticamente como pendientes de revisión manual; añadir un worker dedicado para rasterizarlos es la mejora documentada para una siguiente iteración.

Stack

Next.jsTypeScriptNode.jsTesseract.jsTailwind CSSSupabase
LiveGitHubVer todos los proyectos →