Maison >interface Web >js tutoriel >Transformez les e-mails non structurés en données exploitables

Transformez les e-mails non structurés en données exploitables

DDD
DDDoriginal
2024-12-07 10:47:14989parcourir

Turn Unstructured Emails to Actionable Data

Dans cette version, nous construisons un outil conçu pour le secteur de la logistique. Cet outil automatisera l'extraction de données structurées à partir de pièces jointes PDF (telles que des demandes de devis ou des fiches d'informations d'expédition) dans les e-mails, permettant à ces données d'être utilisées ailleurs dans le flux de travail.

Pour faciliter la compréhension, prenons comme exemple Nova Logistics, une entreprise fictive spécialisée dans le transport d'appareils électroniques fragiles à travers différentes villes.

Chez Nova Logistics, les clients contactent par e-mail pour demander des devis pour l'expédition d'articles entre les villes et ils joignent généralement un PDF contenant tous les détails d'expédition nécessaires. Actuellement, le processus est manuel : quelqu'un chez Nova doit ouvrir chaque e-mail, télécharger le PDF ci-joint, le lire et extraire les informations clés telles que les noms et les quantités des articles avant de calculer les frais d'expédition.

Cela peut prendre des heures, surtout lorsqu'il y a plusieurs e-mails par jour, chacun contenant de longs documents PDF.

Dans cet article, nous allons détailler la création d'un outil pour automatiser l'ensemble de ce processus, depuis la récupération des e-mails et l'extraction des données PDF jusqu'à l'envoi des informations extraites à Google Sheets.

Comment ça marche

  1. E-mails de sondage : Tout d’abord, nous allons mettre en place un système pour vérifier régulièrement les nouveaux e-mails de la boîte de réception. Une fois qu'un e-mail est trouvé, nous téléchargerons la pièce jointe PDF et appliquerons une étiquette à l'e-mail afin qu'il ne soit plus interrogé à l'avenir.
  2. Extraire des données avec Documind : nous transmettrons le PDF sous forme d'URL à Documind, un package open source qui utilise l'IA pour extraire des données structurées à partir de documents. Cela nous donnera des informations telles que les noms des articles, les quantités, les détails d'expédition, le poids, etc.
  3. Stocker et utiliser les données : enfin, nous enverrons les données extraites à Google Sheets, ce qui facilitera leur visualisation, leur suivi et leur utilisation pour d'autres calculs.

Ce dont nous aurons besoin

Pour créer cet outil, nous aurons besoin des packages suivants :

  • API Gmail : pour récupérer les e-mails depuis la boîte de réception.
  • Supabase : Pour télécharger et stocker les PDF.
  • Documind : Pour extraire des données structurées des PDF.
  • API Google Sheets : Pour stocker les données extraites et calculer les devis.
  • Nango : Pour gérer l'authentification des utilisateurs

Étape 1 : Configuration initiale

Avant de commencer à écrire le code, nous devons configurer quelques éléments. Ne t'inquiète pas; Je vous guiderai à travers chaque étape.

1.1 Installer Node.js

Nous utiliserons Node.js pour exécuter notre code. Si Node.js n'est pas installé, accédez au site Web Node.js et téléchargez la dernière version.

1.2 Installer les bibliothèques requises

Une fois Node.js installé, nous devons installer les packages qui nous aideront à interagir avec Gmail, Google Sheets, Supabase et Documind.

  1. Ouvrez un terminal ou une invite de commande.
  2. Créez un nouveau dossier pour votre projet en exécutant :

    mkdir nova
    cd nova
    
  3. Initialiser le projet :

    npm init -y
    
  4. Installez les packages requis :

    npm install googleapis @supabase/supabase-js documind dotenv @nangohq/node
    

1.3 Obtenir les informations d'identification de l'API

Avant de pouvoir commencer à écrire le code, vous devez configurer et obtenir toutes les informations d'identification pour utiliser les API Google (Gmail et Google Sheets), Supabase et Documind. Voici un guide rapide pour chacun :

API Google

  1. Accédez à Google Cloud Console.
  2. Dans la liste des projets, sélectionnez un projet ou créez-en un nouveau
  3. Activez l'API Gmail et l'API Google Sheets pour votre projet :
    • Accédez à la bibliothèque d'API dans Cloud Console et recherchez « API Gmail » et « API Google Sheets ». Cliquez sur chacun et activez-les.
  4. Configurez votre écran de consentement :
    • Accédez à API et services > Écran de consentement OAuth.
    • Donnez un nom à votre application.
    • Choisissez « Externe » comme type d'audience.
    • Remplissez tous les autres champs obligatoires.
  5. Créez des informations d'identification OAuth 2.0 :
    • Accédez à API et services > Informations d'identification.
    • Cliquez sur Créer des informations d'identification et choisissez ID client OAuth.
    • Choisissez « Application Web » comme type d'application.
    • Copiez votre identifiant client et votre secret.
  6. Pour gérer facilement les utilisateurs OAuth sur plusieurs plateformes, j'utilise Nango. Vous pouvez consulter leur documentation pour savoir comment commencer :
    • Connectez-vous à Nango et cliquez sur Configurer une nouvelle intégration.
    • Recherchez Google Mail dans la liste des intégrations.
    • Ajoutez l'ID client et le secret que vous avez copiés.
    • Dans le champ des étendues, ajoutez https://www.googleapis.com/auth/gmail.readonly , https://www.googleapis.com/auth/gmail.modify et https://www.googleapis. com/auth/gmail.labels
    • Copiez l'URL de rappel pour l'intégration et enregistrez.
    • Retournez aux informations d'identification sur votre console Google et ajoutez l'URL de rappel comme URI de redirection autorisée.

