DéveloppeurWeb.Com
    DéveloppeurWeb.Com
    • Agile Zone
    • AI Zone
    • Cloud Zone
    • Database Zone
    • DevOps Zone
    • Integration Zone
    • Web Dev Zone
    DéveloppeurWeb.Com
    Home»Uncategorized»API OpenAI pour extraire des informations à partir de fichiers PDF
    Uncategorized

    API OpenAI pour extraire des informations à partir de fichiers PDF

    janvier 30, 2023
    API OpenAI pour extraire des informations à partir de fichiers PDF
    Share
    Facebook Twitter Pinterest Reddit WhatsApp Email

    Pourquoi est-il difficile d’extraire des informations à partir de fichiers PDF ?

    PDF, ou Portable Document Format, est un format de fichier populaire largement utilisé pour les documents tels que les factures, les bons de commande et autres documents commerciaux. Cependant, l’extraction d’informations à partir de fichiers PDF peut être une tâche difficile pour les développeurs.

    L’une des raisons pour lesquelles il est difficile d’extraire des informations à partir de fichiers PDF est que le format n’est pas structuré. Contrairement au HTML, qui a un format spécifique pour les tableaux et les en-têtes que les développeurs peuvent facilement identifier, les PDF n’ont pas de mise en page cohérente pour les informations. Cela rend plus difficile pour les développeurs de savoir où trouver les informations spécifiques dont ils ont besoin.

    Une autre raison pour laquelle il est difficile d’extraire des informations à partir de fichiers PDF est qu’il n’y a pas de mise en page standard pour les informations. Chaque système génère des factures et des bons de commande différemment, de sorte que les développeurs doivent souvent écrire du code personnalisé pour extraire des informations de chaque document individuel. Cela peut être un processus long et sujet aux erreurs.

    De plus, les PDF peuvent contenir à la fois du texte et des images, ce qui rend difficile pour les développeurs d’extraire par programmation des informations du document. L’OCR (reconnaissance optique de caractères) peut être utilisé pour extraire du texte à partir d’images, mais cela ajoute de la complexité au processus et peut entraîner des erreurs si le logiciel OCR n’est pas précis.

    Solutions existantes

    Les solutions existantes pour extraire des informations à partir de fichiers PDF incluent :

    • Utilisation de regex : pour faire correspondre les modèles dans le texte après la conversion du PDF en texte brut. Les exemples incluent facture2données et traprange-facture. Cependant, cette méthode nécessite une connaissance du format des champs de données.
    • Services cloud basés sur l’IA : utilisez l’apprentissage automatique pour extraire des données structurées à partir de PDF. Les exemples incluent pdftables et docparser, mais ceux-ci ne sont pas compatibles avec l’open source.

    Pourtant, une autre solution pour l’extraction de données PDF : utiliser OpenAI

    Une solution pour extraire des informations des fichiers PDF consiste à utiliser les capacités de traitement du langage naturel d’OpenAI pour comprendre le contenu du document. Cependant, OpenAI n’est pas en mesure de travailler directement avec les formats PDF ou image, la première étape consiste donc à convertir le PDF en texte tout en conservant les positions relatives des éléments de texte.

    Une façon d’y parvenir consiste à utiliser la bibliothèque PDFLayoutTextStripper, qui utilise PDFBox pour lire tous les éléments de texte du fichier PDF et les organiser en lignes, en conservant les positions relatives identiques à celles du fichier PDF d’origine. Ceci est important car, par exemple, dans la table des articles d’une facture, si le montant se trouve dans la même colonne que la quantité, cela entraînera des valeurs incorrectes lors de la recherche du montant total et de la quantité totale. Voici un exemple de la sortie du stripper :

                                                                                                    *PO-003847945*                                           
                                                                                                                                                             
                                                                                          Page.........................: 1    of    1                        
                                                                                                                                                             
                                                                                                                                                             
                                                                                                                                                             
                                                                                                                                                             
                                                                                                                                                             
                    Address...........:     Aeeee  Consumer  Good  Co.(QSC)            Purchase       Order                                                  
                                            P.O.Box 1234                                                                                                     
                                            Dooo,                                      PO-003847945                                                          
                                            ABC                                       TL-00074                                   
                                                                                                                                                             
                    Telephone........:                                                 USR\S.Morato         5/10/2020 3:40 PM                                
                    Fax...................:                                                                                                                  
                                                                                                                                                             
                                                                                                                                                             
                   100225                Aaaaaa  Eeeeee                                 Date...................................: 5/10/2020                   
                                                                                        Expected  DeliveryDate...:  5/10/2020                                
                   Phone........:                                                       Attention Information                                                
                   Fax.............:                                                                                                                         
                   Vendor :    TL-00074                                                                                                                      
                   AAAA BBBB CCCCCAAI    W.L.L.                                         Payment  Terms     Current month  plus  60  days                     
                                                                                                                                                             
                                                                                                                                                             
                                                                                                                             Discount                        
              Barcode           Item number     Description                  Quantity   Unit     Unit price       Amount                  Discount           
              5449000165336     304100          CRET ZERO 350ML  PET             5.00 PACK24          54.00        270.00         0.00         0.00          
                                                         350                                                                                                 
              5449000105394     300742          CEEOCE  EOE SOFT DRINKS                                                                                      
                                                1.25LTR                          5.00  PACK6          27.00        135.00         0.00         0.00          
                                                                                                                                                             
                                                    1.25                                                                                                                        
    (truncated...)

    Une fois le PDF converti en texte, l’étape suivante consiste à appeler l’API OpenAI et à transmettre le texte avec des requêtes telles que « Extraire les champs : ‘Numéro de bon de commande’, ‘Montant total' ». La réponse sera au format JSON, et GSON peut être utilisé pour l’analyser et extraire les résultats finaux. Ce processus en deux étapes consistant à convertir le PDF en texte, puis à utiliser les capacités de traitement du langage naturel d’OpenAI peut être une solution efficace pour extraire des informations à partir de fichiers PDF.

    La requête est aussi simple que suit, avec %s remplacé par le contenu du texte du bon de commande :

    private static final String QUERY = """
        Want to extract fields: "PO Number", "Total Amount" and "Delivery Address".
        Return result in JSON format without any explanation. 
        The PO content is as follows:
        %s
        """;

    La requête se compose de deux composants :

    1. Spécifier les champs souhaités.
    2. Formatage des valeurs de champ en tant que données JSON pour une récupération facile à partir de la réponse de l’API.

    Et voici l’exemple de réponse d’OpenAI :

    {
      "object": "text_completion",
      "model": "text-davinci-003",
      "choices": [
        {
          "text": "\\n{\\n  \\"PO Number\\": \\"PO-003847945\\",\\n  \\"Total Amount\\": \\"1,485.00\\",\\n  \\"Delivery Address\\": \\"Peera Consumer Good Co.(QSC), P.O.Box 3371, Dohe, QAT\\"\\n}",
          "index": 0,
          "logprobs": null,
          "finish_reason": "stop"
        }
      ],
      // ... some more fields
    }

    Décoder le text La chaîne JSON du champ génère les champs souhaités suivants :

    {
      "PO Number": "PO-003847945",
      "Total Amount": "1,485.00",
      "Delivery Address": "Peera Consumer Good Co.(QSC), P.O.Box 3371, Dohe, QAT"
    }

    Exécuter un exemple de code

    Conditions préalables:

    Pas:

    • Créez un compte OpenAI.
    • Connectez-vous et générez une clé API.
    • Remplacer OPENAI_API_KEY dans Main.java avec votre clé.
    • Mettre à jour SAMPLE_PDF_FILE si besoin.
    • Exécutez le code et affichez les résultats de la sortie.
    Share. Facebook Twitter Pinterest LinkedIn WhatsApp Reddit Email
    Add A Comment

    Leave A Reply Cancel Reply

    Catégories

    • Politique de cookies
    • Politique de confidentialité
    • CONTACT
    • Politique du DMCA
    • CONDITIONS D’UTILISATION
    • Avertissement
    © 2023 DéveloppeurWeb.Com.

    Type above and press Enter to search. Press Esc to cancel.