Tableaux vs texte brut : pourquoi c'est important
Avant de choisir une méthode, vérifiez quel type de données votre PDF contient. L'approche dépend entièrement de la structure du PDF :
| Type de PDF | Ce qu'il contient | Meilleure méthode |
|---|---|---|
| Tableaux natifs | PDF basé sur du texte avec bordures de tableau visibles et lignes de grille | N'importe quelle méthode — CleverUtils est la plus rapide |
| Tableaux sans bordure | Colonnes alignées par espacement, aucune grille visible | Python (pdfplumber) pour la précision |
| PDF numérisé | Image d'une page imprimée (pas de texte sélectionnable) | CleverUtils avec OCR activé |
| Contenu mixte | Tableaux + paragraphes + en-têtes sur la même page | Python pour l'extraction sélective |
Test rapide : ouvrez votre PDF et essayez de sélectionner du texte avec votre souris. Si vous pouvez mettre en surbrillance des mots individuels, c'est un PDF natif (basé sur du texte). Si la page entière se sélectionne comme un seul bloc, c'est une image numérisée — vous aurez besoin d'OCR.
Méthode 1 : Convertir en ligne avec CleverUtils
L'option la plus rapide pour la plupart des utilisateurs. CleverUtils traite les PDF natifs, les tableaux sans bordure et même les documents numérisés avec OCR. Aucune installation, aucun compte requis.
- Allez sur cleverutils.com/fr/pdf-to-csv
- Téléchargez votre PDF — glissez-déposez ou cliquez sur « Choisir un fichier PDF ». Maximum 100 Mo.
- Pour les PDF numérisés : sélectionnez votre langue OCR dans la liste déroulante avant de convertir.
- Cliquez sur « Convertir en CSV » — la conversion prend quelques secondes pour la plupart des fichiers.
- Téléchargez le CSV — ouvrez-le dans Excel, Google Sheets ou importez-le dans votre base de données.
CleverUtils traite toutes les pages de votre PDF et combine les données extraites dans un seul fichier CSV. Les fichiers sont cryptés lors du transfert et supprimés automatiquement dans 2 heures.
Méthode 2 : Python avec pdfplumber
pdfplumber est la meilleure bibliothèque Python pour extraire des tableaux des PDF. Elle comprend les tableaux avec et sans bordure, vous donne les coordonnées de chaque caractère et vous permet d'affiner les paramètres d'extraction.
Installer pdfplumber
pip install pdfplumber
Extraction de tableaux basique
Ce script extrait tous les tableaux de chaque page d'un PDF et les écrit dans un fichier CSV :
import pdfplumber
import csv
with pdfplumber.open("invoice.pdf") as pdf:
all_rows = []
for page in pdf.pages:
table = page.extract_table()
if table:
all_rows.extend(table)
with open("output.csv", "w", newline="") as f:
writer = csv.writer(f)
writer.writerows(all_rows)
print(f"Extracted {len(all_rows)} rows to output.csv")
Gestion des tableaux sans bordure
Lorsque les tableaux n'ont pas de bordures visibles, pdfplumber peut toujours détecter les colonnes en utilisant les positions des caractères. Utilisez extract_table() avec des paramètres personnalisés :
# Pour les PDF sans bordures de tableau visibles
table_settings = {
"vertical_strategy": "text",
"horizontal_strategy": "text",
"snap_y_tolerance": 5,
"intersection_x_tolerance": 15,
}
with pdfplumber.open("report.pdf") as pdf:
page = pdf.pages[0]
table = page.extract_table(table_settings)
for row in table:
print(row)
Convertir plusieurs PDF en masse
import pdfplumber
import csv
from pathlib import Path
for pdf_file in Path("./invoices").glob("*.pdf"):
csv_path = pdf_file.with_suffix(".csv")
with pdfplumber.open(pdf_file) as pdf:
rows = []
for page in pdf.pages:
table = page.extract_table()
if table:
rows.extend(table)
with open(csv_path, "w", newline="") as f:
csv.writer(f).writerows(rows)
print(f"{pdf_file.name} -> {csv_path.name} ({len(rows)} rows)")
Méthode 3 : Microsoft Excel (Obtenir les données)
Microsoft 365 (Excel pour 365) peut importer directement des fichiers PDF à l'aide de la fonctionnalité Power Query / Obtenir les données. Cette option est non disponible dans Excel 2016 ou 2019 autonome — elle nécessite un abonnement Microsoft 365 actif. Elle fonctionne bien pour les tableaux simples et bien structurés.
- Ouvrez Excel et créez un nouveau classeur vierge.
- Allez à Données → Obtenir les données → À partir d'un fichier → À partir d'un PDF.
- Sélectionnez votre PDF dans le navigateur de fichiers.
- Choisissez le ou les tableau(x) que vous souhaitez importer dans le panneau Navigateur. Excel affichera un aperçu de chaque tableau détecté.
- Cliquez sur « Charger » pour importer les données dans votre feuille de calcul.
- Enregistrer en CSV : Fichier → Enregistrer sous → choisissez « CSV (virgule délimitée) (*.csv) » comme format.
Limitation : l'importation de PDF d'Excel fonctionne mieux avec les tableaux simples et délimités. Elle a du mal avec les mises en page multi-colonnes, les cellules fusionnées et les tableaux sans bordure. Pour les PDF complexes, utilisez CleverUtils ou Python à la place.
Méthode 4 : Google Sheets
Google Sheets n'importe pas directement les PDF, mais vous pouvez utiliser l'OCR intégré de Google Drive pour extraire d'abord le texte, puis le copier dans Sheets.
- Téléchargez le PDF vers Google Drive.
- Cliquez avec le bouton droit sur le PDF → Ouvrir avec → Google Docs. Google utilisera OCR sur le fichier et le convertira en document modifiable.
- Sélectionnez les données du tableau dans le Google Doc et copiez-les (Ctrl+C / Cmd+C).
- Ouvrez une nouvelle Google Sheet et collez (Ctrl+V / Cmd+V). Les données rempliront les cellules.
- Nettoyez les données — ajustez les largeurs de colonne, supprimez les lignes supplémentaires, corrigez les erreurs d'OCR.
- Télécharger en CSV : Fichier → Télécharger → Valeurs séparées par des virgules (.csv).
Conseil : L'OCR de Google fonctionne remarquablement bien pour les PDF numérisés. Mais la structure du tableau peut ne pas survivre à l'étape de copie-collage intact. Pour de meilleurs résultats avec les données tabulaires, utilisez le convertisseur direct PDF vers CSV de CleverUtils.
Comparaison des méthodes
| Fonctionnalité | CleverUtils | Python | Excel | Google Sheets |
|---|---|---|---|---|
| Difficulté | Facile | Avancé | Moyen | Facile |
| Installation | Aucune (navigateur) | Python + pip | Microsoft 365 | Aucune (navigateur) |
| Tableaux délimités | Excellent | Excellent | Bon | Équitable |
| Tableaux sans bordure | Bon | Excellent | Mauvais | Mauvais |
| PDF numérisés (OCR) | Intégré | Avec pytesseract | Non supporté | Via Google Drive |
| Traitement par lots | Un fichier à la fois | Illimité | Un fichier à la fois | Un fichier à la fois |
| Meilleur pour | Conversions rapides ponctuelles | Automatisation & PDF complexes | Utilisateurs d'Excel avec tableaux simples | Extraction rapide avec OCR |
Conseils pour une sortie CSV propre
- Vérifiez la ligne d'en-tête. Certains PDF ont des en-têtes multi-lignes qui se divisent en lignes CSV distinctes. Après la conversion, vérifiez que vos en-têtes de colonne se trouvent sur une seule ligne.
- Attention aux cellules fusionnées. Les tableaux PDF fusionnent souvent les cellules pour les titres de groupe. Ceux-ci deviennent généralement des cellules vides en CSV. Remplissez-les manuellement ou avec un script après l'extraction.
- Gérez les caractères spéciaux. Les virgules, les guillemets et les sauts de ligne à l'intérieur des valeurs de cellule peuvent endommager l'analyse CSV. Les bons convertisseurs (CleverUtils, pdfplumber) gèrent automatiquement l'échappement. Si le vôtre ne le fait pas, enveloppez les valeurs entre guillemets doubles.
- L'encodage compte. Utilisez l'encodage UTF-8 lors de l'enregistrement du CSV pour préserver les caractères accentués, les symboles de devise et le texte non-latin. En Python :
open("out.csv", "w", encoding="utf-8-sig")(le-sigajoute une BOM qui aide Excel à détecter UTF-8). - Tableaux multi-pages. Lorsqu'un tableau s'étend sur plusieurs pages PDF, certains outils extraient chaque page comme un tableau séparé. En Python, ignorez la ligne d'en-tête sur les pages suivantes pour éviter les doublons.
Problèmes courants et solutions
| Problème | Cause | Solution |
|---|---|---|
| Sortie CSV vide | PDF numérisé (basé sur une image) | Activez l'OCR dans CleverUtils ou utilisez pytesseract |
| Toutes les données dans une colonne | Excel a ouvert CSV avec un délimiteur incorrect | Utilisez Données → Texte en colonnes → Délimité → Virgule |
| Colonnes désalignées | Tableau sans bordure avec espacement inégal | Utilisez pdfplumber avec vertical_strategy: "text" |
| Caractères brouillés | Encodage incorrect (généralement Latin-1 vs UTF-8) | Ouvrez dans un éditeur de texte, enregistrez en UTF-8 |
| En-têtes en double | Tableau multi-page avec en-têtes répétés | En Python, ignorez la ligne 0 sur les pages après la première |