Power Automate : convertir un PDF en texte avec Python

Posté le : 13/03/2023

Partager

Power Automate est un service de workflow en ligne qui automatise les actions dans les applications et services les plus courants. Par exemple, vous pouvez créer un flux qui ajoute un prospect à Microsoft Dynamics 365 ainsi qu’un enregistrement dans MailChimp chaque fois qu’une personne ayant plus de 100 abonnés tweet sur votre entreprise.

Lorsque vous vous inscrivez, vous pouvez vous connecter à plus de 500 services et gérer les données dans le cloud ou dans des sources locales telles que SharePoint et Microsoft SQL Server. La liste des applications que vous pouvez utiliser avec Power Automate ne cesse de s’allonger.

Vous pouvez utiliser Power Automate pour créer des flux de travail automatisés entre vos applications et services préférés, obtenir des notifications et des informations, synchroniser des fichiers, recevoir des notifications, collecter des données, etc.​​

Par exemple, vous pouvez automatiser les tâches suivantes :

  • Répondez instantanément aux notifications ou aux e-mails hautement prioritaires.
  • Capturez, suivez et assurez le suivi des nouveaux prospects.
  • Copiez toutes les pièces jointes de votre compte OneDrive Entreprise.
  • Collectez des données sur votre entreprise et partagez-les avec votre équipe.
  • Automatisez les workflows d’approbations.

Power Automate est couramment utilisé pour recevoir des notifications. Par exemple, vous pouvez recevoir instantanément un e-mail ou une notification push sur votre téléphone lorsqu’un prospect est ajouté à Dynamics 365 ou Salesforce.

Cependant, la plupart des services nécessitent un plan Premium. Et pourtant, même si vous avez un abonnement Premium, vous devrez peut-être payer plus de frais pour l’utilisation de certaines fonctionnalités supplémentaires. Par exemple, pour extraire le texte d’un PDF, vous devez payer l’abonnement Premium ainsi que le prix de la licence à un fournisseur externe offrant ces fonctionnalités. Assez ennuyeux, non? Certaines ressources Internet suggèrent des solutions de contournement compliquées, comme la conversion d’un PDF en Word, puis l’utilisation d’un fichier Word, qui ne fonctionne jamais dans la vie réelle. Parfois, en tant qu’ingénieur, vous ne pouvez pas vous empêcher de commencer à construire. Alors c’est parti !

Notre scénario imaginaire est assez simple : une fois qu’un email arrive, nous extrayons les pièces jointes au format PDF, puis les convertissons en texte à l’aide d’un extrait Python. 

Création d'un déclencheur

Tout d’abord, créez un déclencheur. 

  1. Connectez-vous à Power Automate.​
  2. Dans le volet gauche, sélectionnez Mes flux.
  3. Sélectionnez Nouveau flux > Flux cloud automatisé.
  4. Dans le champ Nom du flux, entrez un nom pour votre flux.
  5. Dans le champ Choisir le déclencheur de votre flux, saisissez un nouvel e-mail.
  6. Sélectionnez Quand un nouvel e-mail arrive (V3) dans la liste des déclencheurs. Ce déclencheur s’exécute chaque fois qu’un e-mail arrive.
  7. Sélectionnez Créer.

Les pièces jointes

Ensuite, cliquez sur Étape suivante pour créer l’action suivante. Dans la zone de texte Rechercher, tapez « get attachment« . Sélectionnez Obtenir une pièce jointe (V2).

 

 

 

Sélectionnez Message id dans la liste déroulante et Attachments dans Attachment id

 

 

 

Si vous essayez d’analyser les sorties et de l’exécuter immédiatement, vous remarquerez que les octets de contenus sont dans un format étrange. Cela s’appelle Based64 et pour être honnête, cela m’a pris un certain temps pour enfin le comprendre. En programmation informatique, Base64 est un groupe de schémas de codage binaire texte qui représentent des données binaires (plus précisément, une séquence d’octets de 8 bits) dans des séquences de 24 bits pouvant être représentées par quatre chiffres Base64 bits. Comme tous les schémas de codage binaire texte, Base64 est conçu pour transporter des données stockées dans des formats binaires sur des canaux qui ne prennent en charge que de manière fiable le contenu textuel. Veuillez noter ceci, car nous en aurons besoin ultérieurement. 

Développer une fonction Azure

Nous allons maintenant écrire un code Python pour extraire le contenu du PDF. Pour ce faire, nous allons ajouter une action HTTP et créer une fonction Azure qui exposera une API qui sera accessible à partir de Power Automate. Si vous ne savez pas comment créer une fonction Azure, consultez le didacticiel suivant. 

Créez d’abord une fonction déclenchée par http à partir d’un modèle. Comme nous voulons que notre code soit aussi propre que possible, nous allons créer le dossier helpers et y placer notre fichier d’assistance de serveur de fichiers (je l’ai appelé file_helper.py). Remarque : le dossier helpers doit se trouver dans le même répertoire que votre fichier host.json.

Maintenant, insérez ce code dans votre assistant de fichier :

Comme vous l’avez peut-être remarqué, nous utilisons la bibliothèque PyPDF2, alors n’oubliez pas de mettre à jour vos exigences textes.

Maintenant, allez dans votre fonction principale et mettez le code suivant :

S’il vous plaît : prêtez une attention particulière à cette ligne :

Comme vous le voyez, nous le convertissons de Base64 en octets, ce qui est très important, sinon vous continuerez à obtenir l’erreur « Marqueur EOF introuvable ». Maintenant, publiez-le et obtenez l’url.

Obtenir du texte à partir d'un email

Enfin, il vous suffit d’ajouter une action HTTP à votre flux.

 

 

Fournissez les paramètres suivants :

  • Méthode : POST
  • URL : <URL de votre fonction>
  • En-têtes : Content-Type – application/octet-stream
  • Corps : Obtenir la pièce jointe (V2) -> Octets de contenu

Maintenant, lorsque vous exécutez votre flux, vous obtiendrez le contenu dans un format de chaîne.

Dans ce didacticiel, nous avons vu comment ajouter du code Python personnalisé à votre flux Power Automate à l’aide d’Azure. Cette solution de contournement vous permet non seulement d’effectuer certaines étapes de base, comme l’extraction de contenu PDF, mais aussi des opérations plus sophistiquées comme l’OCRisation de vos images, ou l’obtention d’une description textuelle d’une photo, le tout sans utiliser les solutions de fournisseurs externes. J’espère que cela a été utile. Que la force soit avec vous. 

Écrit par Alibek JAKUPOV, Data Scientist & Microsoft MVP Artificial Intelligence Expertime

Power Automate est un service de workflow en ligne qui automatise les actions dans les applications et les services les plus courants. Par exemple, vous pouvez créer un flux qui ajoute un prospect à Microsoft Dynamics 365.

Contactez-nous Postuler Nos offres d'emploi