Cet article verra comment nous pouvons utiliser Python pour travailler avec des fichiers PDF (Portable Document Format). Les fichiers PDF contiennent des images, des documents, du texte, des liens, de l’audio, de la vidéo, vous pouvez également ajouter un lien hypertexte vers un fichier pdf. Donc, fondamentalement, cet article vous aidera sur Comment extraire du texte et des images d’un PDF en utilisant Python ?
Les sujets que nous abordons dans cet article sont donnés ci-dessous.
- Lecture de fichiers PDF texte.
- Tables de lecture dans les fichiers PDF.
- Extraction d’images à partir de fichiers PDF.
- Ecrire un fichier PDF
Travailler avec des fichiers PDF en python est très simple, vous pouvez utiliser différents types de bibliothèques/modules Python pour travailler en PDF comme PyPDF2, tabula-py, PyMuPDF, etc. Nous allons utiliser certaines de ces bibliothèques dans ce tutoriel car elles sont très facile il vous suffit d’installer la bibliothèque et d’exécuter quelques codes dans votre ide voyons comment faire ce processus. Alors, commençons par comment extraire du texte et des images d’un PDF à l’aide de Python ?
Lecture de fichiers PDF
Étape -1 : obtenir un exemple de fichier
La première chose dont nous avons besoin est un fichier .pdf (sample.pdf) pour lire les fichiers pdf. Une fois que vous avez le fichier .pdf au travail, passons au codage.
Étape -2 : Installez la bibliothèque/le module requis
vous devez installer une bibliothèque appelée PyPDF pour python, vous pouvez l’installer en exécutant une commande dans votre terminal.
pip3 install PyPDF
Étape -3 : Écrire le code
Ouvrez votre IDE (j’utilise PyCharm, vous pouvez en utiliser un autre comme VS Code) et commencez à écrire du code, mais avant cela, voyons les étapes dont nous avons besoin pour écrire le code :
- Importez le module PyPDF3 dans votre IDE
- Ouvrez le fichier pdf en mode binaire et enregistrez un objet fichier en tant que fichier PDF.
- Créez un objet de classe de lecteur de fichiers PDF.
- Imprimez le nombre de pages dans le fichier pdf en utilisant la propriété ‘numPages’. Il nous indique le nombre de pages (dans notre fichier pdf il y a 206 pages).
- Ensuite, nous créons un objet de classe de pages et définissons des numéros de page spécifiques (commençant par 0) quel contenu de page nous extrayons ici, nous extrayons le texte de la page numéro 85.
- Nous allons maintenant utiliser une fonction appelée ‘extractText()’ qui va extraire le texte d’un fichier PDF à partir d’un numéro de page spécifique que nous fournissons.
- Enfin, fermez le fichier PDF.
Voyons maintenant le processus dans le code Python :
#import the PyPDF2 module
import PyPDF2
#open the PDF file
PDFfile = open('Sample.pdf.', 'rb')
PDFfilereader = PyPDF2.PdfFileReader(PDFfile)
#print the number of pages
print(PDFfilereader.numPages)
#provide the page number
pages = PDFfilereader.getPage(85)
#extracting the text in PDF file
print(pages.extractText())
#close the PDF file
PDFfile.close()
Sortir:
206
76pronounced:declareddiscreet......................................................... .........................Complete the Table as shown below. Comprehension.
Dans la première ligne de sortie, vous pouvez voir un nombre (206) qui est le numéro de la page et le reste du texte est le contexte de la page numéro spécifiée.
Tables de lecture dans les fichiers PDF
Étape -1 : Obtenir un exemple de fichier
La première chose dont nous avons besoin pour lire le tableau dans un fichier pdf est un fichier .pdf (sample.pdf) qui contient un tableau. Une fois que vous avez le fichier .pdf au travail, passons au codage.
Étape -3 : Installez la bibliothèque/le module requis
Méthode -1 :
Vous devez installer une bibliothèque appelée tabula-py pour python, elle aide à lire le tableau dans un fichier pdf, vous pouvez l’installer en exécutant une commande dans votre terminal :
pip3 install tabula-py
Ouvrez votre ide (j’utilise Pycharm, vous pouvez en utiliser un autre comme vs code) et commencez à écrire du code, mais avant cela, voyons les étapes à suivre pour écrire le code :
- Tout d’abord, vous devez importer la bibliothèque de tabula.
- Deuxième important le fichier pdf qui contient un tableau.
from tabula import read_pdf
from tabulate, import tabulate
#reads the table from pdf file
df = read_pdf("abc.pdf",pages="all") #address of pdf file
print(tabulate(df))
Vous pouvez également lire plusieurs tables en tant que tables indépendantes. Vous pouvez utiliser le code ci-dessous pour le faire :
#select the pdf file
file = "sample.pdf"
#reading both table as an independent table
tables = tabula.read_pdf(file,pages=1,multiple_tables=True)
print(tables[0])
print(tables[1])
Méthode -2 :
Vous devez installer une bibliothèque appelée camelot-py pour Python. Il est utile de lire le tableau dans un fichier pdf. Vous pouvez l’installer en exécutant une commande dans votre terminal :
pip3 install camelot-py
Voyons les étapes dont nous avons besoin pour écrire le code :
- Importez la bibliothèque Camelot.
- Extraction de tous les tableaux du pdf
- Enfin, imprimez-le.
C’est un processus très simple, vous pouvez simplement copier-coller le code dans votre IDE, mais n’oubliez pas de conserver le fichier pdf dans le même dossier que le fichier Python.
Extraction d’images à partir de fichiers PDF
Étape -1 : obtenir un exemple de fichier
La première chose dont nous avons besoin pour extraire les images des fichiers PDF est un fichier .pdf (sample.pdf) contenant les images que vous souhaitez extraire. Une fois que vous avez le fichier .pdf au travail, passons au codage.
Étape -2 : Installez la bibliothèque/le module requis
Vous devez installer une bibliothèque appelée PyMuPDF (vous pouvez également utiliser PyPDF2 mais c’est plus facile) pour Python. Vous pouvez l’installer en exécutant une commande dans votre terminal.
pip3 install PyMuPDF Pillow
Étape -3 : Écrire le code
Commençons à écrire le code, mais avant cela, voyons les étapes à suivre pour écrire le code :
- Importez le module Fitz dans votre ide.
- Ensuite, nous allons créer un fichier et stocker le nom du fichier « sample.pdf ».
- Ensuite, nous ouvrons le fichier pdf fitz.open
- Créez ensuite une autre variable appelée image_list et appliquez la méthode sur le pdf qui consiste à obtenir PageImageList() et à fournir un numéro de page.
- La prochaine chose est que nous allons simplement appliquer cette boucle dans cette liste d’images.
- Et ensuite, nous allons en extraire Xref car nous ne voulons que des pixels (si vous le souhaitez, vous pouvez extraire autre chose comme la position de l’image, les propriétés de l’image, etc.)
- La prochaine chose est que nous devons le convertir en un pixmap pour cela nous allons simplement créer une variable appelée pix.
- Et puis mettez une condition « si » si l’image est en niveaux de gris ou en couleur alors nous l’enregistrons simplement.
- Enfin, nous allons simplement imprimer les images et les extraire.
#import the library
import fitz
file = 'sample.pdf'
#open the fitz file
pdf = fitz.open(file)
#select the page number
image_list = pdf.getPageImageList(0)
#applying the loop
for image in image_list:
xref = image[0]
pix = fitz.Pixmap(pdf, xref)
if pix.n < 5:
pix.writePNG(f'{xref}.png')
else:
pix1 = fitz.open(fitz.csRGB, pix)
pix1.writePNG(f'{xref}.png')
pix1 = None
pix = None
#print the images
print(len(image_list), 'detected')
Sortir:
2 detected
Rédaction de fichiers PDF
Nous allons utiliser le module FPDF pour écrire le fichier PDF. Installez donc le module FPDF à l’aide de la commande ci-dessous :
pip3 install fpdf==1.7
Une fois, vous avez terminé l’installation. Utilisez le code ci-dessous pour écrire le fichier PDF :
from fpdf import FPDF
text = "Hello, this text will be stored in PDF file by GeekyHumans"
pdf = FPDF()
pdf.add_page()
pdf.set_xy(0, 0)
pdf.set_font('arial', 'B', 13.0)
pdf.cell(ln=0, h=5.0, align='L', w=0, txt=text, border=0)
pdf.output('test.pdf', 'F')
Maintenant, vous êtes prêt à utiliser le PDF. Un nouveau fichier PDF sera créé dans le même dossier où réside votre code Python.
Derniers mots
Dans cet article, nous avons expliqué comment extraire du texte et des images d’un PDF à l’aide de Python. Écrire et lire un fichier PDF peut être une tâche difficile car cela implique de nombreux éléments tels que du texte, des images, des tableaux, etc. Mais nous vous avons simplifié la compréhension des bases de la manipulation d’un fichier PDF à l’aide de Python. J’espère que vous avez compris le code et qu’il vous a été facile de l’implémenter. Veuillez nous faire savoir dans la section des commentaires si vous rencontrez des problèmes ou si vous ne parvenez pas à exécuter le code.
Voici quelques tutoriels utiles que vous pouvez lire :