Comme nous utilisons également l'API Google Sheets, vous pouvez simplement passer par l'étape 6 pour créer une autre intégration sur Nango. Recherchez l'intégration de Google Sheets et utilisez le même ID client et le même secret que vous avez copiés. Dans l'espace réservé aux scopes, ajoutez https://www.googleapis.com/auth/spreadsheets

Pour publier votre application, accédez à l'écran de consentement OAuth dans la console Google et cliquez sur le bouton Publier.

Supabase

  1. Créez un compte gratuit sur Supabase.
  2. Créez un nouveau projet et un bucket pour stocker les PDF.
  3. Obtenez l'URL API et la Clé API à partir des paramètres de votre projet.

Étape 2 : Écrivez le code

Écrivons maintenant le code par petites étapes.

2.1 Ajouter des variables d'environnement

Créez un fichier .env pour stocker toutes les variables importantes qui seraient utilisées tout au long du code. Voici un exemple :

mkdir nova
cd nova

Nous verrons plus loin dans le code comment obtenir et utiliser ces variables.

2.2 Configurer l'API Gmail et récupérer les e-mails

Nous allons commencer par utiliser l'API Gmail pour récupérer les e-mails qui n'ont pas le libellé Traité et qui contiennent des pièces jointes.

Pour récupérer le jeton d'accès nécessaire, nous utiliserons Nango, qui gérera automatiquement les actualisations des jetons s'ils expirent, vous n'aurez donc pas à vous soucier de la gestion vous-même des cycles de vie des jetons.

Tout ce dont vous avez besoin est :

  1. L'ID d'intégration de la configuration Gmail dans Nango.
  2. L'ID de connexion de l'utilisateur dont le jeton d'accès est nécessaire.
  3. Votre Clé secrète Nango.

Vous pouvez facilement ajouter une nouvelle connexion directement via l'interface utilisateur Nango en utilisant votre propre compte Gmail. Votre clé secrète se trouve dans la section des paramètres d'environnement du tableau de bord Nango.

npm init -y

Pour plus de simplicité, nous limiterons les résultats à seulement cinq e-mails à la fois, et nous filtrerons spécifiquement pour récupérer uniquement les e-mails contenant des pièces jointes PDF. À partir de ceux-ci, nous récupérerons uniquement la première pièce jointe pour traitement. Après avoir téléchargé la pièce jointe, nous marquerons l'e-mail comme traité en appliquant une étiquette, garantissant ainsi qu'il ne sera plus récupéré lors des prochains cycles d'interrogation.

2.2 Télécharger vers Supabase

Ensuite, nous devons télécharger les PDF téléchargés sur Supabase. Assurez-vous de remplacer le nom du bucket dans le code par le vôtre.

npm install googleapis @supabase/supabase-js documind dotenv @nangohq/node

2.3 Extraire des données à l'aide de Documind

Une fois le PDF stocké dans Supabase, nous utiliserons Documind pour extraire les données pertinentes. Puisqu'il exploite OpenAI pour le traitement, assurez-vous que votre clé API est ajoutée au fichier .env.

Documind fonctionne avec des schémas que vous définissez pour extraire les données structurées dont vous avez besoin. Nous reviendrons bientôt sur la définition du schéma, mais n'hésitez pas à consulter la documentation pour plus de détails.

SUPABASE_API_KEY=<Supabase API Key>
SUPABASE_URL=<Supabase URL>
OPENAI_API_KEY=<Open AI API Key>
NANGO_KEY=<Nango secret key>

2.4 Envoyer les données extraites à Google Sheets

Après avoir extrait les données du PDF, nous les enverrons à Google Sheets.

Avant de continuer, assurez-vous que votre Google Sheets est configuré et que vous avez créé une connexion avec votre compte via Nango. Si vous ne l'avez pas déjà fait, voici un modèle que vous pouvez utiliser pour commencer.

mkdir nova
cd nova

Étape 3 : Assembler le tout

Maintenant que nous avons écrit les fonctions individuelles, nous devons tout rassembler.

Dans cette étape, nous définirons le schéma que Documind utilisera pour extraire les données requises. Ce schéma guidera l'IA dans l'identification et la structuration des informations pertinentes à partir des PDF.

npm init -y

Testez le code

Le code source complet est disponible sur GitHub, ainsi qu'un exemple de PDF pour les tests. Cependant, vous pouvez également créer et utiliser vos propres documents. Clonez simplement le référentiel, modifiez le code en fonction de vos besoins et essayez-le pour votre propre cas d'utilisation.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn