Le cas
Une entreprise reçoit chaque semaine des dizaines de factures fournisseurs et de bons de commande, par e-mail, dans des formats tous différents. Quelqu'un les ouvre un par un et recopie le fournisseur, les montants, les dates et les références dans l'outil de gestion.
C'est lent, c'est pénible, et une erreur de saisie peut coûter cher. C'est aussi un très bon candidat pour l'IA : la tâche est répétitive, bien délimitée, et le résultat se vérifie facilement.
Comment ça marche
- 1Réception du document
- 2Lecture du texte
- 3Extraction structurée
- 4Contrôles automatiques
- 5Validation humaine
- Réception. Les pièces jointes arrivent sur une adresse dédiée ou sont déposées dans l'application.
- Lecture. Si le PDF contient du texte, on le récupère directement. S'il s'agit d'un scan ou d'une photo, une étape de reconnaissance de caractères (OCR) est nécessaire, ou un modèle capable de lire les images.
- Extraction structurée. On demande au modèle de remplir un format précis (fournisseur, numéro, date, montants HT, TVA et TTC, lignes de commande) plutôt que de produire du texte libre.
- Contrôles automatiques. Le résultat est vérifié par du code classique, pas par l'IA.
- Validation humaine. La personne qui faisait la saisie ne fait plus que relire et corriger les champs pré-remplis.
Les contrôles : là où se joue la fiabilité
Un modèle de langage peut se tromper, même rarement. La parade n'est pas d'espérer qu'il ne se trompe pas, mais de vérifier ce qui est vérifiable :
function controler(facture, fournisseursConnus) {
const alertes = [];
const totalCalcule = facture.montantHT + facture.montantTVA;
if (Math.abs(totalCalcule - facture.montantTTC) > 0.01) {
alertes.push('HT + TVA ne correspond pas au TTC');
}
const sommeLignes = facture.lignes.reduce((total, ligne) => total + ligne.montantHT, 0);
if (Math.abs(sommeLignes - facture.montantHT) > 0.01) {
alertes.push('La somme des lignes ne correspond pas au total HT');
}
if (!fournisseursConnus.has(facture.siret)) {
alertes.push('Fournisseur inconnu : à vérifier');
}
return alertes;
}Une facture sans alerte peut être présentée comme « prête à valider » ; une facture avec alertes est mise en évidence, avec le détail du problème. La personne sait où regarder.
Ce que l'humain garde
L'objectif n'est pas de supprimer la vérification, mais de la rendre rapide. Concrètement :
- la validation finale reste humaine, au moins au début, et toujours pour les montants importants ;
- le document d'origine est affiché à côté des champs, pour comparer d'un coup d'œil ;
- chaque correction est enregistrée : elle sert à repérer les fournisseurs ou les formats qui posent problème, et à améliorer les consignes.
Mesurer avant de généraliser
Avant de déployer, on teste sur un lot de documents réels déjà saisis, dont on connaît les bonnes valeurs. On compte, champ par champ, combien sont justes du premier coup. Ce chiffre, mesuré sur vos propres documents, est le seul qui compte pour décider : il dit si le gain de temps est réel et quels champs méritent une attention particulière.
Les pièges à éviter
- Les scans de mauvaise qualité. Une photo floue ou de travers dégrade tout le reste. Il vaut mieux la signaler que d'extraire des valeurs douteuses.
- Faire confiance au modèle pour les calculs. Les totaux se vérifient avec du code, pas en demandant au modèle s'il est sûr de lui.
- Tout automatiser d'un coup. Commencer par les fournisseurs les plus fréquents donne vite des résultats, et les cas particuliers se traitent ensuite.
- Oublier la confidentialité. Les factures contiennent des données commerciales. Le choix entre un modèle local ou distant se pose ici comme ailleurs.