Converteer PDF naar Markdown om LLM Tokens te Besparen: De MarkItDown Gids
PDF's direct naar Claude of een andere LLM voeren verbruikt stilletjes tokens: elke pagina wordt ook omgezet in een afbeelding. Converteer het bestand eerst naar Markdown met MarkItDown, Microsoft's gratis open-source tool, en verlaag je tokenrekening met tot wel 80%. Volledige gids met CLI, Python en MCP setup.
Je laat een PDF van 20 pagina's in Claude vallen, stelt één vraag, en het antwoord komt prima terug. Wat je niet ziet, is de rekening. Voordat je vraag zelfs maar wordt gelezen, kan dat document tienduizenden tokens opslokken. Doe dit een paar keer per dag in een team en je betaalt echt geld om ruwe PDF's in een model te stoppen dat net zo tevreden zou zijn geweest met schone tekst.
Er is een gratis oplossing, en die heeft de hele tijd open voor je gelegen. Converteer het bestand eerst naar Markdown. Deze gids legt precies uit waarom PDF's zo duur zijn, hoeveel je bespaart, en hoe je de conversie in één opdracht uitvoert met MarkItDown, Microsoft's open-source converter.
Waarom een PDF zoveel tokens kost
Hier is het deel dat niemand je vertelt. Wanneer je een PDF aan een LLM geeft, wordt het niet gelezen zoals jij het leest. Volgens Anthropic's eigen PDF-documentatie doet het systeem twee dingen met elke pagina:
- Het extraheert de tekst van de pagina.
- Het converteert de hele pagina naar een afbeelding en stuurt die afbeelding samen met de tekst.
Die tweede stap is de stille tokenval. Het model leest niet alleen woorden, het kijkt ook naar een afbeelding van elke pagina om grafieken, tabellen en lay-out te begrijpen. Je betaalt voor beide.
De cijfers van Anthropic maken de kosten concreet. Alleen de geëxtraheerde tekst kost 1.500 tot 3.000 tokens per pagina, afhankelijk van de dichtheid. Daarbovenop draagt elke pagina de kosten van een afbeelding. Een onthullend datapunt van de Amazon Bedrock-integratie: de volledige visuele PDF-modus gebruikt ongeveer 7.000 tokens voor een PDF van 3 pagina's, terwijl de platte tekstextractie van dezelfde drie pagina's ongeveer 1.000 tokens gebruikt. Dat is een verschil van 7x, en het is volledig de afbeeldingen per pagina.
Schaal dat op naar een echt document. Een dicht verslag van 20 pagina's kan ergens tussen de 40.000 en 70.000 tokens belanden zodra elke pagina is gerasterd naar een afbeelding. Je hebt nog niets gevraagd. Je hebt alleen het bestand geopend.
Het oranje-rode blok is pure overhead: één afbeelding voor elke pagina, ongeacht of de pagina visuals heeft die het bekijken waard zijn.
De oplossing: voer schone Markdown in
De meeste documenten hoeven niet gezien te worden. Een contract, een specificatie, een onderzoeksartikel, een presentatie vol met opsommingstekens: dat alles is tekst in een lay-out. Als je de lay-out wegstript en de structuur behoudt, verliest het model niets wat het eigenlijk nodig had.
Dat is wat Markdown je biedt. Het is zo dicht bij platte tekst als een formaat kan komen, maar het codeert nog steeds de structuur die ertoe doet: koppen, lijsten, tabellen, links, codeblokken, vetgedrukte en benadrukte tekst. Mainstream LLM's zijn getraind op enorme hoeveelheden Markdown, dus ze parseren het van nature en moeiteloos. Microsoft, die MarkItDown bouwt, zegt het eenvoudig: Markdown is "uiterst dicht bij platte tekst, met minimale opmaak of formattering, maar biedt nog steeds een manier om belangrijke documentstructuur weer te geven."
Converteer je PDF naar Markdown en je verwijdert de afbeeldingen per pagina volledig. Geen gerasterde pagina's, geen visuele overhead, alleen de gestructureerde tekst die het model toch al zou lezen. Dat is waar de besparingen vandaan komen.
Maak kennis met MarkItDown, Microsoft's gratis converter
MarkItDown is een lichte Python-tool van Microsoft, uitgebracht onder de permissieve MIT-licentie en een van de meest gewaardeerde ontwikkelaarstools op GitHub, met meer dan 135.000 sterren. Zijn enige taak is om rommelige real-world bestanden om te zetten in schone Markdown die een LLM goedkoop kan lezen.
Het is niet alleen een PDF-tool. Het converteert een lange lijst van formaten:
- PDF documenten
- Word (
.docx) - Excel (
.xlsx,.xls) - PowerPoint (
.pptx) - Afbeeldingen, met EXIF-metadata en OCR voor tekst in de afbeelding
- Audio, met metadata en spraaktranscriptie
- HTML pagina's
- CSV, JSON, en XML data
- ZIP archieven (het doorloopt de inhoud)
- YouTube URL's (het haalt het transcript op)
- EPub e-boeken
- Outlook berichten (
.msg)
Eén tool, één uitvoerformaat, voor bijna alles wat je anders als een zwaar binair bestand naar een model zou hebben gegooid.
Installeer MarkItDown in 30 seconden
Het is een normaal Python-pakket. Om alles te krijgen, installeer je de all extra:
pip install 'markitdown[all]'
Als je je alleen zorgen maakt over een paar formaten en een slankere installatie wilt, vraag dan alleen om die extra's:
pip install 'markitdown[pdf, docx, pptx]'
De beschikbare opties omvatten [all], [pdf], [docx], [pptx], [xlsx], [xls], [outlook], [audio-transcription], en [youtube-transcription], onder anderen.
Converteer een PDF naar Markdown vanaf de opdrachtregel
Het snelste pad is de CLI. Wijs het naar een bestand en stuur de uitvoer waar je maar wilt:
markitdown report.pdf -o report.md
Of gebruik een eenvoudige omleiding, die hetzelfde doet:
markitdown report.pdf > report.md
Je kunt ook een bestand rechtstreeks inlezen:
cat report.pdf | markitdown
Dat is de hele workflow. Je hebt nu een report.md die je aan elk model kunt geven, in een repository kunt plaatsen, of in een chat kunt plakken, en het kost een fractie van het origineel.
Zwaar bestand in, agent-klare Markdown uit, één opdracht ertussen.
Converteer in Python (en batch een hele map)
Als je dit in een pijplijn wilt integreren, is de Python API net zo kort:
from markitdown import MarkItDown
md = MarkItDown(enable_plugins=False)
result = md.convert("report.pdf")
print(result.text_content)
result.text_content is je Markdown-string, klaar om naar schijf te schrijven of aan een model te voeren. Om een hele map met documenten in één keer te converteren, loop je eroverheen:
from pathlib import Path
from markitdown import MarkItDown
md = MarkItDown(enable_plugins=False)
for src in Path("docs").glob("*.pdf"):
out = src.with_suffix(".md")
out.write_text(md.convert(str(src)).text_content, encoding="utf-8")
Voer dat één keer uit en een directory met dure PDF's wordt een directory met goedkope, gestructureerde Markdown die elke agent bij elke beurt kan lezen zonder opnieuw de visuele belasting te betalen.
Hoeveel bespaar je eigenlijk?
Het eerlijke antwoord: het hangt af van het document, maar de winst is groot en consistent. Hier is de vorm ervan voor een typisch tekstzwaar bestand.
| PDF naar het model gestuurd | Geconverteerd naar Markdown | |
|---|---|---|
| Geëxtraheerde tekst | ja | ja |
| Eén afbeelding per pagina | ja, elke pagina | nee |
| Visuele overhead | volledig | geen |
| Document van 3 pagina's (Bedrock-figuur) | ~7.000 tokens | ~1.000 tokens |
| Document van 20 pagina's (schatting) | 40.000 tot 70.000 tokens | 10.000 tot 15.000 tokens |
Voor een document waarvan de waarde in de woorden ligt, vermindert het converteren naar Markdown routinematig de tokencost met ruim de helft, en vaak met 80% of meer. De besparingen zijn geen magie: je betaalt simpelweg niet langer om een afbeelding van elke pagina te verzenden wanneer het model alleen de tekst nodig had.
Markdown is natuurlijk niet letterlijk gratis. De geëxtraheerde tekst kost nog steeds tokens. Maar die textkosten zijn de bodemprijs die je altijd zou betalen. Wat je verwijdert, is de stapel afbeeldingen per pagina die erbovenop zit.
Wanneer de PDF te behouden (niet over-optimaliseren)
Conversie is de juiste standaard, geen universele regel. Behoud de originele PDF wanneer de visuele lay-out het punt is:
- Grafieken en diagrammen die je daadwerkelijk door het model wilt laten lezen. Als de betekenis in een staafdiagram ligt, doet de afbeelding echt werk.
- Gesaneerde documenten die afbeeldingen van tekst zijn. MarkItDown kan ze OCR'en, maar als de herkenning wankel is, kan de eigen visie van het model de pagina betrouwbaarder lezen.
- Complexe visuele tabellen of formulieren waarbij positie en uitlijning betekenis hebben die in Markdown verloren gaat.
- Infographics en design-zware pagina's waarbij de lay-out de inhoud is.
Voor al het andere, wat de meeste documenten zijn, wint Markdown.
De vraag is nooit "PDF of Markdown" in abstracto. Het is "moet het model deze pagina zien, of alleen lezen?"
Voorbij PDF's: Word, Excel, PowerPoint, zelfs YouTube
Dezelfde one-liner werkt op de rest van je documentstapel. Een Word-document, een spreadsheet, een presentatie, een webpagina, zelfs het transcript van een YouTube-video, alles stort in tot schone Markdown op dezelfde manier:
markitdown deck.pptx -o deck.md
markitdown budget.xlsx -o budget.md
markitdown https://www.youtube.com/watch?v=VIDEO_ID -o transcript.md
Als je workflow regelmatig context uit Office-bestanden of het web haalt en aan een model geeft, is alles eerst standaardiseren naar Markdown een van de goedkoopste, meest impactvolle gewoonten die je kunt opbouwen.
Sluit het aan op je codeeragents met de MarkItDown MCP-server
Als je met codeeragents werkt, wordt dit nog beter. MarkItDown levert een officiële MCP (Model Context Protocol) server, zodat je agent zelf bestanden kan converteren, midden in een taak, zonder dat je iets met de hand hoeft te doen.
Installeer het en voer het uit via stdio:
pip install markitdown-mcp
markitdown-mcp
De server biedt één tool, convert_to_markdown(uri), waarbij de uri elke http:, https:, file:, of data: URI kan zijn. Sluit het één keer aan op je agent en het kan een PDF, een spreadsheet of een webpagina ophalen en op aanvraag omzetten naar Markdown, waarbij het de hele tijd teksttokenprijzen betaalt in plaats van visuele prijzen.
Dit is precies het soort ding dat zich opstapelt wanneer je meer dan één agent runt. In AgentsRoom, de multi-agent cockpit, configureer je een MCP-server één keer en elke agent in de kamer erft het. Converteer je referentiedocumenten naar .md, commit ze naar de repository, en elke agent leest goedkope, gestructureerde tekst bij elke beurt in plaats van steeds dezelfde PDF opnieuw te rasteren. Dezelfde discipline die een enkele sessie slank houdt, houdt een hele vloot betaalbaar, wat van belang is wanneer je codeeragents parallel runt en elk van hen je gedeelde context leest.
Het past ook natuurlijk bij de manier waarop goede agentopstellingen al context beheren. Als je een AGENTS.md contextbestand bijhoudt, houdt het richten op lichte .md-referenties in plaats van ruwe PDF's het contextvenster strak, wat, zoals we hebben behandeld in de kanarietrick voor het detecteren van contextdrift, de helft van de strijd is in elke lange sessie.
De conclusie
Ruwe PDF's aan een LLM voeren is een belasting die je zonder het te merken hebt betaald, omdat elke pagina stilletjes in een afbeelding wordt omgezet. MarkItDown verwijdert die belasting gratis: één opdracht verandert bijna elk bestand in schone Markdown, je verlaagt tot 80% van de tokencost, en het model antwoordt net zo goed, vaak beter, omdat het structuur leest in plaats van te turen naar pagina-afbeeldingen.
Eerst converteren, dan vragen. Je tokenrekening en je contextvenster zullen je beide dankbaar zijn.
Klaar om dit over een heel team van agents te laten draaien in plaats van één terminal? Download AgentsRoom, zie wat elke agent ondersteunt in de provider compatibiliteitsmatrix, en lees meer over multi-provider ondersteuning.
Blijf lezen
Hoe je de Claude Code-tokenkosten kunt verlagen zonder te vertragen
Claude Code rekent per token, en het grootste deel van de uitgaven is onzichtbaar: opgeblazen context, het verkeerde model, ruwe PDFs, agents die dezelfde bestanden opnieuw lezen. Hier is waar het geld daadwerkelijk naartoe gaat en hoe je het kunt verminderen, met de gewoonten en tools die je rekening laag houden zonder je te vertragen.
Lees het artikelHoe te Communiceren met je AI Agents: Claude, Codex, Antigravity, Grok Build
Code is niet langer de bottleneck, communicatie is dat wel. Hier is hoe je met je AI agents Claude, Codex, Antigravity en Grok Build kunt praten om sneller, preciezer en met minder tokens te leveren.
Lees het artikelAchtergrond Codering Agents: Zet je AI op de Nachtploeg
Een coderingsagent heeft niet nodig dat je toekijkt. Hier is hoe je agents op de achtergrond kunt laten draaien terwijl je aan iets anders werkt, en hoe je een hele vloot 's nachts kunt laten coderen terwijl je slaapt.
Lees het artikel
Download AgentsRoom
Voer je AI-agenten (Claude, Codex, Antigravity CLI, OpenCode, Aider, Grok Build, Mistral Vibe, Kimi Code) uit op al je projecten, vanuit één enkel venster.
Companion-app: houd je agents onderweg in de gaten
Breng je eigen: Claude, Codex, Antigravity CLI of andere AI-provider.
Stuur bugs en verzoeken direct naar je openbare backlog.
Een glimp van AgentsRoom in actie.