Analyse de facture PDF

Analyse de facture PDF avec GPT-3 et Workato

Photo par CURVD® sur Unsplash

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 base64
  • key: clé API OpenAPI
  • model: moteur à utiliser, par exemple text-davinci-002
  • prompt: invite, par exemple Extraire le numéro de facture, la date de la facture, le montant total en sgd
  • completion: achèvement, par exemple numéro de facture, date de facture, montant total en sgd :
  • temperature: température à régler, par exemple 0,7
  • max_tokens: jetons maximum, par exemple 453
  • top_p: Top P, par exemple 1
  • frequency_penalty: Pénalité de fréquence à régler, par exemple 0
  • presence_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.jset modifiez la fonction LoadPDFselon 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

Retour en haut