Le benchmark d'extraction de relevés bancaires

Un benchmark en conditions réelles pour l'extraction de transactions, et pourquoi un modèle qui semble précis à 90 % ne renvoie presque jamais un relevé entièrement correct.

H
Holofin Engineering · Engineering· 20 min de lecture·Jui 27, 2026
Read in English
BENCHMARK
98%
relevés holofin avec zéro erreur
1
ligne erronée holofin sur 44 docs
70–115
lignes erronées par modèle de pointe
47
banques · gold vérifié à la main

Chez holofin, l'extraction de relevés bancaires est l'un de nos cœurs de métier, et nous la faisons tourner en production. Les prêteurs, les comptables et les équipes financières nous confient des relevés provenant de centaines de banques différentes et s'attendent à récupérer chaque transaction, exactement, sans rien inventer ni omettre.

L'extraction se situe tout au début de cette pipeline, ses erreurs ne restent donc jamais isolées. Une ligne manquante ou inventée ne fait pas que amputer un score de précision d'un point. Elle devient un solde impossible à rapprocher, une décision de solvabilité basée sur un chiffre qui n'a jamais figuré sur la page, un grand livre auquel personne en aval ne peut se fier. Un relevé bancaire est booléen : soit il est entièrement correct, soit c'est un risque.

Nous voulions donc savoir avec quelle fiabilité les meilleurs modèles actuels accomplissent réellement cette tâche, non pas sur une démo triée sur le volet, mais sur de vrais relevés, évalués de la même manière qu'une équipe financière les évalue, où la seule chose qui compte est de savoir si l'ensemble du relevé tient la route. Nous avons construit un benchmark pour le découvrir.

Le jeu de données

47 vrais relevés, un par banque

Chaque relevé est réel, puis anonymisé de sorte que la mise en page, les tableaux et les totaux survivent, mais les noms et les chiffres sont synthétiques : grandes banques françaises, banques allemandes, néobanques et EMI, chacune ayant sa propre idée de ce à quoi devrait ressembler un tableau de transactions. Les labels gold ont été vérifiés à la main par rapport aux PDF sources.

Le corpus du benchmark · 47 banques, 93 pages

Chaque relevé est réel, puis anonymisé de sorte que la mise en page, les tableaux et les totaux survivent, mais les noms et les chiffres sont synthétiques. Cliquez sur n'importe quelle page pour zoomer ; passez à Par banque pour filtrer.

