Qwen3-0.6B · extractor de facturas a JSON (v2)
Convierte texto de facturas, tickets y correos de proveedor (por ejemplo, la salida de un OCR) en un JSON con estructura fija. Ajustado con LoRA sobre 500 facturas sintéticas en español, catalán e inglés.
Novedades v2: campos vacíos → null, descuentos por línea, retención IRPF de autónomos,
facturas en catalán e inglés y cientos de proveedores distintos.
Formato de salida
{"proveedor": "str|null", "nif": "str|null", "numero_factura": "str|null", "fecha": "AAAA-MM-DD|null",
"lineas": [{"descripcion": "str", "cantidad": 1, "precio_unitario": 0.0, "descuento_porcentaje": 0}],
"base_imponible": 0.0, "iva_porcentaje": 21, "irpf_porcentaje": 0, "total": 0.0}
- Un dato que no aparece o está vacío →
null(no se calcula). descuento_porcentajeeirpf_porcentaje→0si no se mencionan.proveedorydescripcionse copian tal como aparecen.
Uso con Ollama
ollama run hf.co/Ernes14AG/qwen3-0.6b-facturas-GGUF:Q8_0 --think=false
Importante: usa --think=false (o /set nothink en una sesión abierta). El modelo responde
directamente con el JSON; sin esa opción Ollama activa el razonamiento de Qwen3, más lento e innecesario.
Desde Python:
import ollama
r = ollama.generate(model="hf.co/Ernes14AG/qwen3-0.6b-facturas-GGUF:Q8_0", prompt=texto_factura,
format="json", think=False)
print(r["response"])
Resultados (80 facturas de prueba no vistas al entrenar)
| Métrica | Modelo base | v2 |
|---|---|---|
| JSON válido | 95% | 100% |
| proveedor | 79% | 100% |
| nif | 76% | 100% |
| numero_factura | 78% | 100% |
| fecha | 39% | 99% |
| lineas | 42% | 99% |
| base_imponible | 88% | 100% |
| iva_porcentaje | 90% | 100% |
| irpf_porcentaje | 94% | 100% |
| total | 88% | 100% |
| FACTURA PERFECTA | 8% | 98% |
Facturas perfectas por tipo:
| Tipo | v2 | Facturas |
|---|---|---|
| español | 100% | 44 |
| catalán | 92% | 12 |
| inglés | 96% | 24 |
| con campos vacíos | 97% | 32 |
| con IRPF | 94% | 17 |
| con descuento | 91% | 23 |
Limitaciones
- Datos sintéticos: con facturas reales y formatos muy distintos la precisión será menor.
- La entrada debe ser texto; para fotos o PDF escaneados, pasa antes un OCR.
Versiones
main: v2 (esta).v1: solo español, 12 proveedores, sin campos vacíos. En Python:AutoModelForCausalLM.from_pretrained("Ernes14AG/qwen3-0.6b-facturas", revision="v1").- GGUF para Ollama: Ernes14AG/qwen3-0.6b-facturas-GGUF · Pesos completos: Ernes14AG/qwen3-0.6b-facturas