Person reviewing a PDF document on a laptop before moving its data into Drupal

Un pipeline Drupal pour transformer des PDF en contenu structuré

Recopier les informations de fichiers PDF sur un site web prend du temps que les rédacteurs pourraient consacrer à la vérification de ces informations. Pour extraire les données de PDF vers Drupal de manière fiable, un outil capable de lire les documents ne suffit pas. Il faut un pipeline qui place chaque valeur dans le bon champ, détecte les problèmes et donne à la personne chargée de la relecture assez de contexte pour valider le résultat.

L’étape de mapping est la plus importante. Sans elle, l’extraction produit un simple bloc de texte dans un autre conteneur. Avec elle, les dimensions, le matériau et les références de certification d’un produit deviennent des données réutilisables pour les pages du site, les filtres, les API et les formats lisibles par les machines.

Voici comment concevoir ce pipeline, y compris l’étape de relecture et le traitement des documents qui demandent une autre approche.

Dans cet article:

À quoi ressemble le pipeline du PDF vers Drupal?

L’objectif métier est de transformer les informations des documents en contenus modifiables, sans que votre équipe ait à ressaisir chaque valeur. L’extraction n’est qu’une étape de ce processus.

Imaginons que vos fournisseurs envoient des fiches techniques de produits au format PDF. Votre site Drupal a besoin, pour chaque produit, d’un numéro de modèle, des dimensions, du poids, du matériau et des références de certification. Certains fichiers décrivent un seul produit, d’autres contiennent un tableau couvrant plusieurs variantes.

Un pipeline qui prépare les données pour la relecture fait passer chaque document par ces étapes:

  1. Recevoir et enregistrer le PDF. Attribuez un identifiant au document, enregistrez sa source et sa version, et conservez un lien vers l’original avec un accès contrôlé.
  2. Identifier le type de document. Déterminez s’il s’agit d’une fiche technique connue, d’un tableau numérisé ou d’un format inconnu.
  3. Extraire les valeurs candidates. Lisez le texte, les images des pages ou la structure du tableau avec une méthode adaptée.
  4. Mapper les valeurs vers les champs Drupal. Associez chaque information au bon produit, au bon champ, à la bonne unité et à la bonne référence.
  5. Valider l’enregistrement candidat. Vérifiez les contraintes des champs, les relations et les preuves issues de la source.
  6. Placer le brouillon dans la file de relecture. Affichez les valeurs candidates à côté des extraits de la source concernés.
  7. Publier après validation. Rendez la révision validée disponible via les sorties configurées du site.

Gardez le téléversement rapide. Un worker en arrière-plan peut prendre en charge l’extraction une fois la requête de téléversement terminée. La Queue API de Drupal fournit une base pour le traitement en file d’attente. Les workers doivent supporter les relances sans effet de bord, car une tâche peut être exécutée plusieurs fois.

Par exemple, une empreinte du document (hash) permet de reconnaître un fichier identique téléversé une seconde fois. L’identifiant et la version du document source distinguent une nouvelle version d’un doublon accidentel. Avant d’écrire du contenu, le worker vérifie si un enregistrement candidat existe déjà pour cette combinaison d’import et de produit.

Le statut de traitement et le statut de publication sont distincts. “Extraction terminée” signifie que le worker a fini sa tâche. Cela ne signifie pas que les informations sont prêtes pour les lecteurs. Suivez les statuts de traitement, comme “en attente”, “extrait”, “échec” et “en attente de correction”, séparément des statuts éditoriaux de Drupal.

Quelle méthode d’extraction pour quel document?

Choisir la méthode selon le type de document permet de réduire les coûts de traitement et les relectures inutiles. Une fiche technique propre, générée numériquement, peut se contenter d’une extraction de texte classique. Un tableau photographié demande une autre approche.

