Expediente del caso
SLM OCR Invoices
- Periodo
- 2026-04 al 2026-04
- Estado
- completed
- Visibilidad
- public
- Stack
- Python, LM Studio, pdf2image, Streamlit
Evidencias · SLM-OCR-INVOICES
Repositorio
- extrae JSON conforme al esquema Factur-X
Expediente del caso
Motivación
Leer facturas en PDF para validar datos es un embudo manual: abrir, mirar, copiar. La motivacion fue automatizar la extraccion de los campos clave (proveedor, importes, IVA) con un modelo de vision local, manteniendo la privacidad del documento y produciendo JSON con un esquema conocido como Factur-X.
El reto
El reto era que un modelo pequeno (3B) entendiera documentos reales con disenos muy distintos, layouts, logos y tablas. Ademas, el prompt tenia que ser suficientemente bueno para extraer los campos correctos; un prompt mediocre se traduce en JSON incorrecto.
Enfoque
Se convierte el PDF pagina a pagina a imagen (pdf2image) y se envia a un modelo de vision local (LM Studio, Ministral 3B) con un prompt configurable, extrayendo JSON conforme al esquema Factur-X. La optimizacion de prompts la hace el sistema GEPA con un proposer LLM externo via API OpenAI-compatible. Una interfaz Streamlit permite validar visualmente la extraccion y un evaluador batch mide el resultado sobre un dataset de facturas reales.
Aprendizaje
Un modelo local de vision es suficiente para OCR de facturas cuando se controla el prompt y la configuracion (DPI, contexto). La evaluacion batch sobre facturas reales, con su golden JSON, es la que da confianza para ajustar prompts; GEPA automatiza esa busqueda en lugar de iterar a mano.
Estado actual
Completado y publicado como repositorio abierto. El sistema extrae JSON conforme a Factur-X con un SLM local, incluye evaluacion batch con dataset golden y la interfaz de validacion visual en Streamlit. El repositorio es `papulo79/slm-ocr-invoices`.