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· 22 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 de centaines de banques différentes et s'attendent à récupérer chaque transaction, exactement, sans rien d'inventé ni d'oublié.

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 retirer un point à un score de précision. 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 avec 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é pour 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 "est-ce que ce relevé est 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 seule 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). Les erreurs sont des lignes que le modèle renvoie et qui ne sont pas sur la page : environ 8 à 10 % des lignes renvoyées par un modèle de pointe ne correspondent à aucune transaction sur le relevé. Nous les avons toutes tracées à la main — 68 à 93 % d'entre elles (selon le modèle) n'ont aucun équivalent sur la page, c'est de la pure invention ; le reste correspond à une vraie ligne lue avec un montant ou une date erronés. holofin : une seule ligne de ce type sur 44 relevés.
  • Le risque est dans la traîne, pas une taxe constante. Les erreurs ne sont pas réparties uniformément — la plupart des relevés reviennent propres sur tous les modèles, mais une poignée de mises en page échouent lourdement. Une seule ligne inventée fait échouer tout le relevé, et rien ne vous dit à l'avance de quel document il s'agira.
  • 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 trouvé

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 renvoyées sont-elles réelles ?). Le reste suit l'arithmétique à partir de là.

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 renvoyé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 la 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 seule ; 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

Sur chaque ligne renvoyée par un modèle, la part dont le (date, amount) n'est pas sur la page. Nous les avons toutes tracées à la main : environ 68 à 93 % (selon le modèle) n'ont aucun équivalent sur la page — de la pure invention ; le reste correspond à une vraie transaction lue avec un montant ou une date erronés. Une ligne inventée se rapproche d'un solde erroné et semble plausible : l'échec silencieux. Modèles de pointe affichés avec leur meilleur paramétrage (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 precision augmente un peu, le traitement par 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
La plupart des documents sont propres ; quelques-uns échouent lourdement

Les erreurs ne sont pas une taxe constante — elles s'accumulent sur une poignée de mises en page (bami, crédit industriel, raiffeisenbank, paypal…) tandis que la plupart des relevés reviennent propres sur tous les modèles. C'est là le vrai risque : pas un 10 % prévisible, mais quelques mises en page qui échouent lourdement, sans aucun moyen de savoir à l'avance quel document vous avez entre les mains — et une seule mauvaise ligne fait échouer tout le relevé. Décompte brut des lignes erronées (manquantes + inventées, vs gold) par relevé, paramétrage par page ; un relevé par banque, les mises en page rares sont donc surreprésentées. La colonne de holofin est vide. · = propre ; chiffres = 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
Là 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. Il a l'air parfaitement plausible en le faisant. Il empoisonne simplement l'arithmétique, lentement et de manière invisible.

Ce que "inventé" signifie ici — et ce que cela ne signifie pas

Nous associons chaque ligne renvoyée à la page sur son (date, signed amount) à la précision du centime. Une ligne renvoyée qui ne correspond à rien compte contre le modèle. Ce groupe ne représente pas qu'une seule et même chose, nous avons donc tracé chaque ligne non correspondante à la main : 68 à 93 % d'entre elles (selon le modèle) n'ont aucun équivalent sur la page — un solde courant, un sous-total ou un chiffre isolé déguisé en transaction. Le reste correspond à une vraie transaction lue avec un montant ou une date altérés. Les deux rendent le relevé faux, mais ce sont des échecs différents — et la majorité relève d'une véritable invention, pas d'une erreur d'OCR. (Une mise en garde : une erreur de lecture ne se distingue d'une invention que lorsqu'une ligne sœur survit pour l'y associer, cette répartition est donc une limite inférieure de la véritable invention.)

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 candidats de pointe 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 (classify → OCR → per-page extract), 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 contre chaque PDF source
Règle de correspondance
exact (transaction_date, signed amount) à la précision du centime
Ce qu'est ce benchmark — et ce qu'il n'est pas

44 relevés, un par banque distincte, choisis pour la diversité de leur mise en page — non pondérés par la fréquence d'apparition de chaque banque dans le trafic réel. Cela surreprésente délibérément les mises en page rares et complexes (une petite mutuelle basque, une coopérative allemande Raiffeisen de huit pages), ce qui est exactement là où les modèles de pointe échouent. Considérez donc ceci comme une évaluation de la fiabilité dans le pire des cas, et non comme une prévision de la précision moyenne en production : un modèle propre sur les banques courantes ici peut toujours être coulé par la prochaine mise en page étrange qu'il rencontrera. Et la seule ligne erronée de holofin sur 44 docs est un point de donnée encourageant, pas un taux garanti.

Pourquoi ne pas simplement évaluer par le rapprochement des soldes ?

La vérification évidente en production 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 passer les mathématiques et être quand même faux. Nous évaluons donc chaque transaction par rapport au gold qui a été vérifié à la main contre le PDF source.

Performances en production

Vous n'avez pas besoin d'une fenêtre plus grande. Vous avez besoin d'un harnais.

Vous ne résolvez 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 à l'intérieur de 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 de l'OCR, la géométrie de délimitation, les parseurs 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. Le travail ne consiste pas à éliminer les parties ennuyeuses ; il consiste à construire des choses ennuyeuses pour que la magie ait un support solide sur lequel s'appuyer.

Articles connexes

Holofin