1. Extraction de texte
Presque tout le monde s'est retrouvé dans une situation où des informations provenant d'un document PDF étaient nécessaires, que ce soit un rapport comptable, une recherche, ou même un livre électronique préféré. Mais que faire si vous devez extraire les données automatiquement et non manuellement ? C'est là que Python et sa bibliothèque incroyable PyPDF2 entrent en jeu.
Les étapes principales pour extraire du texte
Pour réussir à extraire du texte d'un PDF, il faut suivre quelques étapes simples :
- Lecture du fichier PDF.
- Parsing du contenu PDF.
- Extraction du texte pour analyse ultérieure.
2. Lecture et parsing des fichiers PDF
Voyons comment ouvrir et lire un document PDF en Python. Pour commencer, on doit importer PyPDF2 :
import PyPDF2
Maintenant, ouvrons un document PDF. Supposons que nous avons un fichier sample.pdf
que nous voulons analyser. Chargeons-le et voyons combien de pages il contient.
Chargement du fichier PDF
# Ouverture du fichier PDF
with open("sample.pdf", "rb") as pdf_file:
# Création d'un objet PDF Reader
pdf_reader = PyPDF2.PdfReader(pdf_file)
# On obtient le nombre total de pages
num_pages = len(pdf_reader.pages)
print(f"Nombre total de pages dans le document : {num_pages}")
Extraction de texte
Maintenant que le document PDF est ouvert, extrayons le texte. Pour cela, on doit :
PdfReader
ouvre le fichier PDF pour la lecture.- On utilise une boucle
for
pour parcourir toutes les pages et appelerextract_text()
pour extraire le texte. - Le texte extrait est sauvegardé dans une variable
text
et peut être imprimé ou traité.
Voici un exemple de comment ça peut se faire :
import PyPDF2
# Ouverture du fichier PDF
with open("sample.pdf", "rb") as pdf_file:
pdf_reader = PyPDF2.PdfReader(pdf_file)
text = ""
# Extraction de texte de chaque page
for page_num in range(len(pdf_reader.pages)):
page = pdf_reader.pages[page_num]
text += page.extract_text() + "\n"
print(text)
Extraction de texte à partir de pages spécifiques
Et si on a besoin du texte uniquement d'une page précise ? Par exemple, supposons qu'on veut extraire du texte uniquement de la troisième page. Voilà comment on le fait :
import PyPDF2
with open("sample.pdf", "rb") as pdf_file:
pdf_reader = PyPDF2.PdfReader(pdf_file)
page = pdf_reader.pages[2] # Extraction de texte à partir de la troisième page (index 2)
text = page.extract_text()
print(text)
Cet exemple permet d'extraire du texte uniquement de la troisième page, ce qui peut être utile si le document contient beaucoup de pages et vous souhaitez limiter le traitement. PyPDF2 utilise une numérotation de pages commençant à 0.
3. Automatisation du traitement du texte à partir de PDF
Après avoir extrait le texte du PDF, il est possible de l'analyser et de le traiter pour une analyse plus poussée des données. PyPDF2 permet d'automatiser ce processus, ce qui est particulièrement utile pour travailler avec un grand volume de documents.
Extraction et sauvegarde du texte dans un fichier distinct
Pour une analyse ultérieure pratique, on peut sauvegarder le texte extrait dans un fichier texte. Cela simplifie son traitement ultérieur.
import PyPDF2
# Ouverture du fichier PDF
with open("sample.pdf", "rb") as pdf_file:
pdf_reader = PyPDF2.PdfReader(pdf_file)
text = ""
for page_num in range(len(pdf_reader.pages)):
page = pdf_reader.pages[page_num]
text += page.extract_text() + "\n"
# Sauvegarde du texte extrait dans un fichier
with open("extracted_text.txt", "w", encoding="utf-8") as text_file:
text_file.write(text)
Traitement et analyse du texte extrait
Après l'extraction du texte, on peut l'analyser avec Python. Pour cela, on utilise souvent des bibliothèques comme re
(expressions régulières), nltk
(Natural Language Toolkit) ou pandas
.
Comptage des mots et recherche de phrases-clés
Supposons qu'on a un fichier texte extracted_text.txt
, et qu'on veut compter le nombre de mots spécifiques et de phrases dans le document.
import re
# Ouverture du texte extrait
with open("extracted_text.txt", "r", encoding="utf-8") as text_file:
text = text_file.read()
# Recherche et comptage des mots clés
keywords = ["rapport", "données", "analyse"]
keyword_counts = {keyword: len(re.findall(keyword, text, re.IGNORECASE)) for keyword in keywords}
print("Fréquence des mots-clés :", keyword_counts)
Voici ce qui se passe ici :
- On ouvre le texte sauvegardé.
- On utilise des expressions régulières pour compter les mots-clés (sans tenir compte de la casse).
- On obtient le nombre d'occurrences pour chaque mot-clé.
4. Avantages et limitations de PyPDF2
Avantages :
- Facilité d'utilisation pour une extraction de texte basique et un traitement des pages.
- Support des opérations principales : lecture de texte, fusion et division de documents.
- Intégration facile avec d'autres bibliothèques Python.
Limitations :
- PyPDF2 n'extrait pas toujours correctement le texte des PDF complexes avec des formats multi-niveaux, des tableaux et des images.
- Absence de support pour l'extraction directe des images et des tableaux.
- Ne supporte pas les fichiers cryptés ou protégés par mot de passe (bien qu'il soit possible de tenter de retirer la protection si le mot de passe est connu).
GO TO FULL VERSION