Saltar a contenido

01 · API de extracción estructurada de documentos en español

Fine-tune Gemma 4 E4B sobre 5K ejemplos JSON para extraer datos estructurados de facturas, contratos, expedientes y formularios en español. Competidor de Google Document AI con 10× menos costo y privacidad total.


Spec del producto

Problema

Las PYMES procesan miles de documentos al mes (facturas de proveedores, contratos firmados, formularios de clientes) y los meten manualmente en sus sistemas (Sage, Holded, ContaPlus, Salesforce). Las alternativas existentes:

  • Document AI de Google / Textract de AWS: caras ($1.50-30/1000 páginas), genéricas, requieren subir docs a USA.
  • OCR + reglas custom: brittle, no escala a docs con layout variado.
  • OpenAI/Claude APIs: caras + datos van a USA.

Solución

API REST que recibe PDF/imagen y devuelve JSON estructurado según schema configurable. Modelo Gemma 4 E4B fine-tuneado para campos comunes en docs comerciales españoles.

Schema ejemplo (factura)

{
  "tipo": "factura",
  "numero": "F-2026-00123",
  "fecha_emision": "2026-04-15",
  "fecha_vencimiento": "2026-05-15",
  "emisor": {
    "nombre": "Acme SL",
    "cif": "B12345678",
    "direccion": "...",
    "iban": "ES12 1234 1234 1234 1234 1234"
  },
  "receptor": { "...": "..." },
  "lineas": [
    {
      "descripcion": "Servicio de consultoría",
      "cantidad": 10,
      "precio_unitario": 50.00,
      "subtotal": 500.00,
      "iva_porcentaje": 21,
      "iva_importe": 105.00
    }
  ],
  "totales": {
    "base_imponible": 500.00,
    "iva_total": 105.00,
    "total": 605.00
  },
  "metodo_pago": "transferencia"
}

MVP scope (4 semanas)

Semana 1: Backend + ingesta

  • [ ] Endpoint POST /extract que acepta multipart/form-data (PDF/PNG/JPG).
  • [ ] Pipeline: OCR (Tesseract o Marker) → texto → Gemma 4 E4B con prompt estructurado → JSON.
  • [ ] Validación con Pydantic.
  • [ ] Endpoint POST /schemas/{type} para definir schemas custom.

Semana 2: Tipos de documento

  • [ ] Facturas españolas (formato AEAT + Factura-e).
  • [ ] Contratos laborales (modelo SEPE).
  • [ ] Tickets/recibos.
  • [ ] Eval set: 100 documentos reales etiquetados.

Semana 3: Fine-tune

  • [ ] Generar dataset de 1K-5K ejemplos sintéticos + 100 reales.
  • [ ] LoRA fine-tune con Unsloth en M4 Pro (E4B caben en LoRA).
  • [ ] Eval antes/después: target F1 >0.92 en campos críticos.

Semana 4: API + onboarding

  • [ ] Auth con API keys.
  • [ ] Rate limiting (Redis).
  • [ ] Dashboard mínimo con uso + facturación.
  • [ ] Stripe usage-based billing.

Pricing

Plan Precio Incluye
Starter €99/mes 1.000 docs/mes, 1 schema
Pro €299/mes 10.000 docs/mes, schemas ilimitados
Enterprise €999/mes 100.000 docs/mes, schemas custom, SLA 99.9%
Pay-as-you-go $0.005/doc Sin plan, hasta 100K docs/mes

Comparación: Google Document AI cuesta $1.50-30/1000 páginas → $0.0015-0.03/doc. Tú compites en privacidad + precio estable, no en raw price.


Métricas de éxito

Métrica Target MVP Target mes 6
F1 score campos críticos >0.92 >0.97
Latencia p95 <5s <2s
Tasa de error de schema <5% <1%
Clientes pagando 3-5 30+
MRR €300-1500 €5K+

Diferenciadores

  1. 100% en español desde el primer día (no traducción de modelo inglés).
  2. Fine-tune disponible para schemas custom del cliente sin enviar datos a terceros.
  3. On-premise option para clientes enterprise (Docker image + license).
  4. Integración nativa con Sage/Holded/ContaPlus/Salesforce.

Riesgos específicos

Riesgo Mitigación
OCR de mala calidad en facturas mal escaneadas Pipeline con Marker + fallback a Tesseract + image preprocessing
Schemas dispares entre clientes Self-service schema builder en dashboard
Cliente exige certificación AEAT Diferir a fase enterprise; usa abogado fiscal
Datos sensibles (NIF, IBAN) en logs No loggear bodies; redaction en Langfuse

Competencia directa

Competidor Precio Privacidad Spanish-native
Google Document AI $1.50-30/1K páginas USA hosting No
AWS Textract $1.50-50/1K páginas USA hosting No
Mindee €0.05-0.50/doc EU option Parcial
Rossum €€€ (enterprise) EU option
$0.005/doc On-prem opcional Sí, nativo

Prompts vertical (ver prompts/v1.md)

System prompt base:

Eres un sistema de extracción de datos estructurados de documentos comerciales españoles.
Dado el texto de un documento, devuelves JSON exacto siguiendo el schema proporcionado.

Reglas:
- NUNCA inventes datos. Si un campo no aparece, usa null.
- Fechas en formato YYYY-MM-DD.
- Importes como números decimales (punto decimal, no coma).
- CIF/NIF validados con la regla del código de control.
- IBAN sin espacios.

Si el documento no es del tipo esperado, devuelve {"error": "tipo_incorrecto", "tipo_detectado": "..."}.

Próximos pasos

  1. Mira ../../stack/ para el backend base.
  2. Define tu primer schema en schemas/.
  3. Construye eval set en evals/golden-set.jsonl.
  4. Entrevista 5 PYMES (contables, gestorías, pequeñas empresas con muchas facturas).