Jeu de données
Quatre garde-fous de détection d'erreur sur 288 extractions de factures
288 extractions de factures déjà publiées ici, quatre contrôles appliqués à chacune, et les 288 réponses brutes du contrôle qui a demandé des appels. Test conduit le 2026-09-04.
Cette page décrit un jeu de données, publié en entier. C'est la matière première de notre comparaison de quatre garde-fous de détection d'erreur : 288 extractions de factures déjà publiées ici, quatre contrôles différents appliqués à chacune, et les 288 réponses brutes du contrôle qui a demandé des appels.
Tout ce qui figure sur cette page vient de ce seul test. Rien n'est estimé.
Ce qu'il mesure, et ce qu'il ne prouve pas
Il ne mesure aucun modèle. Il mesure les contrôles qu'on poserait autour d'un modèle pour attraper une extraction fausse avant qu'elle n'entre dans un système comptable.
Quatre garde-fous sont appliqués aux mêmes 288 extractions, et chacun est noté sur deux grandeurs qui ne se lisent jamais l'une sans l'autre : le taux de rattrapage, part des extractions fausses qu'il signale, et le taux de fausse alerte, part des justes qu'il signale. Un garde-fou qui signale tout affiche 100 % sur la première et ne sert à rien. Un qui ne signale rien affiche 0 % sur la seconde et ne sert à rien non plus.
Ce qu'il ne prouve pas, dit franchement, parce qu'un jeu de données cité sans ses limites fait plus de mal que pas de jeu de données du tout :
- Les extractions ont 25 jours. Elles ont été produites le 2026-08-10. Rien ici ne dit que les mêmes modèles commettent les mêmes erreurs aujourd'hui, et ce test n'a pas été conçu pour le savoir.
- 42 erreurs. Chaque taux de rattrapage repose sur 42 extractions fausses. Un pourcentage sur 42 éléments a une marge large : ordres de grandeur, pas constantes.
- Un corpus, 24 factures construites, graine fixe, déclaré comme construit dans son propre protocole. Aucune facture fournisseur réelle. Le piège de l'acompte qui met en défaut le contrôle arithmétique est une propriété voulue de ce corpus, et sa fréquence ici n'est pas celle d'une comptabilité réelle.
- Trois modèles, un fournisseur, un jour. La passe d'auto-vérification est passée par OpenRouter le 2026-09-04.
- La consigne d'auto-vérification est une consigne. Une autre donnerait d'autres
chiffres. Celle qui a été lancée est publiée dans
verifications.json, plutôt qu'une variante flatteuse cherchée après coup. - Rien ne mesure le coût d'une erreur manquée. Tous les arbitrages pèsent du temps de lecture contre des rattrapages.
Les extractions sont reprises, et voici ce que cela implique
Rien n'a été extrait pour ce test. Les 288 extractions jugées ici sont exactement
celles publiées le 2026-08-13 dans
le jeu de données d'extraction de factures :
24 factures fournisseur générées par script à partir de la graine 20260810, quatre
niveaux de dégradation du texte, trois modèles économiques, sept champs par facture
comparés à la vérité terrain générée. 42 sont fausses, 246 sont justes, et ce
partage a été tranché à l'époque.
C'est un échange délibéré et il coupe des deux côtés. Ce qu'il achète : les quatre garde-fous jugent un jeu d'extractions identique, donc la comparaison isole les garde-fous et rien d'autre. Ce qu'il coûte : refaire tourner les modèles le 2026-09-04 aurait mêlé leur effet à 25 jours de dérive, et ce jeu de données ne dit rien des modèles tels qu'ils sont aujourd'hui.
Ce jeu de données ne génère aucun corpus propre. Sa reproductibilité tient à la
graine du corpus source, 20260810. Régénérez-le et vous tenez les mêmes 24
factures.
Test conduit le 2026-09-04. Les appels ont été lancés par la chaîne de test automatisée de ce site : la passe d'auto-vérification et l'analyse sont des scripts, tous deux dans l'archive ci-dessous.
Les garde-fous
| Ce qu'il fait | Coût | |
|---|---|---|
| G0 | le champ notes du modèle, rempli lors de l'extraction d'origine |
aucun |
| G1 | arithmétique, deux sens : |total_due - (subtotal + tax)| >= 0.011 |
aucun |
| G2 | arithmétique, un seul sens : signale quand on réclame plus que ce que l'arithmétique porte | aucun |
| G3 | auto-vérification : un appel de plus au même modèle, avec la facture et sa propre sortie | un appel par facture |
| G4 | accord de trois modèles : tout désaccord de champ signale la facture | deux extractions de plus |
| G5 | accord avec un seul autre modèle, calculé pour les trois paires | une extraction de plus |
La consigne de G3 ne laisse jamais entendre qu'une erreur a été trouvée et ne donne aucune vérité terrain. Dire au modèle qu'une erreur existe mesurerait la docilité, pas la détection.
Les chiffres bruts
288 extractions jugées, 42 fausses, 246 justes.
| Garde-fou | Rattrapage | Fausses alertes | Précision | Erreurs manquées |
|---|---|---|---|---|
| G0 note spontanée | 69,0 % | 24,4 % | 32,6 % | 13 |
| G1 arithmétique, deux sens | 59,5 % | 22,0 % | 31,6 % | 17 |
| G2 arithmétique, un seul sens | 0,0 % | 0,0 % | sans objet | 42 |
| G3 auto-vérification | 97,6 % | 39,0 % | 29,9 % | 1 |
| G4 accord de trois modèles | 92,9 % | 11,0 % | 59,1 % | 3 |
| G3 et G4 ensemble | 97,6 % | 41,1 % | 28,9 % | 1 |
G5 avec gpt-4o-mini seul |
59,5 % | 5,3 % | 65,8 % | 17 |
G5 avec gemini-2.5-flash-lite seul |
47,6 % | 2,8 % | 74,1 % | 22 |
G5 avec claude-haiku-4.5 seul |
26,2 % | 7,3 % | 37,9 % | 31 |
Charge de relecture pour 1000 factures
Mille factures à ce taux d'erreur en contiennent 146.
| Garde-fou | À relire | Erreurs trouvées | Erreurs manquées | Lectures par erreur |
|---|---|---|---|---|
| G1 | 274 | 87 | 59 | 3,2 |
| G3 | 476 | 142 | 4 | 3,3 |
| G4 | 229 | 135 | 10 | 1,7 |
G5 avec gpt-4o-mini |
132 | 87 | 59 | 1,5 |
Fausses alertes par niveau de dégradation
| Niveau | Extractions fausses | G1 | G3 | G4 |
|---|---|---|---|---|
| N1 propre | 0 | 25,0 % | 30,6 % | 0,0 % |
| N2 colonnes perdues | 0 | 25,0 % | 37,5 % | 0,0 % |
| N3 totaux mélangés | 21 | 11,8 % | 47,1 % | 29,4 % |
| N4 libellés perdus | 21 | 23,5 % | 45,1 % | 23,5 % |
Aux niveaux 1 et 2 il n'y a aucune erreur à rattraper : les 144 extractions y sont toutes justes. G1 en signale 36, G3 en signale 49, G4 n'en signale aucune.
Direction de l'écart arithmétique
| Écart négatif | Exact | Écart positif | |
|---|---|---|---|
| Extractions fausses (42) | 25 | 17 | 0 |
| Extractions justes (246) | 54 | 192 | 0 |
Pas un écart sur 288 n'est positif, et c'est pourquoi G2 ne rattrape rien : une erreur rend le total trop bas, exactement comme un acompte déjà versé le fait légitimement.
Ce que valent les motifs de G3
| Motifs auditables | Réclament la valeur déjà présente | Part | |
|---|---|---|---|
| Sur extractions justes | 40 | 12 | 30,0 % |
| Sur extractions fausses | 25 | 4 | 16,0 % |
Coûts
La passe d'auto-vérification, 288 appels : 0,08638 USD, 288 lus, 288 JSON valides, 0 échec technique. Pour 1000 factures : G0, G1 et G2 ne coûtent rien, G3 coûte 0,300 USD, G4 coûte 0,830 USD, G5 coûte 0,415 USD.
Ce que contient l'archive
Huit fichiers, 566833 octets décompressés. L'inventaire est ici pour que vous sachiez ce que vous téléchargez avant de le télécharger.
| Fichier | Ce qu'il porte | Taille |
|---|---|---|
corpus.json |
les 24 factures et leur vérité terrain, graine 20260810 |
28,6 Kio |
degrader.py |
les quatre niveaux de dégradation, nécessaires pour redonner au modèle le texte exact qu'il a vu | 2,6 Kio |
extractions.json |
les 288 extractions jugées, chacune avec sa justesse champ par champ | 307,8 Kio |
auto-verifier.py |
la passe G3, un appel par extraction | 5,3 Kio |
verifications.json |
les 288 réponses brutes d'auto-vérification, avec la consigne utilisée | 135,5 Kio |
analyser.py |
les quatre garde-fous, la charge de relecture, l'audit des motifs de G3 | 12,9 Kio |
chiffres.json |
chacun des chiffres calculés | 49,2 Kio |
PROTOCOLE.md |
le protocole, la lecture des chiffres et les limites | 11,6 Kio |
corpus.json et degrader.py sont copiés sans changement du jeu de données du
2026-08-13, pour que cette archive tienne debout seule sans en télécharger une
autre.
Les scripts et leurs commentaires sont en français, langue de travail derrière ce site. La clé d'API est lue dans une variable d'environnement et n'apparaît dans aucun de ces fichiers.
Rejouez-le
L'analyse n'appelle aucun modèle : elle se rejoue à coût nul sur les réponses brutes
livrées dans l'archive. Seul auto-verifier.py dépense quelque chose.
unzip 2026-09-extraction-guardrails.zip
python3 auto-verifier.py --extractions extractions.json --corpus corpus.json \
--sortie verifications.json
python3 analyser.py --extractions extractions.json \
--verifications verifications.json --sortie chiffres.jsonUne règle de garde-fou que vous contestez peut être changée dans analyser.py et
relancée sur les mêmes 288 réponses sans payer un seul appel.
Chaque réponse brute est une entrée de verifications.json, telle que le modèle l'a
rendue, avant toute notation. Celle-ci est l'auto-vérification qui a signalé une
extraction juste en réclamant les valeurs qui y figuraient déjà :
{"modele": "openai/gpt-4o-mini", "facture": "F01", "niveau": 2, "lu": true,
"json_valide": true, "dit_correct": false,
"problemes": "subtotal should be 1581.38, but it is incorrectly extracted as 1581.38; tax should be 79.07, but it is incorrectly extracted as 79.07; total_due should be 1660.45, but it is incorrectly extracted as 1660.45"}Vérifiez ce que vous avez téléchargé avant de lui faire confiance :
shasum -a 256 2026-09-extraction-guardrails.zip
# 3438d27888762a3b2d0d5794d214f95bfd9a1692a40b8507353e62074e0ff754Comment citer ce jeu de données
Copiez l'une des deux formes ci-dessous. La référence pointe vers cette page, qui est l'adresse stable de ce jeu de données ; l'archive est ce que cette adresse sert.
Think AI First (2026). Quatre garde-fous de détection d'erreur sur 288 extractions de factures, 288 réponses brutes d'auto-vérification.
Think AI First. Test conduit le 2026-09-04, publié le 2026-09-04.
https://think-ai-first.com/fr/donnees/garde-fous-extraction-2026-09. Sous licence CC BY 4.0.@dataset{thinkaifirst2026gardefous,
author = {{Think AI First}},
title = {Quatre garde-fous de detection d'erreur sur 288 extractions de factures, 288 reponses brutes d'auto-verification},
year = {2026},
publisher = {Think AI First},
url = {https://think-ai-first.com/fr/donnees/garde-fous-extraction-2026-09},
note = {Test conduit le 2026-09-04. Sous licence CC BY 4.0. Archive SHA-256 3438d27888762a3b2d0d5794d214f95bfd9a1692a40b8507353e62074e0ff754}
}Licence et réutilisation
Publié sous CC BY 4.0. Utilisez-le, citez-le, contredisez-le. Si vous rejouez ce test et obtenez autre chose, dites-le-nous par le formulaire de contact : les corrections sont publiées sur l'article lui-même, datées.
Télécharger le jeu de données (zip, 44,4 Kio, 8 fichiers)
Les autres jeux de données publiés ici
Chacun est un test distinct, avec son corpus, ses réponses brutes et son archive. Celui-ci juge les extractions du premier.
- Extraction de factures par trois modèles économiques, 288 réponses brutes, test conduit le 2026-08-10.
- Dédoublonnage de contacts par trois modèles économiques, 96 réponses brutes, test conduit le 2026-08-17.
- Extraction des actions d'un compte rendu, 96 réponses brutes, test conduit le 2026-08-18.
- Répétabilité d'une étape LLM à température 0, 360 réponses brutes, test conduit le 2026-08-25.
- Prix contre justesse en extraction de factures, six modèles, 864 réponses brutes avec leur coût facturé, test conduit le 2026-09-06.
- Deux garde-fous de détection d'erreur sur 368 fusions de contacts proposées, 96 réponses brutes d'auto-vérification, test conduit le 2026-09-12.
- Rapprochement facture et bon de commande par quatre modèles, 672 décisions brutes, test conduit le 2026-09-14.