Analyse de facture PDF avec GPT-3 et Workato
xtraire les détails de la facture d’un fichier PDF
J’ai réfléchi à haute voix s’il existe un moyen simple d’extraire ou d’analyser les informations du fichier de facture PDF. Comme le numéro de facture, la date, la facture et le montant et obtenez ces informations pour un traitement ultérieur avec automatisation. Je ne souhaite pas utiliser un analyseur de documents de facture prêt à l’emploi disponible sur le marché. Je voudrais créer à partir de zéro que je peux personnaliser et modifier davantage et cela devrait être facile à intégrer à Workato.
Après avoir lu plus en détail le GPT-3 d’OpenAI, j’ai pensé pourquoi ne pas essayer et voir le résultat ?
Dans ce tutoriel, je voudrais partager ce que j’ai fait pour extraire le numéro de facture, la date de la facture et le montant total du fichier PDF avec GPT-3 et Workato.

À partir de l’exemple de document PDF ci-dessus, je voudrais extraire ce qui suit :
- Numéro de facture : 124567AB
- Date de facturation : 04/05/2022
- Montant total : 7 000 SGD
Qu’est-ce que GPT-3 ?
Generative Pre-trained Transformer Version 3 (GPT-3) est un système NLP à usage général d’ OpenAI . GPT-3 a été formé avec un ensemble de données massif composé de textes provenant d’Internet, de livres et d’autres sources, contenant environ 57 milliards de mots et 175 milliards de paramètres. Tout le monde peut utiliser GPT-3 avec accès à OpenAI. Pour utiliser l’API, il vous suffit de transmettre du texte et d’obtenir une réponse textuelle en retour. Le texte que vous transmettez est appelé une invite et le texte renvoyé est appelé un achèvement .
Enregistrez un compte avec OpenAI et vous obtiendrez l’utilisation d’essai gratuite de 18 USD de crédit.
Comprendre les invites, les achèvements et les jetons
Instructions
Les invites permettent à GPT-3 de faire ce que vous voulez. Lorsque vous écrivez des invites, la principale chose à garder à l’esprit est que GPT-3 essaie de déterminer quel texte doit suivre. Une autre considération est la taille de l’invite. Bien qu’une invite puisse être n’importe quel texte, l’invite et la complétion qui en résulte doivent totaliser moins de 2 048 jetons.
Achèvements
Une saisie semi-automatique fait référence au texte qui est généré et renvoyé à la suite de l’invite/de l’entrée fournie.
Jetons
Lorsqu’une invite est envoyée à GPT-3, elle est décomposée en jetons. Les jetons sont des représentations numériques de mots ou, plus souvent, de parties de mots. Les nombres sont utilisés pour les jetons plutôt que pour les mots ou les phrases car ils peuvent être traités plus efficacement. Il existe toujours une limite de 2 048 jetons (environ ~ 1 500 mots) pour l’invite combinée et la complétion générée qui en résulte.
Présentation de Davinci, Babbage, Curie et Ada
Il existe quatre principaux modèles ou moteurs nommés Davinci , Babbage , Curie et Ada .
Da Vinci
Davinci est le modèle le plus capable et peut faire tout ce que n’importe quel autre modèle peut faire, et bien plus encore. Davinci est capable de résoudre des problèmes logiques, de déterminer les causes et les effets, de comprendre l’intention du texte, de produire du contenu créatif, d’expliquer les motivations des personnages et de gérer des tâches de résumé complexes.
Curie
Curie essaie d’équilibrer la puissance et la vitesse. Il peut faire tout ce qu’Ada ou Babbage peuvent faire, mais il est également capable de gérer des tâches de classification plus complexes et des tâches plus nuancées comme la synthèse, l’analyse des sentiments, les applications de chatbot et les questions et réponses.
Babbage
Babbage est un peu plus capable qu’Ada mais pas aussi performant. Il peut effectuer toutes les mêmes tâches qu’Ada, mais il peut également gérer des tâches de classification un peu plus compliquées, et il est bien adapté aux tâches de recherche sémantique qui classent dans quelle mesure les documents correspondent à une requête de recherche.
Ada
Ada est généralement le modèle le plus rapide et le moins coûteux. C’est mieux pour les tâches moins nuancées, par exemple, l’analyse de texte, le reformatage de texte et les tâches de classification plus simples.
Cour de récréation
Le terrain de jeu fait partie de la console de développement OpenAI, est utilisé pour tester les invites et les complétions. Se familiariser avec le Playground est tout ce dont vous avez besoin pour démarrer avec GPT-3. À partir de là, vous pouvez commencer à expérimenter comment utiliser les invites pour programmer GPT-3 afin de gérer différents types de tâches de traitement du langage.
La capture d’écran ci-dessous est un exemple de terrain de jeu pour extraire les données de facturation à partir des informations fournies.

