Se han reconocido todas las cifras. Aun así, el subtotal acaba en el registro de datos como importe final. Los errores de este tipo parecen ordenados: JSON válido, campos rellenados, ningún mensaje de error en rojo. Lo que falta está en la relación entre el número, la etiqueta y la fila de la tabla.
La documentación de OCR de Mistral describe, entre otras cosas, texto estructurado, formatos de tabla y coordenadas de bloques. Document Annotations puede además convertir información a un formato JSON predefinido. Estos componentes resuelven partes distintas del camino del documento a la aplicación.
Cuatro niveles para un solo campo
Primero hay que leer los caracteres. Después, la aplicación necesita su posición y su orden. A continuación, tiene que reconocer qué campo describe un valor. Por último, entran en juego las relaciones de contenido: ¿coincide el importe final con las partidas indicadas en el ejemplo y el descuento declarado?
Un error en cualquiera de estos niveles puede acabar produciendo el mismo número erróneo. Por eso, una salida de texto completa no es por sí sola una medida de calidad suficiente. Para un valor importante, debería conservarse el camino de vuelta hasta el lugar donde se encontró.
No siempre tiene que ser una marca gráfica elaborada. Un identificador del documento, la página y una descripción inequívoca del campo ya ayudan. Si se usan coordenadas, deben corresponder a la página y la representación correctas. Un rectángulo sin una versión del documento claramente identificada puede, a su vez, causar confusión más adelante.
Crea una factura cuyo contenido conozcas
Para una prueba manejable, diseñas tu propio PDF con dos partidas. La partida A contiene dos unidades a diez euros cada una; la partida B, una unidad a quince euros. Debajo figuran un descuento de cinco euros y un importe final de treinta euros. Falta deliberadamente un número de pedido. Las cifras sirven solo como explicación técnica, no como plantilla a efectos fiscales.
Antes de la extracción, anota los valores esperados y dónde se encuentran. En una segunda versión, cambia solo la maquetación: el descuento y el total quedan ahora más cerca de las partidas. Así podrás saber después si la asignación usa la etiqueta o depende de una posición casual.
Deja que una vía de OCR externa adecuada entregue primero el texto y la estructura. Una extracción posterior debería devolver el importe final, la moneda, el número de pedido y la ubicación en el documento. El número de pedido que falta se mantiene como desconocido. Un número sustituto inventado sería un error, aunque rellene por completo el formato de salida.
Una pequeña comprobación de contenido fuera del modelo
La sencilla relación aritmética del ejemplo sintético se puede comprobar de forma independiente. Para importes decimales como estos, usa, por ejemplo, Decimal en lugar de valores binarios de coma flotante. Este ejemplo en Python, escrito por nosotros, comprueba únicamente el cálculo didáctico que hemos definido:
from decimal import Decimal
positionen = [
(Decimal("2"), Decimal("10.00")),
(Decimal("1"), Decimal("15.00")),
]
rabatt = Decimal("5.00")
ausgewiesen = Decimal("30.00")
berechnet = sum((menge * preis for menge, preis in positionen), Decimal("0")) - rabatt
assert berechnet == ausgewiesen
Una comprobación aritmética superada solo mostraría que los números usados aquí encajan entre sí. No demuestra que el OCR haya tomado estos números del documento correcto. Por eso, la comprobación aritmética y la comprobación de la fuente siguen siendo dos pasos distintos.
En una aplicación real, también tienes que respetar las reglas del tipo de documento concreto. Los impuestos, los redondeos, las monedas y los casos especiales no pueden deducirse de esta factura simplificada. Aquí la tarea consiste simplemente en trasladar una asignación conocida de forma trazable.
La incertidumbre forma parte del contrato de entrega
Define explícitamente qué ocurre con una cifra ilegible o con una contradicción. Un registro de datos puede contener el valor, el lugar donde se encontró y un estado de aclaración. Solo una transferencia confirmada desencadena entonces el siguiente paso previsto.
Una instrucción adecuada: «No añadas información que falte. Para cada importe que transfieras, remite al campo etiquetado. Registra por separado los totales contradictorios. Genera solo una vista previa, no un asiento contable».
Así, la prueba concreta va más allá de simplemente leer el PDF. Compruebas por separado los caracteres, la estructura, el significado de los campos y una relación conocida. Esto es exactamente lo que crea un camino utilizable hacia unos datos que no solo parecen ordenados, sino que también llevan de vuelta al original.
Fuentes y estado
Fuentes a 25 de octubre de 2026. Procesador OCR de Document AI · Document Annotations.

