Cours
Documents PDF
PDF signifie Portable Document Format : il peut contenir du texte, des images, des graphiques, etc., à la différence des fichiers texte simples. Il s'agit d'un fichier portant l'extension ".pdf", inventé par Adobe. Ce type de fichier est indépendant des plateformes (logiciels, matériels et systèmes d'exploitation).
Étapes d'installation du package :
-
Installez le package "pypdf2", qui permet de manipuler les fichiers portant l'extension ".pdf".

-
Vous pouvez voir ci-dessous que le package "pypdf2" est bien installé.

Lecture de documents PDF et extraction de données
Vous n'extrairez ici que le texte du fichier PDF, car PyPDF2 présente des limites pour l'extraction de contenus riches. Les logos, images, etc. ne peuvent pas être récupérés avec ce package. Téléchargez le PDF suivant pour suivre ce tutoriel.
Télécharger le fichier PDF

L'instruction 'import' dans le code ci-dessus charge le module PyPDF2. Utilisez 'open('pdfFileName', 'openingMode')' où 'pdfFileName' vaut 'test.pdf' et 'openingMode' vaut 'rb' pour une lecture en binaire.

PyPDF2 fournit la classe 'PdfFileReader', qui prend en entrée l'objet fraîchement créé 'pdfFileObject'. Vous pouvez accéder à l'attribut 'numPages' de 'pdfReaderObject', qui renvoie le nombre total de pages.
La sortie ci-dessus est 1, car le fichier PDF ne contient qu'une seule page.
Utilisez la méthode 'getPage(0)' sur 'pdfReaderObject' pour récupérer la première page. Le résultat est stocké dans 'firstPageObject' et tout le texte de cette page peut être affiché avec la méthode 'extractText()'.
Le code ci-dessus renvoie l'intégralité du texte du fichier PDF. En revanche, l'image n'apparaît pas dans le terminal, car elle ne peut pas être extraite avec PyPDF2.
Fusionner plusieurs fichiers PDF en un seul
Vous allez fusionner deux fichiers PDF en un document unique. Le premier est celui utilisé précédemment et le second peut être téléchargé via le lien ci-dessous :
Nouveau fichier PDF.

Importez le module 'PdfFileMerger' depuis le package PyPDF2 pour fusionner des PDF. Le 'path' indique le chemin du dossier où se trouvent les fichiers. Les PDF à fusionner sont listés dans 'pdf_files'.
L'objet de fusion est créé avec 'PdfFileMerger'. Une boucle parcourt chaque fichier de la liste et la fusion s'effectue en passant le chemin et le nom du fichier à la méthode 'append'. Enfin, le résultat final est écrit via 'merger.write()', qui produit un nouveau PDF fusionné.
L'image ci-dessus montre 'merged.pdf', qui regroupe le contenu de 'test.pdf' et 'test-1.pdf'.
Documents Word
Les documents Word portent l'extension ".docx". Ils ne contiennent pas uniquement du texte brut : ce sont des documents « rich text » avec des structures et attributs de mise en forme (taille, alignement, couleur, images, police, etc.).
Il vous faut une application pour travailler avec les documents Word. L'application la plus répandue sous Windows et macOS est Microsoft Word (abonnement payant). Il existe toutefois une alternative gratuite, "LibreOffice", généralement préinstallée sous Linux. Les applications peuvent être téléchargées pour Windows et macOS. Ce tutoriel utilise Microsoft Word sous Windows.
Étapes d'installation du package
-
Installez le package "python-docx", qui permet de manipuler les documents Word au format ".docx".

-
Vous pouvez voir ci-dessous que le package 'python-docx' est bien installé.

Vous pouvez coder dans l'interpréteur interactif de Python, mais un éditeur de texte est préférable. Nous utiliserons donc Sublime Text pour la partie code de ce tutoriel.
Écrire un document Word

Ci-dessus, le module 'Document' est importé depuis le package 'docx' à la première ligne. La seconde ligne crée un nouveau document Word via l'objet Document. Le fichier est enregistré sous 'first.docx' avec 'document.save()'.
Ajouter un titre

Le code ci-dessus ouvre un nouveau fichier avec 'Document()' et crée un fichier modifié avec 'document.save('addHeader.docx')'. Vous pouvez ajouter un titre avec la méthode 'add_heading('text', level=number)', qui prend le texte du titre et un niveau de 0 à 4.

Le code génère un fichier 'addedHeader.docx' dans lequel le niveau 0 produit un titre avec un filet en dessous, alors que le niveau 1 correspond au titre principal. Les autres niveaux créent des sous-titres, avec des tailles de police décroissantes.
Ajouter un paragraphe

Le code ci-dessus ouvre un nouveau document avec 'Document()' et enregistre un fichier modifié via 'document.save('addParagraph.docx')'. Vous pouvez ajouter un paragraphe avec 'add_paragraph('text', style='required_style')' qui prend le texte et, en option, un 'style' tel que 'List Number' ou 'List Bullet'.

Le résultat est un fichier 'addedParagraph.docx' contenant d'abord un paragraphe simple, puis un titre suivi d'une liste ordonnée avec les éléments 1 et 2, puis un autre titre suivi d'une liste à puces de deux éléments.
Ajouter une image

Le code ci-dessus crée un nouveau document avec 'Document()' et enregistre un fichier modifié via 'document.save('addPicture.docx')'. Ajoutez une image avec 'add_picture()' dont le premier paramètre, 'cat-1.jpeg', est le chemin vers l'image du chat. Les paramètres de largeur et de hauteur sont optionnels : par défaut en 72 dpi, ici nous utilisons 'Inches' pour définir les dimensions.

Le fichier 'addedPicture.docx' généré contient une image de chat avec une largeur et une hauteur de 1,25 pouce.
Lire un document Word
Vous allez maintenant lire un document Word d'exemple depuis Python, disponible ici :
Télécharger l'exemple.

La première ligne importe 'Document' depuis le module 'docx', utilisé pour charger le fichier et créer un objet. 'obtainText' est une fonction qui reçoit le fichier 'fullText.docx'. Une boucle parcourt chaque paragraphe accessible via 'document.paragraphs' et l'ajoute à une liste vide avec 'append'. Enfin, la fonction renvoie la liste des paragraphes séparés par des retours à la ligne.

La sortie ci-dessus fournit le texte brut, sans style, couleur, etc. Ce n'est pas un document riche.
Félicitations
Félicitations, vous êtes arrivé au bout de ce tutoriel.
Si vous souhaitez en savoir plus sur l'import de données en Python, essayez le cours Introduction to Importing Data in Python de DataCamp.
Consultez aussi notre tutoriel sur les structures de données en Python.
Vous pouvez également explorer les ressources suivantes pour approfondir certains sujets.
Références :
Automate the Boring Stuff with Python : travailler avec des documents Word