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.

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.
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.
PDF en Markdown avec Python : mise en place en quatre étapes
Une chaîne locale, de l’installation aux fichiers de sortie.
01Cré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
02Installer 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
03Lancer 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
04Vé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
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.

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 · AGPLRapide 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 · MITIdé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 · AGPLUne 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")
Là où un script Python a sa place
Trois tâches où le script vaut la peine.

Pipelines de recherche
Avant l’indexation, lancez un script qui passe chaque PDF en Markdown, découpez la sortie aux titres et stockez chaque section.
Lire le guide LLM
Analyse dans un notebook
Extrayez des tableaux avec pdfplumber dans un notebook, comparez les lignes à l’original et gardez la sortie à côté de votre analyse.
Voir les extraits
Extraction de tableaux
Si ce sont surtout les chiffres qui comptent, la fonction d’aide ci-dessus transforme les tableaux à filets en tableaux à barres ; vous pouvez ignorer le texte courant.
Essayer l’outil 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.

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 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 fichierSources
- pymupdf4llm to_markdown() reference — PDF4LLM docs
- PyMuPDF (AGPL-3.0) — GitHub
- pdfplumber (MIT) — GitHub
- pdf.js — Mozilla
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.