Analyse de documents avec l'IA

Louis Graffeuil
14/5/2024
10 min read

Case Study : Analyse de documents 📝

Plusieurs outils sont disponibles pour extraire des informations d’un document. L’un des outils les plus performants actuellement est développé par Anthropic et se nomme Claude. L’interface est similaire à ChatGPT.

C’est cet outil que nous allons utiliser pour nos cas d’usage. Nous allons distinguer :

  • les besoins ponctuels : la demande est faite par chat directement sur l’interface de l’outil
  • les besoins récurrents : on utilise l’outil par API depuis une autre interface et exploiter cette solution plus au cœur de nos process

Besoin ponctuel et basique

Exemple basique n°1 :

Un résumé d’un fichier volumineux et / ou des précisions sur certaines informations précises du document (donnée, éléments positifs ou négatifs du rapport, …).

Prompt basique : Je souhaite que tu me résumes les informations uniquement liées à l'intelligence artificielle dans ce rapport. Je souhaite une réponse concise sous forme de bullets points, chiffrée si possible.

Rapport de davos début 2024 sur les risques.

Le document est en anglais et fait une centaine de pages.

Exemple basique n°2 :

Analyse sur plusieurs documents d’un produit financier sur une durée de plus d’1 an (ajout de 5 documents). L’objectif est de connaitre l’évolution du produit financier sur la durée

Sur ces demandes basiques, il est aussi pratique de modifier le prompt pour demander une extraction de certaines données sous un format spécifique (csv, json, etc) et l’exploiter plus facilement ailleurs.

Dans les exemples, j’ai utilisé des formats PDF pour l’analyse d’informations, mais on peut extraire les informations de documents en format :

  • PDF
  • documents texte : texte brut, doc, docx
  • Présentations Powerpoint (ppt, pptx)
  • image : jpg, png, jpeg, …
  • html
  • Fichiers markdown

Besoin récurrent et avancé

Pour les besoins récurrents, on va optimiser le prompt pour que le modèle soit plus performant.

Les prompts peuvent sembler anodins, mais leur optimisation permet d’optimiser drastiquement la performance. (voir cette étude réalisant des comparaisons sur les résultats en fonction des prompts)

Exemple avancé n°1 :

J’ai une liste de documents sur google drive, je souhaite extraire certaines informations chiffrés dans ces documents. Ils sont publiés tous les trimestres, je vais donc sortir de l’interface pour créer un process entier d’analyse de données.

Malheureusement, Claude et GPT ne permettent pas d’analyser un document depuis l’API. Je me suis pas mal cassé la tête sur le sujet pour trouver une solution et ça se passe sur Google Apps Script. (GAS)

Voici les étapes :

  1. extraire les urls des documents de mon Google Drive sur une feuille “urls” sur Gsheets
  2. extraire le texte de chaque document via l’ID présent dans chaque url sur une feuille “data” Gsheets
  3. utilisation de l’API claude pour analyser et extraire des informations : formule Gsheets avec extension
  4. une fois le résultat obtenu, les données peuvent être envoyées sur une base de données, CRM, mail, slack …

Après avoir ajouté mes documents dans un dossier Google Drive, le process me génère des informations précises de tous les documents.

Sur cette solution, l’IA générative est utilisée uniquement à la 3ᵉ étape car l’API n’est pas disponible pour traiter directement les documents. Le résultat obtenu par GAS n’est pas optimal et a ses limites, en lien avec la qualité de l’analyse du document fait par le script.

Petit aperçu du résultat sur une feuille gsheets. Dans cet exemple, je demande uniquement la valeur numérique comme résultat pour compléter une base de données.

Exemple avancé n°2 :

J’ai une série de facture / notes de frais. J’ai ajouté l’ensemble des documents dans un google drive depuis mon téléphone. Je souhaite extraire les informations suivantes :

  • date du document
  • nom de l’établissement
  • montant total

On utilise exactement la même procédure, le prompt est par contre modifié pour être plus résilient.

Tu es office manager, tu dois analyser rigoureusement les informations d’un texte et en extraire certaines. Les informations proviennent d’une analyse OCR, il est possible que certains éléments soient incorrects.

Pour éviter toute erreur d’analyse, tu devras :
- faire plusieurs analyses de texte pour confirmer la cohérence des informations. S’il y a une incohérence dans les informations, tu afficheras la valeur ‘Erreur de lecture’. Par exemple le total de la facture doit correspondre à la somme des montants.
- si tu ne nous trouves pas une information dans le texte après plusieurs analyses, tu afficheras la valeur ‘Erreur de lecture’. Ne donne pas de résultat si l'information n'est pas explicitement mentionnée dans le texte.
- si le contenu ne semble pas être une facture, une note de frais, un ticket, ou tout autre document ne correspondant pas à une dépense au sein d’une entreprise, tu afficheras la valeur ‘Erreur de lecture’.

Voici le texte : [INSERTION DU TEXTE]

