Lokale scripts
PDF naar Markdown met Python
Bijgewerkt op · pdftomd.tools-team
Wie PDF naar Markdown met Python omzet, doet dat in een script op de eigen computer. Deze gids toont geteste snippets voor twee opensourcebibliotheken en een browsertool voor de dagen dat je liever niets installeert.

Geen Python bij de hand? De browsertool hieronder doet dezelfde klus van PDF naar Markdown, zonder installatie. Zet een bestand met tekstlaag neer en kopieer het resultaat.
Bron-PDF
Sleep een PDF hierheen of klik om te kiezen
Alleen PDF’s met tekst. Scans hebben OCR nodig, en dat doet deze tool niet.
Markdown-voorbeeld
Hier verschijnt de Markdown.
PDF naar Markdown met Python: inrichten in vier stappen
Een lokale pipeline, van installatie tot uitvoerbestanden.
01Omgeving aanmaken
Maak met python -m venv .venv een virtuele omgeving aan en activeer die, zodat de bibliotheken niet in je systeeminstallatie belanden.
Snippets bekijken
02Bibliotheek installeren
Voer pip install pymupdf4llm uit voor algemene Markdown-uitvoer, of pip install pdfplumber als het vooral om tabellen gaat.
Bibliotheek kiezen
03Script uitvoeren
Kopieer een snippet van deze pagina naar een .py-bestand en richt het op je document. Elke run schrijft een .md-bestand dat je kunt openen.
Snippet kopiëren
04Uitvoer controleren
Vergelijk het .md-bestand met het origineel en haal verdwaalde kop- en voetteksten weg voordat de tekst ergens anders verder gaat.
Vergelijken in de browser
Welke Python-bibliotheek voor PDF naar Markdown?
Er is niet één beste bibliotheek om PDF naar Markdown met Python om te zetten; elke bibliotheek weegt snelheid, licentie en tabellen anders af. pymupdf4llm bouwt op PyMuPDF, leest de opmaak en schrijft direct Markdown, inclusief koppen en tabellen met lijnen. Dat maakt het een verstandige standaardkeuze voor notities en retrieval. pdfplumber geeft diepere toegang tot tekens, lijnen en tabelcellen en past daarom bij scripts die vooral om tabelgegevens draaien.
Beide zijn opensourceprojecten van derden, geen producten van deze website. Voor een paar documenten doet de browsertool op deze pagina een vergelijkbare ronde zonder installatie. Voor honderden bestanden volgens een schema is een lokaal Python-script de betere keuze.
- pymupdf4llm: PDF naar Markdown met één aanroep
- pdfplumber: precieze toegang tot cellen van tabellen met lijnen
- Browsertool: geen installatie, geen upload
Grenzen die elke aanpak deelt
Geen van deze opties leest scans uit zichzelf: de browsertool heeft geen OCR, en de bibliotheken hierboven hebben voor pagina’s die alleen uit afbeeldingen bestaan een aparte OCR-stap nodig. Samengevoegde cellen, gedraaide tabellen en tweekoloms opmaak zijn lastig voor elke Python-bibliotheek en voor onze browsertool, dus controleer tabellen met de hand. In de browsertool hebben tabellen zonder randen minstens drie rijen nodig, en de eerste rij wordt altijd de kopregel.

Python-snippets voor PDF naar Markdown
Getest met pymupdf4llm 1.28 en pdfplumber 0.11. Kopieer er een en voer hem lokaal uit.
Eén bestand met pymupdf4llm
Derden · AGPLSnel en opmaakbewust: de uitvoer behoudt koppen en tabellen met lijnen. PyMuPDF valt onder AGPL; controleer de voorwaarden voordat je het in een gesloten product inbouwt.
# pip install pymupdf4llm
import pathlib
import pymupdf4llm
md = pymupdf4llm.to_markdown("report.pdf")
pathlib.Path("report.md").write_text(md, encoding="utf-8")
Tabellen met pdfplumber
Derden · MITHet best voor tabellen met lijnen. Standaard vindt het alleen tabellen met getekende lijnen; rasters zonder randen hebben eigen instellingen nodig. De hulpfunctie schrijft elke tabel als pipe-tabel.
# 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")
Een hele map met pymupdf4llm
Derden · AGPLEén lus: die leest elk bestand in de map pdfs en schrijft per invoer een .md-bestand.
# 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")
Waar een Python-script past
Drie klussen waarbij scripten loont.

Retrieval-pipelines
Laat vóór het indexeren een script draaien dat elke PDF naar Markdown omzet, splits de uitvoer bij de koppen en sla elke sectie op.
LLM-gids lezen
Analyse in een notebook
Haal tabellen met pdfplumber uit een document in een notebook, vergelijk de rijen met het origineel en bewaar de uitvoer naast je analyse.
Snippets bekijken
Tabelextractie
Gaat het vooral om cijfers, dan maakt de hulpfunctie hierboven van tabellen met lijnen pipe-tabellen en kun je de lopende tekst overslaan.
Browsertool proberen
Script of browser: je bestanden blijven lokaal
Een lokaal script stuurt je bestanden nergens heen, en onze browsertool ook niet: het omzetten van PDF naar Markdown draait met pdf.js in de pagina, en het bestand bereikt onze servers nooit.

Markdown weer als pagina’s weergeven
Na een Python-run heb je misschien een printbare versie nodig. De tool aan de andere kant maakt van Markdown A4-pagina’s in de browser.
Verwante tools
Meer pagina’s rond PDF naar Markdown.
Liever zonder installatie? Zet je PDF hier naar Markdown om
Zet een document neer en kopieer schone tekst, of voer de snippets hierboven op je computer uit. Gratis en privé.
Bestand omzettenBronnen
- pymupdf4llm to_markdown() reference — PDF4LLM docs
- PyMuPDF (AGPL-3.0) — GitHub
- pdfplumber (MIT) — GitHub
- pdf.js — Mozilla
Veelgestelde vragen
Vragen over Python-opties, licenties en grenzen.
Wat is de eenvoudigste manier om PDF naar Markdown met Python om te zetten?
pymupdf4llm: installeer het met pip en roep to_markdown aan op een bestand. Je krijgt Markdown met koppen, lijsten en tabellen met lijnen.
Heb ik een account of sleutel nodig?
Nee. De bibliotheken installeer je met pip en ze draaien offline, en de browsertool heeft geen account nodig. Gebruik voor scripts een lokale Python-bibliotheek.
Zijn pymupdf4llm en pdfplumber van jullie?
Nee. Beide zijn opensourceprojecten van derden. pymupdf4llm en PyMuPDF vallen onder AGPL, pdfplumber onder MIT.
Kan een Python-script scans lezen?
Niet uit zichzelf. Pagina’s die alleen uit afbeeldingen bestaan, hebben eerst een OCR-stap nodig. Onze browsertool heeft ook geen OCR en waarschuwt je als een bestand gescand lijkt.
Hoe behoud ik tabellen als ik PDF naar Markdown omzet?
pymupdf4llm schrijft tabellen met lijnen als pipe-tabellen; pdfplumber vindt ze, en de hulpfunctie zet ze om. Tabellen zonder randen vragen bij allebei om fijnafstemming.
Is de browsertool hetzelfde als deze bibliotheken?
Nee. Hij gebruikt pdf.js en eigen opmaakregels, dus de uitvoer kan verschillen. Hij heeft geen installatie nodig en past bij een handvol bestanden.
Uploadt een Python-script mijn bestanden?
Nee. Lokale scripts draaien op je computer, en de browsertool hier verwerkt bestanden zonder upload.