Konwersja PDF na Markdown, aby oszczędzać tokeny LLM: poradnik MarkItDown

Podanie PDF prosto do Claude lub dowolnego LLM po cichu pożera tokeny: każda strona jest też zamieniana w obraz. Najpierw przekonwertuj plik na Markdown za pomocą MarkItDown, darmowego narzędzia open source od Microsoftu, i obetnij rachunek za tokeny nawet o 80%. Pełny poradnik: CLI, Python i serwer MCP.

Wrzucasz 20-stronicowy PDF do Claude, zadajesz jedno pytanie i odpowiedź wraca bez problemu. Czego nie widzisz, to rachunek. Zanim Twoje pytanie zostanie w ogóle przeczytane, ten dokument może pochłonąć dziesiątki tysięcy tokenów. Zrób tak kilka razy dziennie w skali zespołu, a płacisz prawdziwe pieniądze za wpychanie surowych PDF-ów do modelu, który równie chętnie zadowoliłby się czystym tekstem.

Istnieje darmowe rozwiązanie i przez cały czas leżało na widoku. Najpierw przekonwertuj plik na Markdown. Ten poradnik wyjaśnia dokładnie, dlaczego PDF-y są tak kosztowne, ile oszczędzasz i jak wykonać konwersję jedną komendą za pomocą MarkItDown, konwertera open source od Microsoftu.

Dlaczego PDF kosztuje tyle tokenów

Oto część, o której nikt Ci nie mówi. Kiedy podajesz PDF do LLM, nie jest on czytany tak, jak Ty go czytasz. Zgodnie z oficjalną dokumentacją PDF Anthropic system robi z każdą pojedynczą stroną dwie rzeczy:

  1. Wyodrębnia tekst ze strony.
  2. Zamienia całą stronę w obraz, a następnie wysyła ten obraz obok tekstu.

Ten drugi krok to cichy pożeracz tokenów. Model nie tylko czyta słowa, ogląda też zdjęcie każdej strony, żeby zrozumieć wykresy, tabele i układ. Płacisz za oba.

Liczby Anthropic czynią ten koszt namacalnym. Sam wyodrębniony tekst to od 1500 do 3000 tokenów na stronę w zależności od gęstości. Do tego każda strona niesie koszt obrazu. Wymowna dana z integracji z Amazon Bedrock: pełny tryb wizualny PDF zużywa około 7000 tokenów na PDF liczący 3 strony, podczas gdy zwykłe wyodrębnienie tekstu z tych samych trzech stron zużywa około 1000 tokenów. To różnica 7-krotna i pochodzi w całości z obrazów strona po stronie.

Przełóż to na prawdziwy dokument. Gęsty, 20-stronicowy raport może wylądować gdziekolwiek między 40 000 a 70 000 tokenów, gdy każda strona zostanie zrasteryzowana do obrazu. O nic jeszcze nie zapytałeś. Po prostu otworzyłeś plik.

Wykres słupkowy porównujący koszt w tokenach jednego 20-stronicowego dokumentu wysłanego jako PDF z tym samym dokumentem przekonwertowanym na Markdown. PDF nakłada na siebie tokeny wyodrębnionego tekstu plus tokeny obrazów strona po stronie, dając około 48 000 tokenów, podczas gdy wersja Markdown używa tylko tokenów tekstu, około 11 000 tokenów, czyli mniej więcej o 77 procent mniej.

Pomarańczowo-czerwony blok to czysty narzut: jeden obraz na każdą stronę, niezależnie od tego, czy na stronie jest coś wizualnego wartego obejrzenia.

Rozwiązanie: podawaj zamiast tego czysty Markdown

Większość dokumentów nie musi być oglądana. Umowa, specyfikacja, artykuł naukowy, zestaw slajdów pełen punktów: to wszystko jest tekstem ubranym w układ. Jeśli usuniesz układ, a zachowasz strukturę, model nie traci nic, czego naprawdę potrzebował.