Méthode Point de départ pertinent Limites possibles
Extraction de texte PDF générés numériquement avec du texte lisible Les pages à plusieurs colonnes peuvent mélanger l’ordre de lecture; les tableaux peuvent perdre le lien entre lignes et colonnes
Reconnaissance optique de caractères (OCR) Pages numérisées et texte sous forme d’image L’inclinaison, une impression pâle, les petits caractères et l’écriture manuscrite peuvent produire un texte erroné ou incomplet
Extraction basée sur l’analyse de la mise en page Tableaux, colonnes, titres et valeurs regroupées Les cellules fusionnées, les en-têtes répétés et les mises en page inhabituelles peuvent encore associer des valeurs aux mauvais libellés
Extraction assistée par LLM Libellés et formats variables qui demandent une interprétation Un modèle peut inventer une valeur manquante, confondre des produits ou donner une réponse plausible sans preuve

Ces méthodes peuvent se combiner. L’OCR peut produire du texte et des coordonnées qu’un outil de mise en page interprète. Un LLM peut faire correspondre les libellés hétérogènes des fournisseurs à un schéma d’extraction fixe.

Commencez par la source. Un texte sélectionnable ne garantit pas un texte exact: un PDF numérisé peut contenir une ancienne couche OCR avec des erreurs de reconnaissance. Vérifiez que le texte extrait correspond à la page visible avant de vous y fier. Pour une comparaison d’outils d’extraction testés sur des documents juridiques, consultez l’article PDF vers un texte prêt pour l’IA: comment choisir le bon outil d’extraction de données.

Les tableaux méritent une attention particulière. Un tableau enregistré sous forme d’image nécessite l’OCR ou une interprétation visuelle avant que ses valeurs ne deviennent des données structurées. Même alors, lire correctement “240” ne représente que la moitié du travail. Le pipeline doit aussi savoir dans quelle ligne de produit et dans quelle colonne de dimension se trouve cette valeur.

Pour l’extraction assistée par LLM, demandez que les valeurs manquantes restent vides et exigez un extrait de la source ou une référence de page pour chaque information candidate. Vérifiez ensuite cette preuve. Une citation générée par un modèle reste une valeur candidate, pas une preuve.

Traitez aussi le texte du document comme une donnée d’entrée. Les instructions contenues dans un PDF ne doivent jamais contrôler les outils, les identifiants ou les actions de publication du worker.

Avant d’envoyer des fichiers à un service externe, vérifiez les conditions de conservation, les lieux de traitement, les contrôles d’accès et si le fournisseur utilise les données transmises pour entraîner ses modèles. Les fichiers sources confidentiels doivent aussi être stockés de manière protégée dans votre propre système.

Comment les valeurs extraites deviennent-elles des champs Drupal typés?

C’est ici que le modèle de contenu montre toute sa valeur. Les définitions de champs présentées dans l’article Drupal Content Modeling pour l’answer coverage: champs, pas prose deviennent le schéma de destination de l’import: ce que signifie chaque valeur, comment Drupal la stocke et quelles valeurs le site accepte.

“Poids: 2,4 kg” est un texte lisible. Un champ décimal pour le poids associé à une unité explicite constitue une donnée réutilisable.

Pour notre fiche technique fictive, le mapping pourrait ressembler à ceci. Les valeurs et les références de page ci-dessous sont des exemples.

Libellé et valeur dans la source Champ de destination Type de données Transformation Preuve dans la source
Modèle: 00127 Numéro de modèle du produit Chaîne Supprimer les espaces autour; conserver les zéros initiaux Page 1, titre du modèle
Dimensions (L × H × P): 240 × 180 × 90 mm Largeur, hauteur, profondeur, unité de dimension Champs décimaux et unité contrôlée Découper selon l’ordre explicite des axes Page 2, ligne des dimensions
Poids: 2,4 kg Poids et unité de poids Champ décimal et unité contrôlée Séparer le nombre de l’unité Page 2, ligne du poids
Matériau: Alu Matériau Référence de terme de taxonomie Associer un synonyme validé au terme existant “Aluminium” Page 2, ligne du matériau
Référence du certificat: CERT-482 Enregistrement de certification Référence d’entité Associer un identifiant connu ou signaler pour relecture Page 3, section certification

Une référence de certificat dans un PDF indique ce que la source affirme. Elle ne prouve pas que le certificat est authentique, en cours de validité ou applicable à ce produit. Si ces vérifications comptent pour la publication, prévoyez une étape de validation ou de relecture dédiée.

