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 /extractque 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¶
- 100% en español desde el primer día (no traducción de modelo inglés).
- Fine-tune disponible para schemas custom del cliente sin enviar datos a terceros.
- On-premise option para clientes enterprise (Docker image + license).
- 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 | Sí |
| Tú | $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¶
- Mira ../../stack/ para el backend base.
- Define tu primer schema en
schemas/. - Construye eval set en
evals/golden-set.jsonl. - Entrevista 5 PYMES (contables, gestorías, pequeñas empresas con muchas facturas).