Właśnie to daje Ci Markdown. Jest mniej więcej tak blisko czystego tekstu, jak format tylko może być, a mimo to wciąż koduje strukturę, która ma znaczenie: nagłówki, listy, tabele, linki, bloki kodu, pogrubienie i wyróżnienie. Popularne LLM-y są trenowane na ogromnych ilościach Markdown, więc parsują go natywnie i bez wysiłku. Microsoft, który tworzy MarkItDown, ujmuje to wprost: Markdown jest „niezwykle bliski czystemu tekstowi, z minimalnym znacznikowaniem lub formatowaniem, a mimo to daje sposób na przedstawienie ważnej struktury dokumentu".

Przekonwertuj swój PDF na Markdown, a całkowicie pozbywasz się obrazów strona po stronie. Żadnych zrasteryzowanych stron, żadnego narzutu wizji, tylko ustrukturyzowany tekst, który model i tak miał przeczytać. Stąd właśnie biorą się oszczędności.

Poznaj MarkItDown, darmowy konwerter Microsoftu

MarkItDown to lekkie narzędzie w Pythonie od Microsoftu, wydane na permisywnej licencji MIT i jedno z najczęściej gwiazdkowanych narzędzi deweloperskich na GitHubie, z ponad 135 000 gwiazdek. Jego jedyne zadanie: zamieniać niechlujne pliki z prawdziwego świata w czysty Markdown, który LLM może przeczytać tanio.

To nie tylko narzędzie do PDF-ów. Konwertuje długą listę formatów:

  • Dokumenty PDF
  • Word (.docx)
  • Excel (.xlsx, .xls)
  • PowerPoint (.pptx)
  • Obrazy, z metadanymi EXIF i OCR dla tekstu wewnątrz zdjęcia
  • Audio, z metadanymi i transkrypcją mowy
  • Strony HTML
  • Dane CSV, JSON i XML
  • Archiwa ZIP (przechodzi przez ich zawartość)
  • Adresy YouTube (pobiera transkrypcję)
  • E-booki EPub
  • Wiadomości Outlook (.msg)

Jedno narzędzie, jeden format wyjściowy, dla niemal wszystkiego, co inaczej rzuciłbyś modelowi jako ciężki plik binarny.

Zainstaluj MarkItDown w 30 sekund

To zwykły pakiet Pythona. Aby dostać wszystko, zainstaluj extra all:

pip install 'markitdown[all]'

Jeśli zależy Ci tylko na kilku formatach i chcesz lżejszą instalację, poproś tylko o te extra:

pip install 'markitdown[pdf, docx, pptx]'

Dostępne opcje obejmują między innymi [all], [pdf], [docx], [pptx], [xlsx], [xls], [outlook], [audio-transcription] i [youtube-transcription].

Przekonwertuj PDF na Markdown z linii komend

Najszybsza droga to CLI. Wskaż mu plik i wyślij wynik tam, gdzie chcesz:

markitdown report.pdf -o report.md

Albo użyj zwykłego przekierowania, które robi to samo:

markitdown report.pdf > report.md

Możesz też przesłać plik prosto przez potok:

cat report.pdf | markitdown

To cały przepływ pracy. Masz teraz report.md, który możesz podać dowolnemu modelowi, wrzucić do repozytorium albo wkleić do czatu, a kosztuje on ułamek oryginału.

Diagram przepływu pracy: pliki źródłowe takie jak PDF, DOCX, XLSX i PPTX wpływają do MarkItDown, który wyświetla jeden czysty plik Markdown, ten zaś jest następnie podawany dużemu modelowi językowemu lub agentowi kodującemu. Znacznik tokena podróżuje wzdłuż ścieżki, pokazując dokument przesuwający się przez potok.

Ciężki plik na wejściu, gotowy dla agenta Markdown na wyjściu, jedna komenda pomiędzy.

Konwersja w Pythonie (i przetwarzanie całego folderu)

Jeśli wpinasz to w potok, API Pythona jest równie krótkie:

from markitdown import MarkItDown