Les dates et les nombres demandent des règles tout aussi précises. Une date ambiguë comme 03/04/2026 nécessite une convention connue de la source ou la décision d’un relecteur. Les séparateurs décimaux et les conversions d’unités dépendent aussi des conventions du document. Conservez à la fois la valeur d’origine et la valeur candidate normalisée, afin qu’un rédacteur puisse retracer la modification.

Plusieurs décisions de mapping méritent des règles explicites:

  • Lignes répétées: créez des enregistrements distincts lorsque chaque ligne représente une valeur ou une relation différente.
  • Plusieurs produits: associez chaque information extraite à un identifiant de produit avant de créer des brouillons de produits.
  • Termes inconnus: placez les libellés de taxonomie sans correspondance dans la file de relecture au lieu d’enrichir automatiquement le vocabulaire.
  • Valeurs manquantes: distinguez “non indiqué” de zéro, de faux ou de “non applicable”.
  • Valeurs contradictoires: conservez les deux valeurs candidates avec leur emplacement dans la source au lieu d’en choisir une sans le signaler.

Stockez la preuve issue de la source avec chaque champ candidat ou dans un enregistrement d’import associé. Protégez ces preuves par des droits d’accès: les extraits internes et les notes de relecture n’ont pas leur place par défaut dans les API publiques.

Un importateur configuré ou un worker personnalisé peut créer des brouillons d’entités via les API d’entités de Drupal et déclencher explicitement la validation avant l’enregistrement. Enregistrer via une API ne remplace pas l’appel à la validation. Si la valeur candidate ne respecte pas les contraintes de l’entité de destination, conservez-la dans un enregistrement intermédiaire jusqu’à sa correction.

Pour un exemple proche, la catégorisation de documents assistée par IA pour BetterRegulation associe les informations des documents à des références de taxonomie Drupal existantes et permet aux rédacteurs d’ajuster les champs remplis avant l’enregistrement. Ce projet illustre le mapping structuré et le contrôle éditorial, et non l’ensemble du pipeline PDF proposé ici.

Que doit détecter la validation avant qu’un relecteur n’ouvre le brouillon?

La validation doit retirer du bureau du relecteur tout le travail de vérification évitable. Un rédacteur ne devrait pas avoir à repérer à l’œil chaque identifiant manquant ou unité non prise en charge.

Commencez par séparer deux questions:

  • La valeur est-elle structurellement acceptable? Elle a le type, le format et la valeur autorisée attendus.
  • La valeur représente-t-elle correctement la source? Elle appartient au bon produit, au bon libellé et à la bonne version du document.

Un JSON valide ne répond à aucune de ces questions à lui seul. Un nombre décimal positif peut très bien être la hauteur du produit de la ligne suivante.

Pour le pipeline des fiches techniques, les contrôles automatiques peuvent couvrir les identifiants obligatoires, les formats numériques, les unités autorisées, les correspondances de taxonomie, les correspondances de références et les formats de date. Ajoutez des contrôles croisés entre champs lorsque le type de document le permet. Par exemple, un groupe de dimensions a besoin d’un ordre d’axes et d’une unité clairs avant que le pipeline puisse remplir la largeur, la hauteur et la profondeur en toute sécurité.

Les contrôles de preuve peuvent confirmer qu’une page citée existe et que l’extrait contient bien la valeur candidate indiquée. Les relations plus délicates, par exemple savoir si une note de bas de tableau change le sens d’une valeur, peuvent encore demander un jugement humain.

Donnez aux erreurs des conséquences différentes. Un identifiant de produit manquant peut bloquer la création d’un brouillon de produit. Un libellé de matériau facultatif inconnu peut permettre un enregistrement intermédiaire tout en exigeant la décision d’un rédacteur. Dans les deux cas, l’enregistrement reste hors publication jusqu’à la résolution des problèmes concernés.

Mesurer l’effort de correction

Il n’existe pas de taux de correction universel sur lequel fonder un budget. Constituez un jeu pilote représentatif des documents que vous recevez réellement, y compris des scans difficiles, des tableaux denses, des fiches couvrant plusieurs produits et des mises en page inconnues.

