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:

  1. Het extraheert de tekst van de pagina.
  2. 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.

Staafdiagram dat de tokencost vergelijkt van een document van 20 pagina's verzonden als een PDF versus hetzelfde document geconverteerd naar Markdown. De PDF stapelt geëxtraheerde-teksttokens plus per-pagina afbeeldingtokens voor ongeveer 48.000 tokens, terwijl de Markdown-versie alleen teksttokens gebruikt voor ongeveer 11.000 tokens, ongeveer 77 procent minder.

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.

Workflowdiagram: bronbestanden zoals PDF, DOCX, XLSX en PPTX stromen naar MarkItDown, dat een enkel schoon Markdown-bestand uitvoert, dat vervolgens wordt gevoed aan een groot taalmodel of codeeragent. Een tokenmarkering reist langs het pad om het document door de pijplijn te laten bewegen.

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 gestuurdGeconverteerd naar Markdown
Geëxtraheerde tekstjaja
Eén afbeelding per paginaja, elke paginanee
Visuele overheadvollediggeen
Document van 3 pagina's (Bedrock-figuur)~7.000 tokens~1.000 tokens
Document van 20 pagina's (schatting)40.000 tot 70.000 tokens10.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.

Beslissingsdiagram: vraag of je echt de visuele lay-out van het document nodig hebt, zoals grafieken, gescande pagina's of complexe visuele tabellen. Zo nee, converteer het naar Markdown om tokens te besparen, het aanbevolen pad. Zo ja, behoud de PDF zodat de visie van het model de pagina-afbeeldingen direct kan lezen.

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

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.

GratisDownload AgentsRoom

Companion-app: houd je agents onderweg in de gaten

Breng je eigen: Claude, Codex, Antigravity CLI of andere AI-provider.

Download de extensie
Chrome Web Store

Stuur bugs en verzoeken direct naar je openbare backlog.

Een glimp van AgentsRoom in actie.

Meerdere projecten
Multi-provider
Meerdere agenten
Live status
Bestandsverschil & commit
Mobiele metgezel
Live voorbeeld
Agententeams
Browserautomatisering
Backlog-gedreven ontwikkeling
Promptbibliotheek
Vaardighedenbibliotheek
Bekijk alle functies