En holofin, la extracción de extractos bancarios es uno de nuestros trabajos principales, y lo ejecutamos en producción. Prestamistas, contables y equipos financieros nos entregan extractos de cientos de bancos diferentes y esperan que cada transacción sea devuelta, exactamente, sin inventar ni omitir nada.
La extracción se sitúa al principio de ese pipeline, por lo que sus errores nunca se quedan ahí. Una fila faltante o inventada no solo resta un punto a la puntuación de precisión. Se convierte en un saldo que no cuadra, una decisión de viabilidad financiera basada en un número que nunca estuvo en la página, un libro mayor en el que nadie más adelante en el proceso puede confiar. Un extracto bancario es booleano: o es completamente correcto, o es un riesgo.
Así que queríamos saber con qué fiabilidad hacen esto realmente los mejores modelos actuales, no en una demo seleccionada a mano, sino en extractos reales, evaluados de la forma en que los evalúa un equipo financiero, donde lo único que cuenta es si todo el extracto cuadra. Construimos un benchmark para averiguarlo.
El dataset47 extractos reales, uno por banco
Cada extracto es real, luego anonimizado para que el diseño, las tablas y los totales sobrevivan, pero los nombres y números son sintéticos: grandes bancos franceses, bancos alemanes, neobancos y EMIs, cada uno con su propia idea de cómo debería ser una tabla de transacciones. Las etiquetas gold se verificaron a mano contra los PDFs originales.
Cada extracto es real, luego anonimizado para que el diseño, las tablas y los totales sobrevivan, pero los nombres y números son sintéticos. Haz clic en cualquier página para ampliar; cambia a Por banco para filtrar.





























































































