Aller au contenu
Mohamed Khelifa Zaghdidi Je dirige des équipes, j'opère un modèle, je publie les mesures.

L'échec qui ne lève pas d'erreur

Données — publié le 10 septembre 2026

Le cas

Un pipeline d’extraction reçoit un document. Le contrat d’entrée dit : du texte. Le document natif en contient une couche, propre, produite par l’outil qui l’a créé.

Le document numérisé, lui, n’en contient pas. La couche de texte est reconstituée par reconnaissance optique. Elle existe, elle est syntaxiquement valide, elle se lit. Elle peut aussi être partielle : un tableau aplati, une colonne perdue, une signature manuscrite ignorée, un tampon devenu illisible.

Le pipeline ne voit pas la différence. Il a reçu du texte. Il produit une sortie.

Cette sortie est plausible. Elle est structurée, elle a le bon format, elle passe les contrôles de schéma. Elle repose sur une lecture partielle du document, et rien dans le système ne le dit.

Aucune exception n’est levée. C’est ce qui rend le défaut coûteux : il ne réclame pas d’attention.

Pourquoi la mesure ne le rattrape pas

Sur un corpus de référence de 492 éléments annotés à la main, je mesure un rappel global. Ce chiffre agrège deux populations : les documents à couche de texte native et les documents reconstitués.

Si la seconde échoue systématiquement et qu’elle représente une part minoritaire du corpus, le rappel global reste bon. Le défaut est dilué par la moyenne. On ne le voit pas parce qu’on ne le cherche pas séparément.

La part exacte de documents reconstitués dans ce corpus : non mesuré à ce jour. C’est la première chose à instrumenter, avant toute amélioration du système.

Un chiffre agrégé sur deux populations qui n’ont pas le même comportement ne mesure ni l’une ni l’autre.

Ce que ça change dans le contrat d’entrée

Le texte n’est pas une donnée suffisante. Ce qui doit circuler, c’est le texte accompagné de son origine et d’un indicateur de confiance, par zone du document et non pour le document entier — une page peut être nette et un tableau illisible.

Trois conséquences :

  1. Le type d’entrée devient une dimension de mesure. Rappel par type, pas rappel global.
  2. Le seuil devient une décision explicite. Sous un niveau de confiance donné, le système refuse et remonte le document à un humain. Il n’infère pas.
  3. Refuser doit être un état de sortie légitime, au même titre que réussir. Un pipeline qui n’a que « réussi » et « planté » n’a pas d’endroit pour dire « lu partiellement ».

Le point qu’on oublie

Quand un document numérisé est trop dégradé, la tentation est mécanique : l’envoyer à un service externe plus performant. C’est exactement le moment où une donnée qu’on avait décidé de garder locale quitte l’infrastructure, et il arrive sans décision.

L’indicateur de confiance n’est donc pas seulement une métrique de qualité. Il est le point où se branche la politique d’inférence : ce qui est traité localement, ce qui est refusé. Pas ce qui est escaladé dehors.

Quand la contrainte est que la donnée ne quitte pas l’infrastructure, ce branchement n’est pas une option de configuration. C’est une décision d’architecture, prise avant l’écriture du premier appel.


Observations issues d’un projet personnel en cours, hors de mon activité professionnelle. Corpus de 492 éléments annotés manuellement. Toute correction sera signalée en pied de note.