Jeu de données
Extraction de factures par trois modèles économiques
288 réponses brutes de modèles, 24 factures générées par script avec leur vérité terrain, quatre niveaux de dégradation. Test conduit le 2026-08-10.
Cette page décrit un jeu de données, publié en entier. C'est la matière première de notre mesure des erreurs d'extraction silencieuses : 24 factures fournisseur, quatre niveaux de dégradation du texte, trois modèles économiques, et les 288 réponses que ces modèles ont réellement rendues.
Tout ce qui figure ici vient de cette seule campagne. Rien n'est estimé.
Ce que ça mesure, et ce que ça ne prouve pas
Ça mesure une chose précisément : la fréquence à laquelle une extraction est
fausse, silencieuse et plausible. Fausse, c'est-à-dire qu'au moins un des sept
champs ne correspond pas à la vérité terrain. Silencieuse, c'est-à-dire que le modèle
n'a rien inscrit dans le champ notes qui lui était explicitement offert. Plausible,
c'est-à-dire que subtotal + tax = total_due tient encore, donc que le contrôle le
moins cher ne se déclenche pas.
Ce que ça 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 :
- L'entrée est du texte, pas une image numérisée. Ça ne dit rien des erreurs de caractères d'un OCR, qui ne peuvent qu'aggraver le résultat.
- Le corpus est construit par script, pas collecté. Aucune facture réelle, aucun fournisseur réel.
- 24 factures. Un test sur 24 cas est un test sur 24 cas.
- Une exécution par combinaison, à température 0. Un écart d'un ou deux points entre modèles n'est pas significatif ici. C'est la forme des erreurs qui tient.
- Anglais seulement, une page par facture.
- Trois modèles d'entrée de gamme. Rien ici ne dit ce que feraient les plus chers.
Le corpus est construit, et voici ce que ça implique
Les 24 factures ont été générées par script avec la graine fixe 20260810. C'est un
échange délibéré, et il coupe dans les deux sens.
Ce qu'il apporte : la vérité terrain est connue sans discussion, et n'importe qui peut régénérer exactement le même corpus et contester notre lecture. Ce qu'il coûte : ce ne sont pas des documents réels, et les mises en page qu'un vrai fournisseur produit sont plus variées que tout ce qu'un générateur invente.
Quatre difficultés ont été insérées, chacune résolue par le document lui-même de sorte qu'une seule réponse défendable existe : un acompte déjà versé et déduit, une remise appliquée avant taxe, un symbole de devise ambigu levé en toutes lettres, et un format de date ambigu levé à la ligne suivante.
Test conduit le 2026-08-10. Cette page a été publiée le 2026-08-13. Les extractions ont été menées par la chaîne de test automatisée de ce site : le corpus, les appels aux modèles et l'analyse sont des scripts, et ils sont tous dans l'archive ci-dessous.
Chiffres bruts
Factures entièrement justes, sur 24
| Modèle | N1 propre | N2 colonnes perdues | N3 totaux mélangés | N4 libellés perdus |
|---|---|---|---|---|
| openai/gpt-4o-mini | 24/24 | 24/24 | 21/24 | 14/24 |
| google/gemini-2.5-flash-lite | 24/24 | 24/24 | 18/24 | 19/24 |
| anthropic/claude-haiku-4.5 | 24/24 | 24/24 | 12/24 | 18/24 |
| Tous modèles confondus | 72/72 | 72/72 | 51/72 | 51/72 |
Échec silencieux
| Niveau | Extractions fausses | Fausses sans aucun signalement | Part |
|---|---|---|---|
| N1 propre | 0 | 0 | sans objet |
| N2 colonnes perdues | 0 | 0 | sans objet |
| N3 totaux mélangés | 21 | 3 | 14,3 pour cent |
| N4 libellés perdus | 21 | 10 | 47,6 pour cent |
Le contrôle arithmétique, subtotal + tax = total du
| Niveau | Fausses rattrapées | Taux de rattrapage | Justes signalées à tort | Taux de fausse alerte |
|---|---|---|---|---|
| N1 propre | 0 | sans objet | 18 | 25,0 pour cent |
| N2 colonnes perdues | 0 | sans objet | 18 | 25,0 pour cent |
| N3 totaux mélangés | 10 | 47,6 pour cent | 6 | 11,8 pour cent |
| N4 libellés perdus | 15 | 71,4 pour cent | 12 | 23,5 pour cent |
Quel champ casse
| Champ | N1 | N2 | N3 | N4 |
|---|---|---|---|---|
| invoice_number, invoice_date, due_date, currency | 0 | 0 | 0 | 0 |
| subtotal | 0 | 0 | 0 | 17 |
| tax | 0 | 0 | 0 | 3 |
| total_due | 0 | 0 | 21 | 10 |
Totaux de la campagne
| Grandeur | Valeur |
|---|---|
| Extractions | 288 |
| Échecs techniques | 0 |
| Réponses JSON invalides | 0 |
| Coût total des appels | 0,11951 USD |
| Fausses, silencieuses et passant le contrôle arithmétique | 8 |
Ce que contient l'archive
Sept fichiers, 393777 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 contient | Taille |
|---|---|---|
generer-corpus.py |
le générateur du corpus, graine fixe 20260810 | 7,2 Kio |
corpus.json |
les 24 factures et leur vérité terrain | 28,6 Kio |
degrader.py |
les quatre niveaux de dégradation | 2,6 Kio |
conduire-test.py |
les appels aux modèles et la comparaison champ par champ | 6,6 Kio |
resultats-bruts.json |
les 288 réponses, brutes, avec la consigne employée | 326,7 Kio |
analyser.py |
le calcul de tous les chiffres de cette page | 4,6 Kio |
chiffres.json |
les chiffres calculés | 8,4 Kio |
Les scripts et leurs commentaires sont en français, qui est la 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.
Rejouer la mesure
Le générateur emploie une graine fixe : le corpus que vous produisez est celui que nous avons employé.
unzip 2026-08-invoice-extraction.zip
cd 2026-08-invoice-extraction
python3 generer-corpus.py --sortie corpus.json
python3 conduire-test.py --corpus corpus.json --sortie resultats-bruts.json \
--niveaux 1 2 3 4 \
--modeles openai/gpt-4o-mini google/gemini-2.5-flash-lite anthropic/claude-haiku-4.5
python3 analyser.py --resultats resultats-bruts.json --sortie chiffres.jsonChaque réponse brute est une ligne de resultats-bruts.json, avec les champs rendus
par le modèle, ceux qui correspondaient, s'il a signalé quelque chose, et si le
contrôle arithmétique est passé :
{"modele": "openai/gpt-4o-mini", "facture": "F04", "niveau": 3,
"json_valide": true, "nb_champs_justes": 6, "tous_les_champs_justes": false,
"a_signale_quelque_chose": false, "controle_arithmetique_passe": true}Vérifiez ce que vous avez téléchargé avant de lui faire confiance :
shasum -a 256 2026-08-invoice-extraction.zip
# 8d8982b037ddb6b0a1c6c420375024e6d63bfc9aff8852c49c8a22766ecddd84Comment 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). Extraction de factures par trois modèles économiques, 288 réponses brutes.
Think AI First. Test conduit le 2026-08-10, publié le 2026-08-13.
https://think-ai-first.com/fr/donnees/extraction-factures-2026-08. Sous licence CC BY 4.0.@dataset{thinkaifirst2026factures,
author = {{Think AI First}},
title = {Extraction de factures par trois modèles économiques, 288 réponses brutes},
year = {2026},
publisher = {Think AI First},
url = {https://think-ai-first.com/fr/donnees/extraction-factures-2026-08},
note = {Test conduit le 2026-08-10. Sous licence CC BY 4.0. SHA-256 de l'archive 8d8982b037ddb6b0a1c6c420375024e6d63bfc9aff8852c49c8a22766ecddd84}
}Licence et réutilisation
Publié sous CC BY 4.0. Servez-vous-en, citez-le, contredisez-le. Si vous rejouez la mesure et obtenez autre chose, dites-le 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, 27,8 Kio, 7 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.
- 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 par trois modèles économiques, 96 réponses brutes, test conduit le 2026-08-18.