bami banque michel inchausp p1/4
bami banque michel inchauspp1/4
bami banque michel inchausp p2/4
bami banque michel inchauspp2/4
bami banque michel inchausp p3/4
bami banque michel inchauspp3/4
bami banque michel inchausp p4/4
bami banque michel inchauspp4/4
banque dupuy de parseval
banque dupuy de parseval
banque transatlantique p1/2
banque transatlantiquep1/2
banque transatlantique p2/2
banque transatlantiquep2/2
berliner sparkasse
berliner sparkasse
berliner volksbank
berliner volksbank
bnp paribas
bnp paribas
boursobank
boursobank
bred banque populaire p1/2
bred banque populairep1/2
bred banque populaire p2/2
bred banque populairep2/2
bunq p1/2
bunqp1/2
bunq p2/2
bunqp2/2
bwebank p1/2
bwebankp1/2
bwebank p2/2
bwebankp2/2
caisse d epargne p1/2
caisse d epargnep1/2
caisse d epargne p2/2
caisse d epargnep2/2
commerzbank p1/2
commerzbankp1/2
commerzbank p2/2
commerzbankp2/2
credit agricole brie picardie
credit agricole brie picardie
credit cooperatif p1/2
credit cooperatifp1/2
credit cooperatif p2/2
credit cooperatifp2/2
credit industriel et commercial p1/2
credit industriel et commercialp1/2
credit industriel et commercial p2/2
credit industriel et commercialp2/2
cr dit mutuel
cr dit mutuel
deutsche bank p1/2
deutsche bankp1/2
deutsche bank p2/2
deutsche bankp2/2
deutsche skatbank p1/2
deutsche skatbankp1/2
deutsche skatbank p2/2
deutsche skatbankp2/2
dkb deutsche kreditbank ag p1/3
dkb deutsche kreditbank agp1/3
dkb deutsche kreditbank ag p2/3
dkb deutsche kreditbank agp2/3
dkb deutsche kreditbank ag p3/3
dkb deutsche kreditbank agp3/3
fiducial banque
fiducial banque
finom
finom
grenke bank ag p1/3
grenke bank agp1/3
grenke bank ag p2/3
grenke bank agp2/3
grenke bank ag p3/3
grenke bank agp3/3
hsbc
hsbc
hypovereinsbank p1/2
hypovereinsbankp1/2
hypovereinsbank p2/2
hypovereinsbankp2/2
ibanfirst p1/3
ibanfirstp1/3
ibanfirst p2/3
ibanfirstp2/3
ibanfirst p3/3
ibanfirstp3/3
kontist p1/2
kontistp1/2
kontist p2/2
kontistp2/2
la banque postale p1/3
la banque postalep1/3
la banque postale p2/3
la banque postalep2/3
la banque postale p3/3
la banque postalep3/3
lcl banque et assurance
lcl banque et assurance
manager one p1/2
manager onep1/2
manager one p2/2
manager onep2/2
mein elba p1/3
mein elbap1/3
mein elba p2/3
mein elbap2/3
mein elba p3/3
mein elbap3/3
memo bank
memo bank
monabanq p1/2
monabanqp1/2
monabanq p2/2
monabanqp2/2
oberbank ag
oberbank ag
paypal p1/4
paypalp1/4
paypal p2/4
paypalp2/4
paypal p3/4
paypalp3/4
paypal p4/4
paypalp4/4
postbank
postbank
qonto
qonto
raiffeisenbank s dstormarn m lln eg p1/8
raiffeisenbank s dstormarn m lln egp1/8
raiffeisenbank s dstormarn m lln eg p2/8
raiffeisenbank s dstormarn m lln egp2/8
raiffeisenbank s dstormarn m lln eg p3/8
raiffeisenbank s dstormarn m lln egp3/8
raiffeisenbank s dstormarn m lln eg p4/8
raiffeisenbank s dstormarn m lln egp4/8
raiffeisenbank s dstormarn m lln eg p5/8
raiffeisenbank s dstormarn m lln egp5/8
raiffeisenbank s dstormarn m lln eg p6/8
raiffeisenbank s dstormarn m lln egp6/8
raiffeisenbank s dstormarn m lln eg p7/8
raiffeisenbank s dstormarn m lln egp7/8
raiffeisenbank s dstormarn m lln eg p8/8
raiffeisenbank s dstormarn m lln egp8/8
revolut business
revolut business
sg credit du nord p1/2
sg credit du nordp1/2
sg credit du nord p2/2
sg credit du nordp2/2
sg societe generale
sg societe generale
shine
shine
sparda bank p1/3
sparda bankp1/3
sparda bank p2/3
sparda bankp2/3
sparda bank p3/3
sparda bankp3/3
sumup p1/4
sumupp1/4
sumup p2/4
sumupp2/4
sumup p3/4
sumupp3/4
sumup p4/4
sumupp4/4
targox bank p1/4
targox bankp1/4
targox bank p2/4
targox bankp2/4
targox bank p3/4
targox bankp3/4
targox bank p4/4
targox bankp4/4
unicredit
unicredit
viva wallet
viva wallet
wise
wise
fig · 47 relevés anonymisés / 93 pages · cliquez sur une page pour zoomer
À retenir

La précision par ligne est une vanity metric

Le chiffre qui compte pour un client n'est pas « quelle fraction des lignes est correcte » mais « ce relevé est-il correct ». Ce ne sont pas les mêmes métriques. Un relevé n'est correct que si chaque ligne l'est, donc une seule ligne manquante ou inventée fait échouer tout le document.

  • Par relevé, pas par ligne. holofin extrait 98 % des relevés avec zéro erreur ; le meilleur modèle de pointe atteint 80 %. Sur 44 documents, holofin a produit une ligne erronée ; les modèles de pointe en ont produit 70–115 chacun.
  • L'écart vient de l'invention, pas de la lecture. Chaque système lit bien la page (recall 0.88–1.00). holofin invente une ligne sur 44 relevés (0,1 %) ; les modèles de pointe inventent 8–10 % de chaque ligne qu'ils retournent.
  • Une fenêtre plus grande n'est pas la solution. Fournir plus de pages par appel ne change rien ; le traitement par page est fiable car il limite l'invention.