La precisión por fila es una métrica vanidosa
El número que le importa a un cliente no es "qué fracción de filas son correctas" sino "¿es correcto este extracto?". No son la misma métrica. Un extracto es correcto solo si cada fila lo es, por lo que una fila omitida o inventada hace que todo el documento falle.
- Por extracto, no por fila. holofin extrae el 98% de los extractos con cero errores; el mejor modelo de frontera logra un 80%. En 44 documentos, holofin produjo una fila con error; los modelos de frontera produjeron 70–115 cada uno.
- La brecha es la invención, no la lectura. Todos los sistemas leen bien la página (recall 0.88–1.00). Los fallos son filas que el modelo devuelve y que no están en la página: alrededor del 8–10% de las filas que devuelve un modelo de frontera no coinciden con ninguna transacción en el extracto. Rastreamos cada una a mano: el 68–93% de ellas (según el modelo) no tienen ninguna contraparte en la página, es pura invención; el resto es una fila real leída con una cantidad o fecha incorrecta. holofin: una fila de este tipo en 44 extractos.
- El riesgo es la cola, no un impuesto constante. Los errores no se distribuyen uniformemente: la mayoría de los extractos vuelven limpios en todos los modelos, pero un puñado de diseños fallan estrepitosamente. Una fila inventada hace que falle todo el extracto, y nada te dice de antemano qué documento será.
- Una ventana más grande no es la solución. Alimentar más páginas por llamada no sirve de nada; procesar por página es fiable porque limita la invención.
Lo que encontramos
Cuatro lecturas del mismo benchmark. La primera sitúa a cada sistema en completitud (¿encontró las filas?) frente a precisión (¿son reales las filas que devolvió?). El resto sigue la aritmética a partir de ahí.
Todos los sistemas encuentran las filas (completitud, x). Difieren en cuántas de las filas que devuelven existen realmente (precisión, y). holofin se sitúa en la esquina superior derecha; los modelos de frontera caen en el eje de precisión a medida que inventan. Modelos de frontera mostrados por página.
Un extracto es correcto solo si cada fila lo es. Porcentaje de extractos extraídos con cero errores (sin filas omitidas, sin filas inventadas) frente al gold verificado a mano. La sub-etiqueta es el total de filas con error en los 44 documentos: holofin cometió uno; los modelos de frontera cometieron docenas.
De cada fila que devuelve un modelo, la proporción cuya (fecha, cantidad) no está en la página. Rastreamos cada una a mano: aproximadamente el 68–93% (según el modelo) no tienen ninguna contraparte en la página — pura invención; el resto es una transacción real leída con una cantidad o fecha incorrecta. Una fila inventada cuadra con un saldo incorrecto y parece plausible: el fallo silencioso. Modelos de frontera mostrados en su mejor configuración (por página).
holofin se ejecuta una página a la vez y lidera todos los ejes. Para los modelos de frontera, alimentar más páginas por llamada no sirve de nada: el recall cae un poco, la precisión sube un poco, dos páginas suele ser el punto óptimo. La brecha que importa es la que hay con la barra verde.
Los errores no son un impuesto constante: se acumulan en un puñado de diseños (bami, crédit industriel, raiffeisenbank, paypal…) mientras que la mayoría de los extractos vuelven limpios en todos los modelos. Ese es el verdadero riesgo: no un 10% predecible, sino unos pocos diseños que fallan estrepitosamente, sin forma de saber de antemano qué documento tienes entre manos — y una fila mala hace que falle todo el extracto. Recuento bruto de filas con error (omitidas + inventadas, frente al gold) por extracto, configuración por página; un extracto por banco, por lo que los diseños raros están sobrerrepresentados. La columna de holofin está vacía. · = limpio; números = errores en ese documento.
La destrucción silenciosa de la fila inventada
No es un fallo al leer la tinta en la página. Si una transacción está visiblemente impresa, todos los modelos la encuentran. El problema es lo que encuentran cuando la transacción no está ahí. Hay una diferencia operativa masiva entre una fila omitida y una inventada. Una fila omitida es molesta: el saldo no cuadra y un operador detecta el hueco. Una fila inventada es un asesino silencioso. El modelo extrae un saldo acumulado, un subtotal o una fecha suelta y lo formatea como una transacción válida. Parece perfectamente plausible al hacerlo. Simplemente envenena la aritmética de forma lenta e invisible.
Qué significa "inventado" aquí — y qué no
Emparejamos cada fila devuelta con la página según su (date, signed amount) con precisión de centavos. Una fila devuelta que no coincide con nada cuenta en contra del modelo. Ese grupo no es todo lo mismo, así que rastreamos cada fila sin coincidencia a mano: el 68–93% de ellas (dependiendo del modelo) no tienen ninguna contraparte en la página — un saldo acumulado, un subtotal o una cifra suelta disfrazada de transacción. El resto es una transacción real leída con una cantidad o fecha distorsionada. Ambas hacen que el extracto sea incorrecto, pero son fallos diferentes — y la mayoría es pura invención, no un error de OCR. (Una advertencia: una mala lectura solo se distingue de una invención cuando sobrevive una fila hermana con la que emparejarla, por lo que esta división es un límite inferior de la verdadera invención).
El gold es humano, no un modelo
No dejamos que un modelo evaluara a otros modelos. El ground truth se construyó a mano: en cada documento donde los sistemas no estaban de acuerdo, una persona abrió el PDF original y comprobó las transacciones línea por línea. El benchmark puntúa frente a lo que está realmente impreso en la página, verificado por un humano, no frente a la opinión de otro modelo sobre ello.
MetodologíaCómo está estructurado el benchmark
Los candidatos de frontera reciben imágenes de páginas con un prompt de extracción genérico en tres tamaños de contexto. holofin es el pipeline de producción real (clasificar → OCR → extraer por página), ejecutado a través de HTTP. Cada métrica es doc-macro: calculada por documento y luego promediada.
44 extractos, uno por cada banco distinto, elegidos por su diversidad de diseño — no ponderados por la frecuencia con la que cada banco aparece en el tráfico real. Esto sobrerrepresenta deliberadamente diseños raros y complicados (una pequeña mutua vasca, una cooperativa alemana Raiffeisen de ocho páginas), que es exactamente donde los modelos de frontera fallan. Así que lee esto como una prueba de fiabilidad en el peor de los casos, no como un pronóstico de precisión media en producción: un modelo que sale limpio en los bancos comunes aquí todavía puede hundirse con el próximo diseño extraño que encuentre. Y la única fila con error de holofin en 44 docs es un dato alentador, no una tasa garantizada.
La comprobación obvia en producción es si las matemáticas de un extracto cuadran: saldo inicial + Σ transacciones = saldo final. Lo medimos, y es necesario pero no suficiente como métrica de verdad. Los extractos de GPT-5.5 cuadran 42/45 de las veces, y sin embargo sigue inventando ~8% de las filas frente a la página real; una fila inventada compensada por otro error sigue cuadrando, y un modelo que omite los saldos por completo (Gemini los dejó en blanco en 12 documentos) no se puede comprobar en absoluto. Un extracto puede pasar las matemáticas y seguir siendo incorrecto. Así que puntuamos cada transacción frente al gold que fue verificado a mano contra el PDF original.
No necesitas una ventana más grande. Necesitas un arnés.
No resuelves la extracción pasando un PDF entero a un endpoint y pidiéndole a un modelo que tenga cuidado. En holofin esa es la descripción del trabajo. Construimos la jaula dentro de la cual corre la inteligencia:
- Estructura antes que semántica. El OCR determinista y la geometría construyen primero el contexto de la página. Los prompts capturan bien el significado y mal la estructura visual.
- Limitar el problema. Procesamos estrictamente por página, nunca pidiendo a un modelo que mantenga un libro mayor entero en la memoria de trabajo.
- Restricciones > vibras. Reglas contables estrictas deciden qué cuenta como una transacción antes de que un resultado se finalice.
Una vez que has escrito suficiente andamiaje para estar seguro (la redundancia del OCR, la geometría delimitadora, los parsers estrictos, las conciliaciones), el modelo ya no es el héroe. Es el especialista al que llamas para disputas y casos límite. El trabajo no es eliminar las partes aburridas; es construir cosas aburridas para que la magia tenga algo sólido sobre lo que sostenerse.
Artículos relacionados

Tu extractor de tablas aprobó. Los números no.
Una auditora abre el resultado de tu extracción de un balance general. El modelo reporta una precisión de celdas del 99.2%. Impresionante. Luego, suma la columna de activos a mano, como hacen los auditores, y el resultado es un número desfasado por una fila. Los activos ya no equivalen a los pasivos más el patrimonio. El estado financiero no cuadra.

Detección de fraude documental: Lo que un PDF no puede ocultar
Solíamos pensar que el fraude documental era un problema visual. Fuentes incorrectas. Columnas desalineadas. Un logotipo que se sentía ligeramente incorrecto. Construimos controles en torno a lo que ven los humanos, porque lo que ven los humanos era todo lo que teníamos.

Cuando los documentos contraatacan
Página 1: Resumen de cuenta, dos columnas. Página 15: Misma cuenta, tres columnas, nombres de encabezado diferentes. Página 47: Un escaneo con una mancha de café. Página 89: La página de totales, que hace referencia a transacciones que extrajiste hace 70 páginas.