Comment utiliser PowerPoint avec Python

Si vous mettez régulièrement à jour les mêmes diapositives avec de nouvelles données, vous pouvez gagner du temps en automatisant le processus.

Le package Python « python-pptx » peut vous aider dans cette démarche. La bibliothèque fournit des objets Python permettant d’interagir avec PowerPoint, afin que vous puissiez créer de nouvelles présentations ou en modifier une existante depuis un script. Il est difficile de créer des présentations élégantes uniquement avec des lignes de code, c’est pourquoi l'approche la plus simple consiste à commencer par créer un fichier modèle qui sera édité par votre script. Une fois le fichier principal chargé, la bibliothèque permet de nombreuses opérations :

  • Remplacement de texte dans la diapositive : tous les textes de la présentation sont éditables.
  • Dupliquer et supprimer des diapositives : il est possible de supprimer, dupliquer, changer l’ordre des slides. Cela signifie que même en partant d’un « template » qui peut sembler fixe, vous pouvez produire des présentations variées à la structure complexe.
  • Mise à jour des données du graphique : Python-pptx fournit des classes pour travailler avec des graphiques ou des tableaux dans votre présentation. Même si vous pouvez créer un nouveau graphique à partir de zéro, le moyen le plus simple est souvent de mettre à jour un graphique existant dans le modèle.

Génération de slide PowerPoint avec Python: Mode d'emploi

Pour donner un exemple simple, nous allons automatiser le processus de création d'une présentation simple qui montre les dernières données financières de quelques entreprises bien connues. Nous utiliserons des données disponibles publiquement, qui seront récupérées à partir de l'API Yahoo Finance dans le script python.

Nos besoins sont très basiques, nous aimerions avoir les diapositives suivantes :

  • Une diapositive de titre pour introduire la présentation, avec la date de la dernière mise à jour.
  • Une diapositive de table des matières, avec le nom des entreprises que nous allons présenter.
  • Pour chaque entreprise, une diapositive d'introduction textuelle.
  • Pour chaque entreprise, une diapositive pour afficher quelques KPI.
  • Pour chaque entreprise, une diapositive qui montre l'évolution des indicateurs financiers dans un graphique à barres.
  • Pour chaque entreprise, l'évolution du cours de l'action dans un graphique.
  • Et à la fin, pourquoi pas, créer une petite conclusion

Nous aimerions présenter brièvement chaque entreprise. Pour ce faire, nous pouvons utiliser le résumé officiel de l'entreprise, qui est fourni par Yahoo Finance, mais ce dernier a tendance à varier d’une entreprise à l’autre, et ne convient de toute façon pas au format d’une présentation. Une alternative possible est de demander à un Large Language Model de créer quelques points, afin que le format corresponde exactement à nos besoins pour la diapositive. Dans cet article, nous utiliserons Claude 3.5, fourni par l’AWS Bedrock API. Pour appeler Claude, nous avons créé dans python un prompt générique dans lequel nous insérons le nom de l’entreprise pour laquelle nous souhaitons une description.

Comme nous avons décidé d'ajouter du contenu généré par LLM pour améliorer notre présentation, nous pouvons également demander à l'IA de choisir les meilleurs investissements dans la liste. Notre dernière diapositive présentera les trois meilleures entreprises que le modèle a sélectionnées pour nous.

L'implémentation Python suivra ces étapes :

  1. Créer le fichier modèle : créez un modèle pour chaque diapositive que vous souhaitez dans votre présentation finale. Créez les formes et les zones de texte requises qui seront remplies plus tard. Appliquez un style pour rendre les choses plus jolies. 
  2. Récupérer des données externes : notre code Python devra récupérer des données externes pour remplir la présentation. Nous avons décidé d'utiliser l'API Yahoo Finance, qui dispose d'un wrapper Python, et de générer du texte avec Bedrock, que nous pouvons appeler avec le client Boto3.
  3. Créer des fonctions pour chacune de vos diapositives : créez une fonction Python pour chaque diapositive, qui établit les liens entre vos données et les formes de votre fichier modèle.
  4. Bouclez sur vos données pour créer les diapositives requises : vous pouvez faire une boucle sur vos données, pour que la présentation corresponde dynamiquement à la structure souhaitée.
  5. Exporter la présentation : une fois terminé, Python peut exporter vos mises à jour vers un nouveau fichier pptx, afin que l'utilisateur final puisse l'ouvrir avec Power Point.

Voici un aperçu simple du résultat :

Pour la dernière diapositive, nous avons demandé à Claude v3.5 de créer un résumé et quelques puces pour décrire l'entreprise, au lieu de simplement utiliser des données disponibles en ligne. Le LLM nous permet d'avoir un contenu textuel qui correspond exactement au format que nous souhaitons, donc il s'intègre bien dans la présentation.

Dans la diapositive suivante, un peu de mise en forme du texte est nécessaire, en raison de la diversité des chiffres. Nous devons anticiper que les bénéfices d’une entreprise peuvent être un nombre assez important, qui doit donc être simplifié.

Pour la dernière diapositive, nous avons demandé au LLM de nous recommander trois entreprises dans lesquelles investir avec une petite justification. Nous pouvons demander au modèle d’utiliser un formatage précis afin que nous puissions extraire les noms des entreprises et pour chacune d’elles la justification. Une fois tout extrait, nous pouvons remplir notre modèle avec les données.

Le code de l'exemple est disponible sur Github, à l'adresse

mx791/PyConsulting 

 

Quelques idées

Voici quelques idées pour aller plus loin et automatiser des tâches plus redondantes : 

  • Utilisez des images générées par l’IA pour illustrer vos présentations en fonction de leur contenu 
  • Récupérez des données depuis l’API de votre ERP, pour créer des présentations avec les données de votre entreprise
  • Planifiez le processus de génération, au sein de votre CI/CD ou de votre planificateur pour recevoir la présentation mise à jour chaque matin. 
  • Créez un support pour vos réunions Scrum en connectant votre script à JIRA
  • Mettez à jour automatiquement vos slides avec les données d’un nouveau client.
  • Mettez à jour automatiquement votre présentation commerciale avec vos derniers chiffres.
  • Demandez à un LLM de vous alerter en cas de fautes d’orthographes dans vos présentations.