Résultats

Ce que nous avons découvert

Quatre lectures du même benchmark. La première place chaque système sur l'exhaustivité (a-t-il trouvé les lignes ?) par rapport à la précision (les lignes retournées sont-elles réelles ?). Le reste découle de cette arithmétique.

FIG.01
Lit tout, en invente un dixième

Chaque système trouve les lignes (exhaustivité, x). Ils diffèrent sur le nombre de lignes retournées qui existent réellement (précision, y). holofin se situe dans le coin supérieur droit ; les modèles de pointe chutent sur l'axe de précision à mesure qu'ils inventent. Modèles de pointe affichés par page.

85%90%95%100%90%95%100%EXHAUSTIVITÉ · RECALL →PRÉCISION ↑holofinR 1.000 · P 0.999GPT-5.5R 0.939 · P 0.917Claude Opus 4.8R 0.929 · P 0.908Gemini 3.1 ProR 0.931 · P 0.900
FIG.02
Lire 90 % des lignes ne signifie pas avoir 90 % des relevés corrects

Un relevé n'est correct que si chaque ligne l'est. Part des relevés extraits avec zéro erreur (aucune ligne manquante, aucune ligne inventée) par rapport au gold vérifié à la main. Le sous-label indique le total des lignes erronées sur l'ensemble des 44 documents : holofin en a fait une ; les modèles de pointe en ont fait des dizaines.

holofin1 ligne erronée / 44 docs98%
Gemini 3.1 Pro115 lignes erronées / 44 docs80%
GPT-5.584 lignes erronées / 44 docs77%
Claude Opus 4.870 lignes erronées / 44 docs75%
0%RELEVÉS AVEC ZÉRO ERREUR →100%
FIG.03
L'erreur silencieuse est la ligne inventée

Part des transactions retournées qui n'existent pas sur la page. Une ligne inventée se rapproche d'un solde erroné et semble plausible : l'échec silencieux. Modèles de pointe affichés à leur meilleur paramètre (par page).

holofinproduction · par page0.1%
GPT-5.5par page8.3%
Claude Opus 4.8par page9.2%
Gemini 3.1 Propar page10.0%
0%TAUX DE LIGNES INVENTÉES →15%
FIG.04
Une fenêtre plus grande n'est pas la solution

holofin traite une page à la fois et domine tous les axes. Pour les modèles de pointe, fournir plus de pages par appel ne change rien : le recall baisse un peu, la précision augmente un peu, deux pages est souvent le point d'équilibre. L'écart qui compte est celui avec la barre verte.

holofin1.000
GPT-5.5
par page0.939
deux pages0.942
doc entier0.932
Gemini 3.1 Pro
par page0.931
deux pages0.953
doc entier0.932
Claude Opus 4.8
par page0.929
deux pages0.948
doc entier0.940
0.00PLUS C'EST HAUT, MIEUX C'EST →1.00
FIG.05
Chaque document, chaque erreur

Aucun agrégat derrière lequel se cacher. Voici le décompte brut des lignes erronées (manquantes + inventées, vs gold) sur chaque relevé, par modèle, avec le paramètre par page. Lisez la colonne de holofin de haut en bas : elle est vide. · = propre ; nombres = erreurs sur ce document.

banquelignesholofinGPT-5.5GEMINIOPUS 4.8
bami banque michel inchausp47·173117
banque dupuy de parseval2·1·1
banque transatlantique23····
berliner sparkasse1····
berliner volksbank3····
bnp paribas1····
boursobank4··9·
bred banque populaire2····
bunq36····
bwebank7·433
caisse d epargne1····
commerzbank7····
credit agricole brie picardie7····
credit industriel et commercial13·352929
cr dit mutuel11····
deutsche bank1····
dkb deutsche kreditbank ag9····
fiducial banque6····
finom1····
grenke bank ag4····
hsbc3····
hypovereinsbank2····
ibanfirst25····
kontist2····
lcl banque et assurance1···1
manager one4····
mein elba33·111
memo bank4···4
monabanq34····
oberbank ag1····
paypal2·464
postbank1····
qonto8·16··
raiffeisenbank s dstormarn m lln eg63·3323
revolut business1····
sg credit du nord4····
sg societe generale3····
shine13····
sparda bank23····
sumup39····
targox bank241235
unicredit1····
viva wallet1····
wise2·112
propre1–23–56+TOTAL DES LIGNES ERRONÉES   holofin 1GPT-5.5 84GEMINI 115OPUS 4.8 70
Où les modèles échouent

