Adcoar Ltd
← All posts

25 Aug 2026 · Adcoar News Editor

Étude de cas : transformer des grilles tarifaires PDF désordonnées en données propres et réservables

Un problème récurrent pour chaque voyagiste avec qui nous avons travaillé sur Adcoar Tours : leurs tarifs ne commencent pas sous forme de données. Ils commencent comme un PDF ou une feuille Excel provenant d'un partenaire d'hébergement, mis en page pour qu'un humain le lise d'un coup d'œil, avec des cellules fusionnées, des en-têtes saisonniers et une mise en forme incohérente d'un établissement à l'autre. Faire entrer cela dans un système où un devis peut être généré automatiquement signifie que quelqu'un doit le transformer en lignes structurées : établissement, type de chambre, saison, formule de restauration, tarif adulte/enfant.

Fait à la main, ce sont des heures de saisie de données répétitive et sujette aux erreurs à chaque fois qu'un partenaire envoie une grille tarifaire mise à jour, ce qui, en haute saison, peut être fréquent.

Le pipeline

L'outil d'import tarifaire d'Adcoar Tours traite cela en plusieurs étapes, chacune délibérément séparée afin qu'une erreur à une étape ne corrompe pas la suivante :

  1. Téléversement. L'opérateur téléverse la grille tarifaire PDF ou XLSX depuis une page Filament de son tableau de bord, ce qui crée un enregistrement de lot d'import pour suivre la tâche.
  2. Extraction. Une tâche en file d'attente transmet le fichier à un script Python exécuté dans son propre environnement virtuel, qui analyse les tableaux du document : l'extraction de mise en page PDF et l'analyse de tableur sont des problèmes suffisamment différents pour que cette étape fasse le gros du travail dans le langage et les bibliothèques les mieux adaptés à chaque format, plutôt que de forcer un seul chemin de code à mal faire les deux.
  3. Mise en attente. Les lignes extraites atterrissent dans une table de transit, pas directement dans le catalogue tarifaire actif. Rien de ce que produit l'analyseur n'est approuvé tant qu'un humain ne l'a pas examiné.
  4. Vérification. L'opérateur examine les lignes en attente dans son tableau de bord (repérant l'occasionnelle mauvaise lecture de cellule fusionnée ou un libellé de saison ambigu) et approuve ce qui est correct.
  5. Promotion. Seules les lignes approuvées sont promues dans le catalogue tarifaire actif, celui que les devis et réservations consultent réellement.

Pourquoi l'étape de mise en attente compte plus que l'étape d'extraction

Il serait tentant de traiter cela comme un simple problème d'analyse : rendre l'extraction suffisamment précise et passer directement à la mise à jour des tarifs actifs. Nous avons délibérément choisi de ne pas le construire ainsi. L'extraction de tableaux PDF ne sera jamais fiable à 100 % face à des documents réels conçus par des dizaines de partenaires différents sans format commun, et un tarif erroné qui atteint un devis actif représente un coût réel pour l'activité de l'opérateur, pas seulement un bug agaçant. L'étape de mise en attente et de vérification signifie que le rôle de l'outil est de rendre la vérification humaine rapide, pas de rendre le jugement humain inutile.

C'est le même principe qui sous-tend une grande partie de ce que nous construisons : automatiser la partie fastidieuse, garder une décision humaine au point où se tromper coûte réellement quelque chose.

Où cela se retrouve ailleurs

La forme de ce problème (transformer un document ou un flux destiné aux humains en données propres qu'un système peut exploiter, sans faire silencieusement confiance à une conversion avec perte) revient constamment en dehors des grilles tarifaires touristiques également : rapprochement de relevés bancaires, listes de prix fournisseurs, exports CSV depuis le système de quelqu'un d'autre. C'est l'une des demandes les plus courantes derrière le travail d'intégration de systèmes que nous assurons désormais pour d'autres entreprises, précisément parce que nous avons déjà dû le résoudre correctement une fois.