pdfplumber : extrais le texte et les tableaux de tes PDF avec Python

De quoi avez-vous besoin

Version de Python

3.x

Packages

  • {"nom": "pdfplumber", "version": "0.11.10"}

Difficulté

Débutant

Copier-coller le contenu d'un PDF, c'est la loterie. Tu récupères des sauts de ligne au milieu des phrases, des colonnes mélangées, et des tableaux qui explosent en une bouillie de chiffres. Le format PDF a été pensé pour afficher un document à l'identique partout, pas pour qu'on puisse en ressortir les données. Résultat : tes factures, tes rapports annuels et tes bulletins restent piégés dans des fichiers illisibles pour un programme.

pdfplumber change la donne. Cette bibliothèque Python ouvre un PDF et te restitue son contenu de façon structurée : le texte, les tableaux, et même les coordonnées exactes de chaque caractère sur la page. C'est l'outil de référence quand tu veux nourrir une base de données, un pipeline d'IA ou une automatisation à partir de documents. Dans ce tutoriel, tu vas extraire le texte et les tableaux d'une facture en quelques lignes.

Installe pdfplumber

pdfplumber s'installe avec pip. Il embarque pdfminer.six, le moteur qui décortique la structure interne du PDF. Aucune autre dépendance à configurer.

bash
pip install pdfplumber

Ouvre ton PDF

On ouvre un fichier avec pdfplumber.open(), dans un bloc with pour qu'il soit refermé proprement. L'objet pdf contient la liste des pages.

python
import pdfplumber

with pdfplumber.open("facture.pdf") as pdf:
    print(f"{len(pdf.pages)} pages détectées")

Récupère le texte

Chaque page possède une méthode extract_text(). Elle renvoie une chaîne avec les mots dans l'ordre de lecture, ligne par ligne. Bien plus propre qu'un copier-coller manuel.

python
with pdfplumber.open("facture.pdf") as pdf:
    page = pdf.pages[0]
    texte = page.extract_text()
    print(texte)

Récupère les tableaux

La vraie pépite, ce sont les tableaux. extract_tables() détecte les lignes et colonnes tracées dans le PDF et renvoie une liste de lignes, chacune étant une liste de cellules. Plus besoin de reconstruire un tableau à la main.

python
with pdfplumber.open("facture.pdf") as pdf:
    tableaux = pdf.pages[0].extract_tables()
    for ligne in tableaux[0]:
        print(ligne)

Cible une zone précise

Quand le PDF est dense (en-têtes, logos, mentions légales), extraire toute la page ramène du bruit. pdfplumber te donne les dimensions de la page et te laisse découper une zone avec crop(). Les coordonnées sont en points, l'origine en haut à gauche.

python
with pdfplumber.open("facture.pdf") as pdf:
    page = pdf.pages[0]
    print(page.width, page.height)  # 595.27 841.89 pour du A4
    zone = page.crop((0, 100, page.width, 300))
    print(zone.extract_text())

Parcours toutes les pages et filtre

Un vrai document fait rarement une seule page. On boucle sur pdf.pages, on extrait le texte de chacune, et on garde seulement celles qui nous intéressent — par exemple les pages qui contiennent le mot « Total ».

python
resultats = []
with pdfplumber.open("facture.pdf") as pdf:
    for num, page in enumerate(pdf.pages, start=1):
        texte = page.extract_text() or ""
        if "Total" in texte:
            resultats.append((num, texte))

for num, texte in resultats:
    print(f"Page {num} : {texte[:80]}...")

Transforme le tableau en CSV

Dernière étape : sortir les données du PDF pour les utiliser ailleurs. On convertit la première ligne en en-têtes, les suivantes en enregistrements, et on écrit le tout en CSV avec le module standard csv. Ton tableau devient exploitable par n'importe quel outil.

python
import csv

with pdfplumber.open("facture.pdf") as pdf:
    lignes = pdf.pages[0].extract_tables()[0]
    entetes, *donnees = lignes
    with open("facture.csv", "w", newline="", encoding="utf-8") as f:
        w = csv.writer(f)
        w.writerow(entetes)
        w.writerows(donnees)

Le résultat

En moins de trente lignes de Python, tu as transformé un PDF figé en données vivantes : texte, tableaux, zones ciblées et fichier CSV. C'est la première brique de beaucoup de projets concrets : importer des factures dans une base, alimenter un moteur de recherche, ou préparer des documents pour un pipeline d'IA qui ne sait pas lire un PDF brut.

Quand ton prochain PDF te résistera, souviens-toi : ce n'est pas le document qui est compliqué, c'est ton copier-coller qui est trop court. pdfplumber fait le travail à ta place.

V

Auteur

Vincent

Développeur fullstack & responsable informatique

Développeur fullstack et responsable informatique. Vulgarise l'IA au quotidien : décryptages sans langue de bois, tutoriels concrets et comparatifs d'outils testés sur le terrain.