md = MarkItDown(enable_plugins=False)
result = md.convert("report.pdf")
print(result.text_content)

result.text_content to Twój ciąg Markdown, gotowy do zapisania na dysku lub podania modelowi. Aby przekonwertować cały folder dokumentów w jednym przebiegu, przejdź po nim pętlą:

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")

Uruchom to raz, a katalog kosztownych PDF-ów staje się katalogiem taniego, ustrukturyzowanego Markdown, który dowolny agent może czytać w każdej turze, nie płacąc ponownie podatku za wizję.

Ile faktycznie oszczędzasz?

Szczera odpowiedź: to zależy od dokumentu, ale zysk jest duży i stały. Oto jak wygląda to dla typowego pliku nasyconego tekstem.

PDF wysłany do modeluPrzekonwertowany na Markdown
Wyodrębniony teksttaktak
Jeden obraz na stronętak, każda stronanie
Narzut wizjipełnybrak
Dokument 3-stronicowy (liczba z Bedrock)~7000 tokenów~1000 tokenów
Dokument 20-stronicowy (szacunek)40 000 do 70 000 tokenów10 000 do 15 000 tokenów

Dla dokumentu, którego wartość tkwi w słowach, konwersja na Markdown rutynowo obcina koszt w tokenach o znacznie ponad połowę, a często o 80% lub więcej. Te oszczędności nie są magią: po prostu nie płacisz już za wysyłanie zdjęcia każdej strony, gdy model potrzebował tylko tekstu.

Markdown nie jest oczywiście dosłownie darmowy. Wyodrębniony tekst nadal kosztuje tokeny. Ale ten koszt tekstu to podłoga, którą i tak miałeś zapłacić. To, co usuwasz, to stos obrazów strona po stronie spoczywający na wierzchu.

Kiedy zachować PDF (nie przesadzaj z optymalizacją)

Konwersja to dobry domyślny odruch, nie uniwersalna reguła. Zachowaj oryginalny PDF, gdy wizualny układ jest właśnie sednem:

  • Wykresy i grafy, które model naprawdę musi odczytać. Jeśli sens żyje w wykresie słupkowym, obraz wykonuje prawdziwą pracę.
  • Dokumenty skanowane, które są obrazami tekstu. MarkItDown potrafi je przepuścić przez OCR, ale jeśli rozpoznawanie jest niepewne, własna wizja modelu odczyta stronę czasem bardziej niezawodnie.
  • Złożone wizualne tabele lub formularze, w których pozycja i wyrównanie niosą sens, który spłaszcza się w Markdown.
  • Infografiki i mocno dopracowane projektowo strony, na których układ jest treścią.

Dla wszystkiego pozostałego, czyli większości dokumentów, Markdown wygrywa.

Diagram decyzyjny: zapytaj, czy naprawdę potrzebujesz wizualnego układu dokumentu, takiego jak wykresy, strony skanowane lub złożone wizualne tabele. Jeśli nie, przekonwertuj go na Markdown, aby oszczędzać tokeny, to zalecana ścieżka. Jeśli tak, zachowaj PDF, aby wizja modelu mogła bezpośrednio odczytać obrazy stron.

Pytanie nigdy nie brzmi „PDF czy Markdown" w oderwaniu. Brzmi „czy model musi zobaczyć tę stronę, czy tylko ją przeczytać?"

Poza PDF-ami: Word, Excel, PowerPoint, a nawet YouTube

Ta sama jednolinijkowa komenda działa na reszcie Twojego stosu dokumentów. Dokument Word, arkusz kalkulacyjny, zestaw slajdów, strona internetowa, a nawet transkrypcja filmu na YouTube, wszystko to zwija się w czysty Markdown w ten sam sposób:

markitdown deck.pptx -o deck.md
markitdown budget.xlsx -o budget.md
markitdown https://www.youtube.com/watch?v=VIDEO_ID -o transcript.md

