Scripts locaux

PDF en Markdown avec Python

Mis à jour le · Équipe pdftomd.tools

Passer un PDF en Markdown avec Python, c’est un script sur votre propre machine. Ce guide montre des extraits testés pour deux bibliothèques open source et un outil dans le navigateur pour les jours où vous préférez ne rien installer.

Un document passe par un éditeur de code et ressort en fichier Markdown

Pas de Python sous la main ? L’outil ci-dessous fait la même conversion PDF vers Markdown, sans installation. Déposez un fichier à couche texte et copiez le résultat.

Dans le navigateur · aucun envoi

PDF source

Déposez un PDF ici ou cliquez pour choisir

PDF avec texte uniquement. Les scans demanderaient de l’OCR, ce que cet outil ne fait pas.

Aperçu Markdown

Le Markdown apparaîtra ici.
Installation

PDF en Markdown avec Python : mise en place en quatre étapes

Une chaîne locale, de l’installation aux fichiers de sortie.

  1. Un fichier glissé dans une zone de dépôt
    01

    Créer l’environnement

    Créez un environnement virtuel avec python -m venv .venv et activez-le, pour que les bibliothèques n’atterrissent pas dans votre installation système.

    Voir les extraits
  2. Des fragments de texte regroupés en lignes ordonnées
    02

    Installer une bibliothèque

    Lancez pip install pymupdf4llm pour une sortie Markdown générale, ou pip install pdfplumber si ce sont surtout les tableaux qui comptent.

    Choisir une bibliothèque
  3. Aperçu Markdown avec titres et listes
    03

    Lancer le script

    Copiez un extrait de cette page dans un fichier .py et pointez-le vers votre document. Chaque exécution écrit un fichier .md que vous pouvez ouvrir.

    Copier un extrait
  4. Icônes Markdown et document reliées par des flèches
    04

    Vérifier la sortie

    Comparez le fichier .md à l’original et retirez les en-têtes et pieds de page égarés avant que le texte ne soit traité ailleurs.

    Comparer dans le navigateur
Options

Quelle bibliothèque Python pour du PDF vers Markdown ?

Il n’existe pas une meilleure bibliothèque unique pour passer un PDF en Markdown avec Python ; chacune arbitre différemment entre vitesse, licence et tableaux. pymupdf4llm s’appuie sur PyMuPDF, lit la mise en page et écrit directement du Markdown, titres et tableaux à filets compris. C’est donc un choix par défaut sensé pour les notes et la recherche. pdfplumber donne un accès plus fin aux caractères, aux lignes et aux cellules, ce qui convient aux scripts qui visent surtout les données de tableaux.

Ce sont deux projets open source tiers, pas des produits de ce site. Pour quelques documents, l’outil navigateur de cette page fait un passage comparable sans installation. Pour des centaines de fichiers selon un calendrier, un script Python local est le meilleur choix.

  • pymupdf4llm : du PDF vers Markdown en un appel
  • pdfplumber : accès précis aux cellules des tableaux à filets
  • Outil navigateur : pas d’installation, pas d’envoi

Des limites communes à toutes les approches

Aucune de ces options ne lit les scans toute seule : l’outil navigateur n’a pas d’OCR, et les bibliothèques ci-dessus ont besoin d’une étape d’OCR à part pour les pages qui ne sont que des images. Cellules fusionnées, tableaux pivotés et mises en page sur deux colonnes sont difficiles pour toutes les bibliothèques Python comme pour notre outil, alors vérifiez les tableaux à la main. Dans l’outil navigateur, les tableaux sans bordure demandent au moins trois lignes, et la première ligne devient toujours l’en-tête.

Navigateur ou scriptComparaison
Zone de dépôt avec un cadenas à côté d’un terminal avec un engrenage
À gauche l’outil navigateur sans configuration ; à droite un script Python pour les tâches automatisées.
Extraits

Extraits Python pour passer un PDF en Markdown

Testés avec pymupdf4llm 1.28 et pdfplumber 0.11. Copiez-en un et lancez-le en local.

Un fichier avec pymupdf4llm

Tiers · AGPL

Rapide et attentif à la mise en page : la sortie garde titres et tableaux à filets. PyMuPDF est sous AGPL ; vérifiez les conditions avant de l’intégrer à un produit fermé.

# pip install pymupdf4llm
import pathlib
import pymupdf4llm

md = pymupdf4llm.to_markdown("report.pdf")
pathlib.Path("report.md").write_text(md, encoding="utf-8")