Comparez les résultats avec des valeurs de référence vérifiées par une personne. Suivez:

  • Taux de correction par document: part des documents relus qui nécessitent au moins une correction.
  • Taux d’erreur par champ: part des champs vérifiés dont la valeur est incorrecte, manquante ou mal associée.
  • Temps de correction: temps actif passé par les relecteurs à corriger les valeurs candidates, regroupé par type de document.
  • Taux d’exception: part des documents qui ne peuvent pas suivre le circuit de relecture normal.

Suivez les erreurs d’identifiant séparément des simples changements de mise en forme. Leurs conséquences sont différentes.

Un document avec un seul identifiant de produit erroné peut être plus dangereux qu’un document présentant plusieurs différences d’espacement sans conséquence. Enregistrez les erreurs détectées avant la relecture comme celles que trouvent les relecteurs, afin que vos mesures montrent où le pipeline doit être amélioré.

Utilisez les résultats du pilote pour planifier les effectifs et les coûts. Vérifiez-les de nouveau lorsque de nouveaux fournisseurs ou de nouvelles mises en page de documents arrivent.

Comment organiser la relecture humaine sans créer de retard?

Un bon écran de relecture évite aux rédacteurs de parcourir tout le PDF pour chaque champ. Placez les valeurs candidates à côté des extraits de la source ou des liens vers les pages, mettez en évidence les contrôles en échec et rendez le fichier d’origine facile à ouvrir.

Le relecteur a besoin de quatre actions claires: valider la valeur candidate, la corriger, demander une nouvelle tentative d’extraction ou l’orienter vers un traitement manuel.

Les révisions, les Workflows et la Content Moderation configurés dans Drupal peuvent gérer les états brouillon, relecture et publié. La comparaison côte à côte avec la source, l’affichage du statut d’import et les preuves au niveau des champs peuvent nécessiter un développement spécifique.

Dans ce pipeline de fiches techniques, chaque valeur candidate passe par une relecture humaine avant publication. C’est la conception que nous recommandons ici, surtout lorsque des dimensions ou des références de certification erronées pourraient induire les acheteurs en erreur.

La validation doit porter exactement sur la révision que le relecteur a vérifiée. Si une tentative d’extraction ultérieure modifie une valeur, la révision mise à jour devra être relue à nouveau. Configurez les permissions de transition et le comportement du worker de sorte qu’une tâche d’extraction ne puisse ni écraser un contenu validé ni publier seule une version de remplacement.

L’enrichissement optionnel par IA relève d’un autre workflow. Les résumés de documents assistés par IA pour BetterRegulation génèrent des résumés et extraient des obligations en arrière-plan, stockent les résultats dans des champs Drupal dédiés et s’appuient sur des relectures par échantillon et des retours pour évaluer les résultats. Cette approche ne signifie pas que les rédacteurs valident manuellement chaque résumé généré, et elle diffère du workflow de catégorisation décrit plus haut.

Donnez un responsable à la file d’attente

Un extracteur rapide peut créer une file éditoriale lente. Surveillez le volume entrant, les relectures terminées, le temps de relecture actif et l’ancienneté des éléments en attente. Désignez des responsables pour que les documents difficiles ne restent pas en suspens pendant que les plus simples avancent.

Réservez du temps pour les exceptions. Une fiche connue pour un seul produit et un scan pâle contenant plusieurs variantes représentent des charges de travail différentes, même si les deux comptent pour un seul PDF.

Après validation, les champs structurés peuvent alimenter des pages HTML configurées, du JSON-LD, des réponses JSON:API ou d’autres exports. Drupal vous donne le contrôle de ces sorties, mais elles doivent être configurées de manière réfléchie: la structure des champs ne décide pas à elle seule de ce qui est public, à jour ou visible pour les assistants IA.

Comment estimer le débit et le coût par document?

Mesurez l’ensemble du parcours, pas seulement la vitesse d’extraction.

Le temps écoulé entre le téléversement et la validation indique combien de temps l’entreprise attend. Le temps actif de traitement et de relecture montre où vont les ressources. Un document peut demander peu de temps de calcul et pourtant attendre un rédacteur pendant plusieurs jours.

Suivez le nombre de documents publiés par jour en parallèle de l’ancienneté de la file. Comptez séparément les fiches produits validées lorsqu’un PDF peut contenir plusieurs produits.