La destruction silencieuse de la ligne inventée

Ce n'est pas un échec de lecture de l'encre sur la page. Si une transaction est visiblement imprimée, chaque modèle la trouve. Le problème est ce qu'ils trouvent quand la transaction n'y est pas. Il y a une différence opérationnelle massive entre une ligne manquante et une ligne inventée. Une ligne manquante est ennuyeuse : le solde ne correspond pas et un opérateur repère l'écart. Une ligne inventée est un tueur silencieux. Le modèle récupère un solde courant, un sous-total ou une date isolée et le formate comme une transaction valide. Cela semble parfaitement plausible. Cela empoisonne simplement l'arithmétique, lentement et de manière invisible.

Le gold est humain, pas un modèle

Nous n'avons pas laissé un modèle évaluer d'autres modèles. La vérité terrain (ground truth) a été construite à la main : sur chaque document où les systèmes étaient en désaccord, une personne a ouvert le PDF source et vérifié les transactions ligne par ligne. Le benchmark évalue par rapport à ce qui est réellement imprimé sur la page, vérifié par un humain, et non par rapport à l'opinion d'un autre modèle.

Méthodologie

Comment le benchmark est conçu

Les modèles de pointe candidats reçoivent des images de pages avec un prompt d'extraction générique à trois tailles de contexte. holofin est la véritable pipeline de production (classification → OCR → extraction par page), pilotée via HTTP. Chaque métrique est doc-macro : calculée par document, puis moyennée.

47 PDF bancaires
un par banque distincte
Anonymisation
pdf-holomask · tableaux & totaux préservés
Fenêtres de rendu
par page · deux pages · doc entier
Extraction
3 modèles de pointe + pipeline holofin
Score
vs gold vérifié à la main
Gold = vérifié par un humain
vérifié ligne par ligne par rapport à chaque PDF source
Règle de correspondance
exacte (transaction_date, montant signé) à la précision du centime
Pourquoi ne pas simplement évaluer par rapprochement de solde ?

La vérification de production évidente est de savoir si les calculs d'un relevé tombent juste : solde d'ouverture + Σ transactions = solde de clôture. Nous l'avons mesuré, et c'est nécessaire mais non suffisant comme métrique de vérité. Les relevés de GPT-5.5 se rapprochent 42/45 du temps, pourtant il invente toujours ~8 % des lignes par rapport à la page réelle ; une ligne inventée compensée par une autre erreur tombe toujours juste, et un modèle qui omet entièrement les soldes (Gemini les a laissés vides sur 12 documents) ne peut pas être vérifié du tout. Un relevé peut réussir les calculs et être quand même faux. Nous évaluons donc chaque transaction par rapport au gold qui a été vérifié à la main avec le PDF source.

Performances en production

Vous n'avez pas besoin d'une plus grande fenêtre. Vous avez besoin d'un cadre de contrôle.

On ne résout pas l'extraction en passant un PDF entier à un endpoint et en demandant à un modèle de faire attention. Chez holofin, c'est la description du poste. Nous construisons la cage dans laquelle l'intelligence s'exécute :

  • La structure avant la sémantique. L'OCR déterministe et la géométrie construisent d'abord le contexte de la page. Les prompts capturent bien le sens et mal la structure visuelle.
  • Délimiter le problème. Nous traitons strictement par page, sans jamais demander à un modèle de conserver un grand livre entier dans sa mémoire de travail.
  • Contraintes > vibes. Des règles comptables strictes décident de ce qui compte comme une transaction avant même qu'un résultat ne soit finalisé.

Une fois que vous avez écrit suffisamment d'échafaudages pour être en sécurité (la redondance OCR, la géométrie de délimitation, les parsers stricts, les rapprochements), le modèle n'est plus le héros. C'est le spécialiste que vous appelez pour les litiges et les cas particuliers (edge cases). Le travail ne consiste pas à éliminer les parties ennuyeuses ; il consiste à construire des choses ennuyeuses pour que la magie ait une base solide sur laquelle s'appuyer.

Articles connexes

Holofin