E-03 · Claude Haiku y Sonnet 5.5, gemma4:12b y qwen3.5:9b · 04/11/2026
¿Te puedes fiar de la IA para leer facturas en imagen?
Respuesta corta
Con una imagen limpia, sí: los cuatro modelos leyeron los 9 campos. Con una foto mala, Claude Haiku 5.5 y qwen3.5:9b leyeron «F-2026-0167» en lugar de «F-2026-0187» sin avisar, y gemma4:12b se inventó una factura entera cuyo total sí cuadra con base + IVA. Comprobar las sumas no basta: hay que cruzar con datos externos.
1/9
campos correctos de gemma4:12b con la foto mala
- Fecha
- 04/11/2026
- Modelos
- Nube: Claude Haiku 5.5 y Claude Sonnet 5.5 (Claude Code 2.1.317). Locales: gemma4:12b y qwen3.5:9b (Ollama 0.40.14)
- Imágenes
- Una factura ficticia en tres versiones: limpia; escaneada (girada 2,2°, con ruido, JPEG calidad 35); foto mala (reducida a 390 px y girada: 428 × 578 px, desenfocada, girada, con sombra)
- Campos
- 9, comprobados por código: número, fecha, NIF, cliente, base, % IVA, IVA, total y 3 líneas con importe
- Repeticiones
- 1 ejecución por imagen y modelo
Resultados
Lo que salió
| Imagen | Claude Haiku 5.5 | Claude Sonnet 5.5 | gemma4:12b | qwen3.5:9b |
|---|---|---|---|---|
| Limpia | 9/9 | 9/9 | 9/9 | 9/9 |
| Escaneada | 8/9 | 9/9 | 9/9 | 9/9 |
| Foto mala | 7/9 | 8/9 | 1/9 | 8/9 |
| Campo | Factura real | gemma4:12b |
|---|---|---|
| Número | F-2026-0187 | P-2020001 |
| Base | 1.240,50 € | 1.000,00 € |
| IVA (21 %) | 260,51 € | 210,00 € |
| Total | 1.501,01 € | 1.210,00 € |
| ¿Base + IVA = total? | sí | sí |
| ¿Las líneas suman la base? | sí | no (1.000 + 1.200 + 600) |
Qué falló · limitaciones
Lo que no funcionó, y lo que esta prueba no dice
- El error peligroso es el silencioso: Claude Haiku y qwen3.5:9b devolvieron un número de factura plausible y equivocado sin avisar. Claude Sonnet, con la misma foto, puso «ILEGIBLE».
- Pedir «ILEGIBLE si no estás seguro» funcionó a medias: Claude Haiku lo usó con el NIF de la escaneada y con la fecha de la foto, pero no con el número.
- La factura inventada por gemma4:12b cuadra (1.000 + 210 = 1.210): un control de sumas no la detecta. El modelo añadió una nota fuera del JSON hablando de «inconsistencias visuales», pero no marcó ningún campo como ILEGIBLE; un proceso que solo lea el JSON no la verá.
- Lo que sí lo habría cazado: que las líneas sumen la base y que el número y el NIF existan en tu registro de proveedores.
- Una sola factura ficticia y una ejecución por imagen: no mide la variación entre ejecuciones.
Datos abiertos
Descarga los datos
Saneados: sin cuentas, rutas ni prompts completos. Lo justo para rehacer la tabla. Licencia CC BY 4.0: úsalos citando «Laboratorio BeautyThings».
ocr-facturas-errores-silenciosos.csvCSV12 lecturas (3 imágenes × 4 modelos) con los campos correctos y lo que leyó cada uno.
ocr-facturas-errores-silenciosos.jsonJSONLo mismo, más la factura real y la lectura completa inventada por gemma4:12b, con su nota.
ocr-facturas-errores-silenciosos-LEEME.txtTXTFecha, versiones, método y cómo comprobar la tabla.
resumen.pyPythonAgrupa cualquier CSV y suma los criterios: python resumen.py <archivo.csv> <columna>
Repetiremos esta prueba
Con la próxima versión de los modelos y de las herramientas, con el mismo corpus y el mismo corrector, y publicaremos los dos resultados juntos. Si quieres que midamos otra variante, escríbenos.