Pour les coûts d’exploitation récurrents, incluez:

  • Les frais d’OCR et de traitement des documents.
  • L’utilisation des modèles.
  • L’infrastructure des workers et le stockage.
  • Les relances et les tentatives échouées.
  • Le temps des relecteurs.
  • Le travail manuel de repli.

Utilisez un lot mesuré pour calculer:

Coût par document validé = coût d’exploitation total du lot ÷ documents validés issus de ce lot

Incluez dans le numérateur l’argent et le temps de travail consacrés aux tentatives échouées. Sinon, les documents qui ont consommé des ressources sans être validés disparaissent du calcul. Pour un lot encore en cours, indiquez que le chiffre est provisoire. Si aucun document n’a encore été validé, indiquez le coût et le nombre d’échecs plutôt qu’un chiffre par document validé.

Séparez la mise en place et la maintenance des coûts de traitement récurrents. La création des mappings, la configuration de la modération et l’adaptation à une nouvelle mise en page d’un fournisseur pèsent sur le business case, mais les mélanger dans un seul indicateur d’exploitation rend les comparaisons plus difficiles.

La capacité de relecture a un point de départ tout aussi pratique:

Capacité de relecture quotidienne = minutes de relecture disponibles ÷ minutes de relecture moyennes observées par document

Calculez-la séparément pour les types de documents dont l’effort de correction diffère. Incluez le temps nécessaire aux éléments réattribués et aux relectures répétées, et gardez de la capacité pour les cas difficiles.

L’étape la plus lente limite l’ensemble du pipeline. Augmenter la capacité des workers ne videra pas une file qui attend des décisions humaines.

Enfin, comparez le pipeline à votre processus manuel actuel, avec le même ensemble de documents et les mêmes critères d’acceptation. Mesurez les deux avant de promettre des économies. Vous constaterez peut-être qu’automatiser un format de fiche technique récurrent est pertinent, tandis que des documents rares et irréguliers restent moins coûteux à saisir manuellement.

Que faire lorsqu’un document ne peut pas être extrait de manière fiable?

Certains PDF demandent une autre voie. Un tableau pâle, des libellés de produits contradictoires ou des pages manquantes peuvent empêcher une extraction fiable, quel que soit l’outil.

Créez une file d’exceptions avec un motif clair, le fichier source, l’historique des tentatives et un responsable nommé. Gardez les enregistrements non résolus en dehors du circuit de publication.

L’action suivante dépend du problème de la source:

Problème Étape suivante concrète
Scan illisible Demander un PDF plus lisible ou le fichier numérique d’origine
Tableau complexe avec des erreurs d’extraction répétées Demander une feuille de calcul ou un export du système source
L’extraction de texte perd la mise en page Essayer une méthode basée sur l’analyse de la mise en page
Quelques informations essentielles restent floues Saisir ces champs manuellement à partir d’une source vérifiée
Les valeurs de la source se contredisent Demander au responsable du document de lever la contradiction

Fixez des limites de relance et des conditions d’arrêt. Une panne temporaire d’un service peut justifier une nouvelle tentative avec la même méthode. Un tableau illisible nécessite généralement une autre entrée ou une autre méthode. Répéter la même requête consomme du budget sans apporter de nouvelle preuve.

Gardez l’incertitude visible à chaque étape. Laissez vides ou signalez les champs sans preuve au lieu de demander à un modèle de combler les manques avec des valeurs plausibles. Si un champ essentiel reste non résolu, retenez l’enregistrement.

Commencez petit. Choisissez un type de document récurrent, définissez ses champs de destination et ses critères d’acceptation, puis mesurez les corrections, le temps de relecture et le coût. Ce pilote vous donnera une base concrète pour décider où étendre l’automatisation.

Prêt à commencer?

Apportez des PDF représentatifs, votre modèle de champs Drupal actuel et le volume de documents attendu à un échange avec Droptica.

Ensemble, nous définirons un pilote pour tester les méthodes d’extraction, estimer l’effort de relecture et convenir d’un circuit de publication qui laisse le contrôle aux rédacteurs. Parlez à Droptica de votre pipeline du PDF vers Drupal. Pour en savoir plus sur notre travail, consultez la page Développement IA pour Drupal.