Maison >interface Web >js tutoriel >Transformez les e-mails non structurés en données exploitables
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.
Pour créer cet outil, nous aurons besoin des packages suivants :
Avant de commencer à écrire le code, nous devons configurer quelques éléments. Ne t'inquiète pas; Je vous guiderai à travers chaque étape.
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.
Une fois Node.js installé, nous devons installer les packages qui nous aideront à interagir avec Gmail, Google Sheets, Supabase et Documind.
Créez un nouveau dossier pour votre projet en exécutant :
mkdir nova cd nova
Initialiser le projet :
npm init -y
Installez les packages requis :
npm install googleapis @supabase/supabase-js documind dotenv @nangohq/node
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
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
Écrivons maintenant le code par petites étapes.
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.
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 :
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.
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
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>
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
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
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!