Jeśli Twój przepływ pracy polega na regularnym wyciąganiu kontekstu z plików Office lub z sieci i podawaniu go modelowi, ujednolicenie wszystkiego najpierw do Markdown to jeden z najtańszych i najbardziej opłacalnych nawyków, jakie możesz wyrobić.

Wepnij to do swoich agentów kodujących przez serwer MCP MarkItDown

Jeśli pracujesz z agentami kodującymi, robi się jeszcze lepiej. MarkItDown dostarcza oficjalny serwer MCP (Model Context Protocol), więc Twój agent może sam konwertować pliki, w trakcie zadania, bez uruchamiania czegokolwiek ręcznie.

Zainstaluj go i uruchom przez stdio:

pip install markitdown-mcp
markitdown-mcp

Serwer udostępnia jedno narzędzie, convert_to_markdown(uri), gdzie uri może być dowolnym URI typu http:, https:, file: lub data:. Wepnij go raz do swojego agenta, a może on pobrać PDF, arkusz kalkulacyjny lub stronę internetową i zamienić ją w Markdown na żądanie, płacąc przez cały czas ceny tokenów tekstu zamiast cen wizji.

To dokładnie ten rodzaj rzeczy, który kumuluje się, gdy uruchamiasz więcej niż jednego agenta. W AgentsRoom, kokpicie multi-agentowym, konfigurujesz serwer MCP raz, a każdy agent w pokoju go dziedziczy. Przekonwertuj swoje dokumenty referencyjne na .md, zatwierdź je w repozytorium, a każdy agent czyta tani, ustrukturyzowany tekst w każdej turze, zamiast rasteryzować ten sam PDF w kółko. Ta sama dyscyplina, która utrzymuje pojedynczą sesję w ryzach, utrzymuje całą flotę w przystępnej cenie, co ma znaczenie, gdy uruchamiasz agentów kodujących równolegle, a każdy z nich czyta Twój współdzielony kontekst.

Pasuje to też naturalnie do sposobu, w jaki dobre konfiguracje agentów już zarządzają kontekstem. Jeśli prowadzisz plik kontekstu AGENTS.md, wskazanie go na lekkie referencje .md zamiast surowych PDF-ów utrzymuje okno kontekstu ciasno, co, jak omówiliśmy w sztuczce z kanarkiem do wychwytywania dryfu kontekstu, stanowi połowę sukcesu w każdej długiej sesji.

Wniosek

Podawanie surowych PDF-ów do LLM to podatek, który płacisz bez świadomości, ponieważ każda strona jest po cichu zamieniana w obraz. MarkItDown usuwa ten podatek za darmo: jedna komenda zamienia niemal dowolny plik w czysty Markdown, zrzucasz nawet 80% kosztu w tokenach, a model odpowiada równie dobrze, często lepiej, ponieważ czyta strukturę zamiast mrużyć oczy na zdjęcia stron.

Najpierw konwertuj, potem pytaj. Twój rachunek za tokeny i Twoje okno kontekstu, oba Ci podziękują.

Gotowy, żeby uruchomić to na całym zespole agentów zamiast na jednym terminalu? Pobierz AgentsRoom, zobacz, co obsługuje każdy agent w matrycy kompatybilności providerów, i przeczytaj więcej o wsparciu multi-provider.

Pobierz AgentsRoom

Uruchamiaj swoich agentów Claude na wszystkich projektach z jednego okna.

Za darmoPobierz AgentsRoom

Aplikacja towarzyszaca: monitoruj agentów w podrozy

Użyj Claude, Codex, Gemini CLI lub innego dostawcy AI.

Zainstaluj rozszerzenie
Chrome Web Store

Wysyłaj bugi i prośby bezpośrednio do swojego publicznego backlogu.

Spojrzenie na AgentsRoom w akcji.

Wiele projektów
Multi-provider
Wielu agentów
Status na żywo
Diff i commit
Aplikacja mobilna
Podgląd na żywo
Zespoły agentów
Testy w przeglądarce
Dev oparta na backlogu
Biblioteka promptów
Biblioteka umiejętności
Zobacz wszystkie funkcje