Voici les informations à extraire avec uniquement les valeurs sans texte supplémentaire :
- date du document au format JJ/MM/AAAA
- nom de l’établissement
- montant total en ajoutant le symbole de la devise monétaire. Par exemple '€' pour l'euro. La virgule est utilisé pour afficher les décimales plutôt qu'un point.

Pas de texte supplémentaire en dehors du résultat au format CSV séparé par des points virgules

Un aperçu de ce que cela donne sur GSheets.

Il y a pleins de cas possibles sur l’extraction de données à partir de documents, n’hésitez à commenter si vous en avez d’autres ou besoins d’aide.

Vous pouvez retrouver les scripts Google Apps sur ce google docs si besoin.

Conseils 💭

Pour un besoin ponctuel, vous pouvez utiliser poe.com, comme interface qui permet d’utiliser des modèles différents dont Claude 3 gratuitement.

Pour l’utilisation d’une clé API et un besoin plus important, vous pouvez utiliser claude directement sur Anthropic et créer votre clé API depuis le dashboard, l’abonnement est à partir de 20€/mois. (Le service par API n’est pas accessible en France, il faudra utiliser un VPN).

Aller plus loin 🚀

  • Un scrapping des documents à analyser peut être mis en place en amont pour améliorer le process et stocker automatiquement tous les documents à analyser dans un espace partagé. Dès que de nouveaux documents arrivent sur le drive, l’extraction d’informations se lancerait.
  • Vous pouvez facilement programmer en fonction de votre besoin l’exécution du script. Par exemple dans le cas où vous souhaitez obtenir le résultat tous les lundis à 8h en utilisant les déclencheurs.
  • Les cas d’usages présentés dévoilent une petite partie de ce qu’il est possible de faire. En fonction de votre cœur de métier, les analyses de documents sont plus ou moins importantes. Un aperçu :
    • Finance et investissement : Analyse et résumé de produits financiers, surveillance de conformité, …
    • Juridique : analyse de contrats, recherche de jurisprudence, analyse de textes législatifs et réglementaires, gestion des risques légaux …
    • Immobilier : Comparaison de devis, analyse de baux, rapport d’AG …
    • RH : Analyse de CV, lettre de motivation ..
  • Pour sécuriser la qualité des données, une vérification en auto ou manuelle peut être mis en place et éviter l’hallucination du modèle. Pour cela, il est possible de mettre en place des gardes fous. Si la vérification par calcul, comparaison ou autre formule n’est pas possible, il faudra sûrement procéder à une relecture humaine.

Les limites ❌

  • Certains documents sont trop volumineux (pas possible d’analyser un document supérieur à 10Mo dans Claude 3). Les solutions possibles :
    • Utiliser des outils de compression peut aider à faire tomber le document sous les 10Mo
    • Diviser le document en plusieurs sections et procéder par étape dans l’analyse du document
  • Plusieurs documents peuvent être ajoutés en même temps, mais la limite est de 5 documents.
  • Certains documents ne sont pas lisibles. Pour cela, voici une solution :
    • J’utilise un outil comme Nanonets pour transformer le PDF en json, puis je demande à Claude de me faire un résumé.
  • Le rate limit de l’API peut rapidement bloquer une utilisation à l’échelle, j’en ai fait l’expérience lorsque j’ai réalisé une centaine de calls en parallèle sur des documents d’une dizaine de pages chacun.
  • Si vous avez des problématiques de confidentialité et sécurisation des données, Claude vous propose une alternative pour les gestions des données.
  • Certaines hallucinations sont possibles. La qualité du prompt est fondamentale dans la performance du modèle. Il ne faut pas hésiter à demander plusieurs fois le résultat en ajustant le prompt en conséquence.

Bilan

Claude-3 est l’outil le plus avancé du marché sur l’analyse de documents. Il est trés performant depuis l’interface utilisateur et la pertinence du résultat dépendra fortement du prompt envoyé. Cela reste un indispensable pour une personne manipulant des documents (même occasionnellement) étant donné le temps que cela peut faire gagner !

En ce qui concerne une utilisation plus “industrialisé” de l’outil, pour l’instant c’est compliqué pour plusieurs raisons :

  • l’API pour l’analyse de document n’est pas disponible directement, il faut passer par l’extraction texte du document par un outil tierce (comme l’OCR de Google Drive que l’on a utilisé).
  • Le rate limit de l’API pour des résumés de texte est vite atteint.

Ce n’est pas étonnant que l’outil est encore très peu utilisé dans des process complets en production comme le révélait une étude de A16Z.

Partager ce post
Applications concrètes

Nos derniers cas concrets

1.png
Découvrez Canvas sur OpenAI, un outil puissant pour l'écriture collaborative et le code. Optimisez votre productivité avec ses nouvelles fonctionnalités.
1.png
Découvrez Sora, l'outil vidéo d'OpenAI. Suivez notre tutoriel complet pour tout savoir sur ses fonctionnalités et comment l'utiliser efficacement.
1.png
Productivité
Découvrez pourquoi NotebookLM est devenu incontournable pour la prise de notes et comment l'utiliser efficacement grâce à notre tutoriel complet.