Nous utiliserons les paramètres ci-dessous dans le terrain de jeu et dans l’application.
Modèle
Comme vous le savez déjà, il existe quatre modèles que nous pouvons utiliser :
- Davinci : Intention complexe, cause et effet, résumé pour l’âge.
- Curie : Traduction linguistique, classification complexe, sentiment textuel, résumé.
- Babbage : Classification modérée, classification de recherche sémantique.
- Ada : Analyse de texte, classification simple, correction d’adresse, mots-clés.
Longueur de la réponse
Il contrôle la longueur de la complétion qui sera générée.
Température
Le paramètre de température influence le degré de déterminisme du modèle lors de la génération d’un résultat. Une valeur inférieure rendra le modèle plus déterministe (moins variable), tandis qu’une valeur supérieure rendra le modèle moins déterministe ou plus variable.
Haut P
Alors que la température contrôle le caractère aléatoire des résultats générés en fonction du modèle, le paramètre Top P contrôle le nombre de ces résultats (ou jetons) pris en compte pour l’achèvement. La valeur peut être comprise entre 0 et 1, où une valeur plus élevée prend en compte un nombre plus élevé de jetons.
Pénalité de fréquence et de présence
Les paramètres de pénalité de fréquence et de présence peuvent être utiles pour empêcher la répétition du même texte de complétion sur plusieurs requêtes. La pénalité de fréquence est appliquée si le texte existe plusieurs fois, tandis que la pénalité de présence est appliquée si le texte existe.
Représentation schématique
Le flux pour extraire les informations d’un fichier PDF est très simple, nous devons écrire une fonction JavaScript pour convertir le binaire PDF en une chaîne, et envoyer les informations à OpenAI pour extraire les informations requises.

Créer une fonction NodeJS
Nous utiliserons la version modifiée du pdf2json . Pourquoi ai-je mentionné la version modifiée ? C’est parce que je ne peux pas utiliser le code directement avec Workato car le code lit le fichier dans le dossier local, alors que je dois récupérer le fichier dans le compartiment S3.
Dans la fonction Node.js, il y a peu de paramètres d’entrée :
pdf
: fichier PDF base64key
: clé API OpenAPImodel
: moteur à utiliser, par exemple text-davinci-002prompt
: invite, par exemple Extraire le numéro de facture, la date de la facture, le montant total en sgdcompletion
: achèvement, par exemple numéro de facture, date de facture, montant total en sgd :temperature
: température à régler, par exemple 0,7max_tokens
: jetons maximum, par exemple 453top_p
: Top P, par exemple 1frequency_penalty
: Pénalité de fréquence à régler, par exemple 0presence_penalty
: Pénalité de présence à régler, par exemple 0
Et un paramètre de sortie :
- réponse
Installez les bibliothèques suivantes :
npm installer fs openai pdf2json
Ouvrez pdfparser.js
et modifiez la fonction LoadPDF
selon la capture d’écran ci-dessous. Ce qu’il fait est d’obtenir le fichier encodé en base64 de Workato et de le convertir en un tableau de tampons.

Regroupez le code avec cette commande :
navigateurifier . -o bundle.js — nœud — im -s index.js
Obtenez le contenu du bundle.txt et insérez-le dans la ligne 17451. Le contenu du bundle.txt correspond à tous les fichiers JavaScript dans _pdfjsFiles
.


Testez le code avant de le déployer sur Workato.

Créer une recette Workato
Créez une recette dans Workato pour télécharger le fichier de facture PDF à partir de S3 et appelez la fonction NodeJS/JavaScript avec les paramètres d’entrée et de sortie que nous avons définis précédemment.

Exécutez la recette et vérifiez la sortie. À partir de la capture d’écran ci-dessous, j’ai pu obtenir le numéro de facture, la date et le montant du fichier de facture PDF d’entrée. J’utiliserai ces informations pour poursuivre le traitement des informations.

Référence
- Explorer GPT-3 : un premier aperçu non officiel de l’API de traitement du langage à usage général d’OpenAI par Steve Tingiris
- https://github.com/ferrygun/GPT3-InvoiceParser