Quand Symfony, ApiPlatform, OpenAI et LangChain s'allient pour exploiter vos PDF : de la théorie à la production…

Ahmed Eben Hassine

Le 10 juin dernier, lors de la conférence AFUP à Montpellier, nous avons eu l’occasion de partager un retour d’expérience sur la mise en place d’une solution d’Intelligence Artificielle capable d’extraire et de structurer des données complexes à partir de documents PDF. Cette présentation a permis de revenir sur les défis techniques rencontrés, les choix d’architecture que nous avons faits, ainsi que les enseignements clés pour toute équipe souhaitant déployer un projet d’IA en production.

 

Le défi métier : réinventer l’inventaire chimique

Tout a commencé avec la volonté de moderniser un outil d’inventaire de produits chimiques. Jusqu’ici, la saisie des informations contenues dans les Fiches de Données de Sécurité (FDS) se faisait manuellement, un travail fastidieux (environ 20 minutes par document) et source d’erreurs fréquentes.

Notre objectif : automatiser l’extraction des informations essentielles (substances, pictogrammes, précautions), directement depuis ces PDF.

Les solutions classiques, comme les expressions régulières (fiables à 40 %) ou les outils basiques de parsing comme Tabula (à peine 10 % de réussite), se sont vite révélées insuffisantes face à la diversité et la complexité des documents. L’intelligence artificielle, avec sa capacité à comprendre le langage naturel, s’est imposée comme la meilleure option pour relever ce défi.

À noter que cette analyse a été réalisée début 2023. Pour rappel, ChatGPT-3 n’était disponible que depuis novembre 2022, et l’usage de l’intelligence artificielle dans ce type de contexte n’était alors ni courant ni évident. Le choix de miser sur l’IA relevait donc davantage du pari que d’une solution éprouvée.

 

Notre architecture technique : une stack solide et évolutive

Voici comment nous avons construit notre solution, en combinant plusieurs technologies robustes pour garantir fiabilité et montée en charge :

  • Backend (Symfony & API Platform) : Notre API RESTful assure la stabilité des services et une bonne intégration métier.
  • Orchestration IA (Python & LangChain) : Cette couche gère la complexité des interactions avec les modèles de langage (LLM).
  • Moteur d'inférence (OpenAI GPT-3.5 Turbo) : Le modèle que nous avons choisi pour ses capacités d’extraction fine et de raisonnement contextuel.
  • Interface (React) : Un frontend dynamique, pensé pour offrir une expérience utilisateur fluide et intuitive.

 

Piloter le LLM : l’art du prompt engineering

La qualité des résultats dépend largement de la manière dont on « parle » au modèle. Nous structurons donc nos instructions en trois rôles essentiels :

  • system : Définit la personnalité du modèle et ses consignes générales (par exemple : « Tu es un expert en sécurité chimique, réponds au format JSON selon un schéma que je vais te préciser. »).
  • user : Contient la demande précise et les données à analyser (exemple : « Extrais les informations de danger de ce texte : [contenu FDS] »).
  • assistant : C’est le modèle qui répond en gardant le contexte et en s’appuyant sur des exemples pour guider le format et le style de la réponse. Ce mécanisme facilite aussi le fine-tuning.

Pour garantir une sortie propre et exploitable, nous utilisons le framework KOR qui impose un format JSON précis, ce qui réduit fortement la nécessité de retouches après extraction.

 

Ce que le terrain nous a appris

Mettre en production une IA dans ce contexte n’a pas été sans difficultés. Voici quelques-uns des principaux défis que nous avons dû relever :

 

Extraire des données structurées à partir de PDF complexes

Les PDF que nous traitons sont très hétérogènes : scans, formats non standards, tableaux, graphiques… Les parsers OCR classiques peinent à restituer le contexte et la structure sémantique.

Pour y remédier, nous recommandons l’intégration des outils spécialisés comme LlamaParse, MistralOCR ou Docling. Ces solutions de machine learning transforment les PDF en Markdown structuré, ce qui permet au LLM de mieux comprendre la hiérarchie et les relations entre les données.

 

Éviter les hallucinations et garantir la précision

Les modèles de langage peuvent occasionnellement produire des informations erronées, notamment en l'absence de contexte. Pour y remédier, nous recommandons de combiner ces deux approches complémentaires :

  • La génération augmentée par récupération (RAG) avec BM25, qui injecte dans le prompt des extraits pertinents tirés directement des documents, ancrant ainsi les réponses dans des faits concrets
  • Le fine-tuning, qui affine le modèle sur des données spécifiques et des règles métier complexes, assurant ainsi une meilleure fiabilité, particulièrement pour l’interprétation des codes de danger.

 

Gérer les coûts et la montée en charge

Avec environ 30 000 FDS à traiter, nous devions aussi maîtriser le RateLimite des requêtes des API et optimiser les coûts.

En plus d’une optimisation des prompts, nous explorons l’API Batch d’OpenAI pour traiter les requêtes en parallèle de manière asynchrone, garantissant ainsi scalabilité et maîtrise des dépenses.

 

Nos enseignements clés pour un déploiement IA réussi

  • La qualité des données d’entrée est primordiale. Sans un bon prétraitement (via LlamaParse, par exemple), les résultats ne seront jamais satisfaisants.
  • Le prompt engineering demande rigueur et méthode. Définir clairement les rôles et utiliser des schémas comme KOR facilitent les échanges avec le modèle.
  • Combiner RAG et fine-tuning est une stratégie gagnante. Le premier apporte un contexte précis, le second affine les capacités sur des cas métier spécifiques.
  • Il faut mesurer et itérer en continu. Tests et métriques automatisés grâce à Open AI EVAL permettent d’améliorer constamment la qualité.
  • La supervision humaine reste indispensable. L’IA est un assistant puissant, mais la validation humaine garantit la fiabilité et la conformité.
  • La confidentialité ne doit jamais être négligée. Nous activons toujours les options « Zero Retention » et étudions des solutions d’auto-hébergement pour plus de contrôle.

 

Conclusion : l’IA au service d’une transformation durable

Six mois après le lancement, les résultats sont très encourageants : le temps de traitement est divisé par dix, les erreurs quasiment éliminées, et les équipes peuvent se concentrer sur des tâches à plus forte valeur ajoutée.

Ce projet démontre qu’en combinant intelligemment l’IA à des technologies éprouvées comme Symfony, API Platform, LangChain et OpenAI GPT, il est possible de déployer des solutions à la fois concrètes, fiables et industrialisables.

 

Pour aller plus loin, retrouvez les slides de notre conférence ci-dessous :

Découvrez le projet de l'OPPBTP de Modernisation d'une application web grâce à l'IA Je découvre
Découvrez le projet de l'OPPBTP de Modernisation d'une application web grâce à l'IA Je découvre

A lire aussi

Et si on arrêtait de bricoler nos projets data ? Découvrez comment passer en ...
Voir tous les articles