Extraction intelligente de données complexes avec LangExtract et Gemma 3 : transformez les polices d’assurance en informations claires et structurées
Les documents complexes comme les contrats d’assurance, les dossiers médicaux ou les rapports de conformité sont souvent longs, peu lisibles et riches en informations cruciales difficiles à extraire manuellement. Les détails essentiels — tels que les limites de couverture ou les obligations — sont souvent dissimulés dans des textes denses et non structurés, rendant leur analyse fastidieuse pour les utilisateurs non spécialisés. Les modèles de langage à grande échelle (LLM), déjà reconnus pour leur polyvalence, offrent une solution puissante pour extraire de manière précise et efficace des informations structurées à partir de ces documents. Dans cet article, nous explorons LangExtract, un cadre open source développé par Google, et Gemma 3, son modèle LLM associé, qui ensemble permettent une extraction structurée performante à partir de textes non structurés. LangExtract est une bibliothèque Python open source qui utilise des LLM pour extraire des informations structurées à partir de textes bruts, selon des instructions définies par l’utilisateur. Il excelle notamment dans la reconnaissance d’entités nommées (comme les exclusions ou les limites de couverture) et l’extraction de relations logiques entre les clauses. Son succès repose sur sa simplicité : quelques lignes de code suffisent pour lancer une extraction. Parmi ses atouts clés figurent une gestion avancée du contexte long, une intégration fluide avec des modèles locaux, et des mécanismes optimisés pour garantir une haute précision. Gemma 3, le dernier modèle de la série Gemma de Google, est une famille de LLM légers, performants et open source, construits à partir des recherches derrière les modèles Gemini. Disponible en cinq tailles (270M à 27B de paramètres), Gemma 3 4B est particulièrement adapté aux environnements locaux, pouvant fonctionner sur une seule carte GPU. Il supporte des entrées jusqu’à 128K tokens, permettant de traiter des documents de plusieurs centaines de pages en une seule requête. Dans ce tutoriel, nous utilisons la version 4B déployée localement via Ollama, un outil open source qui facilite l’exécution locale des modèles sans dépendre de services cloud. Sous le capot, LangExtract repose sur trois mécanismes clés pour gérer efficacement les documents longs : 1. Stratégies de découpage intelligentes : au lieu de couper le texte arbitrairement, LangExtract respecte les limites naturelles (phrases, paragraphes, sauts de ligne), créant ainsi des morceaux bien formés qui préservent le contexte. 2. Traitement parallèle : en exploitant plusieurs workers simultanément, le cadre accélère le traitement sans sacrifier la qualité, tout en maintenant une latence raisonnable. 3. Extraction itérative : en exécutant plusieurs passes indépendantes, LangExtract tire parti de la nature aléatoire des LLM pour améliorer le rappel (taux de capture des entités). Les résultats sont ensuite fusionnés selon une règle du « premier gagnant », garantissant une cohérence tout en évitant les doublons. Le démonstration se concentre sur un contrat d’assurance automobile disponible publiquement sur le site de MSIG Singapour. Après installation de LangExtract et du modèle Gemma 3 via Ollama, le document PDF est extrait avec PyMuPDF, puis traité en morceaux. Une prompting soigné est utilisé : un système de prompt précise la structure attendue (JSON) et inclut des exemples (few-shot prompting) pour guider le modèle vers une sortie structurée. Sans cette étape, les risques de sortie mal formée ou non conforme sont élevés, notamment avec des modèles comme Gemma qui ne garantissent pas nativement une sortie structurée. L’extraction est lancée via la méthode extract() de LangExtract, avec des paramètres de découpage, de parallélisme et de nombre de passes. Sur une GPU de 8 Go, le traitement d’un document de 10 pages prend moins de 10 minutes. Le résultat est enregistré, puis post-traité pour une présentation claire : chaque exclusion est associée à son texte source et à une explication en langage courant, rendant les clauses techniques accessibles. En conclusion, l’association de LangExtract et de Gemma 3 démontre comment des stratégies d’ingénierie avancées — découpage intelligent, parallélisme, itérations — permettent de transformer des documents complexes en données structurées fiables, traçables et exploitables. Cette combinaison s’impose comme une solution puissante pour les secteurs exigeant une analyse fine de documents longs, comme l’assurance, la santé ou la réglementation. Pour les développeurs et data scientists, c’est une opportunité concrète d’automatiser des tâches répétitives avec une précision élevée, tout en gardant le contrôle sur les données grâce à une exécution locale.