Tableaux avec pdfplumber

Tiers · MIT

Idéal pour les tableaux à filets. Par défaut, il ne trouve que les tableaux avec des lignes tracées ; les grilles sans bordure demandent des réglages. La fonction d’aide écrit chaque tableau en tableau à barres.

# pip install pdfplumber
import pdfplumber

def table_to_md(rows):
    rows = [[(c or "").replace("|", "\\|").strip() for c in r] for r in rows]
    head, body = rows[0], rows[1:]
    lines = ["| " + " | ".join(head) + " |", "|" + " --- |" * len(head)]
    lines += ["| " + " | ".join(r) + " |" for r in body]
    return "\n".join(lines)

with pdfplumber.open("invoice.pdf") as pdf:
    for page in pdf.pages:
        for table in page.extract_tables():
            print(table_to_md(table), end="\n\n")

Tout un dossier avec pymupdf4llm

Tiers · AGPL

Une boucle : elle lit chaque fichier du dossier pdfs et écrit un fichier .md par entrée.

# pip install pymupdf4llm
import pathlib
import pymupdf4llm

out = pathlib.Path("markdown")
out.mkdir(exist_ok=True)
for pdf in sorted(pathlib.Path("pdfs").glob("*.pdf")):
    md = pymupdf4llm.to_markdown(str(pdf))
    (out / f"{pdf.stem}.md").write_text(md, encoding="utf-8")
    print("wrote", out / f"{pdf.stem}.md")
Usages

Là où un script Python a sa place

Trois tâches où le script vaut la peine.

Local d’abord
Traitement local dans le navigateur

Script ou navigateur : vos fichiers restent en local

Un script local n’envoie vos fichiers nulle part, et notre outil navigateur non plus : la conversion PDF vers Markdown tourne avec pdf.js dans la page, et le fichier n’atteint jamais nos serveurs.

Les scripts tournent sur votre machineL’outil navigateur n’envoie rienOptions open source
Autre sens
Flèche à double sens entre une icône Markdown et une icône de document

Refaire des pages à partir du Markdown

Après un passage Python, vous aurez peut-être besoin d’une version imprimable. L’outil d’en face rend le Markdown en pages A4 dans le navigateur.

Outils

Outils associés

D’autres pages autour du PDF vers Markdown.

Pas envie de configurer ? Passez votre PDF en Markdown ici

Déposez un document et copiez un texte propre, ou lancez les extraits ci-dessus sur votre machine. Gratuit et privé.

Convertir un fichier

Sources

  1. pymupdf4llm to_markdown() reference — PDF4LLM docs
  2. PyMuPDF (AGPL-3.0) — GitHub
  3. pdfplumber (MIT) — GitHub
  4. pdf.js — Mozilla
Questions

FAQ

Questions sur les options Python, les licences et les limites.

Quel est le moyen le plus simple de passer un PDF en Markdown avec Python ?

pymupdf4llm : installez-le avec pip et appelez to_markdown sur un fichier. Vous obtenez du Markdown avec titres, listes et tableaux à filets.

Faut-il un compte ou une clé ?

Non. Les bibliothèques s’installent avec pip et tournent hors ligne, et l’outil navigateur ne demande pas de compte. Pour scripter, prenez une bibliothèque Python locale.

pymupdf4llm et pdfplumber viennent-ils de vous ?

Non. Ce sont deux projets open source tiers. pymupdf4llm et PyMuPDF sont sous AGPL, pdfplumber sous MIT.

Un script Python peut-il lire des scans ?

Pas tout seul. Les pages qui ne sont que des images demandent d’abord une étape d’OCR. Notre outil navigateur n’a pas d’OCR non plus et vous prévient quand un fichier semble scanné.

Comment garder les tableaux en passant un PDF en Markdown ?

pymupdf4llm écrit les tableaux à filets en tableaux à barres ; pdfplumber les trouve, et la fonction d’aide les convertit. Les tableaux sans bordure demandent des réglages dans les deux cas.

L’outil navigateur est-il la même chose que ces bibliothèques ?

Non. Il utilise pdf.js et ses propres règles de mise en page, donc la sortie peut différer. Il ne demande aucune installation et convient à une poignée de fichiers.

Un script Python envoie-t-il mes fichiers ?

Non. Les scripts locaux tournent sur votre machine, et l’outil navigateur de cette page traite les fichiers sans les envoyer.