CodeGym /Cours /Python SELF FR /Extraction de texte à partir de documents PDF pour analys...

Extraction de texte à partir de documents PDF pour analyse des données

Python SELF FR
Niveau 43 , Leçon 2
Disponible

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 :

  1. Lecture du fichier PDF.
  2. Parsing du contenu PDF.
  3. 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 :

Python

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

Python

# 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 appeler extract_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 :

Python

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 :

Python

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.

Python

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.

Python

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).
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION