Expediente del caso

SLM OCR Invoices

Simbolo de la marca de la edicion del caso
Simbolo de la marca de la edicion del caso
Periodo
2026-04 al 2026-04
Estado
completed
Visibilidad
public
Stack
Python, LM Studio, pdf2image, Streamlit
  • technology:python
  • technology:streamlit
  • domain:ocr
  • domain:factur-x

Evidencias · SLM-OCR-INVOICES


Repositorio

  • extrae JSON conforme al esquema Factur-X
Sistema de OCR para facturas en PDF usando un modelo local de vision (LM Studio, Ministral 3B) con pipeline de optimizacion automatica de prompts mediante GEPA. Convierte PDF a imagen y extrae un JSON estructurado segun el esquema Factur-X. Optimizacion de prompts con el sistema GEPA (proposer LLM externo via API OpenAI-compatible). Interfaz Streamlit para validacion visual y sistema de evaluacion batch.

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`.