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.

bash
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.json

Une 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à :

json
{"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 :

bash
shasum -a 256 2026-09-extraction-guardrails.zip
# 3438d27888762a3b2d0d5794d214f95bfd9a1692a40b8507353e62074e0ff754

Comment 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.

citation
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.
bibtex
@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.