Blogg

Så omvandlar du PDF- och Word-filer till text för AI: Microsofts MarkItDown

Markdown

Fördjupad genomgång: Så omvandlar du PDF- och Word-filer till text för AI: Microsofts MarkItDown.

Läs hela artikeln

Det viktigaste

MarkItDown är ett kostnadsfritt Microsoft-verktyg som omvandlar Word-, Excel- och presentationsfiler samt PDF-filer till strukturerad text för AI. Det tolkar Office-filer rent på en bråkdel av en sekund. PDF-filer med komplexa layouter blir en röra, och för en skanning returnerar programmet en tom fil med slutkoden noll. Nedan hittar du ett fungerande installationskommando, mätningar på dokument som innehåller kyrillisk text samt en regel för när du bör använda ett annat verktyg.

Fler instruktioner finns i Ailoot-dokumentationen.

Vad är MarkItDown, och vad används det till?

Det viktigaste

MarkItDown är ett Python-verktyg från Microsoft som läser en fil och returnerar innehållet som strukturerad text. Rubriker blir rubriker och tabeller blir tabeller. Det finns i ett öppet GitHub-projekt under MIT-licensen, installeras med ett kommando och gör all bearbetning på din dator. Det har en uppgift: att förbereda ett dokument så att en AI kan se både orden och strukturen.

Du skickar en AI ett avtal, en rapport eller en redovisningsexport och får ett svar som inte har något med dokumentet att göra. Orsaken är oftast inte modellen. Filen innehåller ett format: Word är ett arkiv med märkdata, Excel är ett kalkylblad med länkar mellan celler och PDF är en uppsättning tecken med koordinater på en sida. Modellen arbetar med text, och någon måste extrahera den texten.

Det är vad MarkItDown gör. Projektet finns på github.com/microsoft/markitdown under MIT-licensen, så du kan använda det utan begränsningar. Den 18 augusti 2026 hade det 174,412 stjärnor och 12,756 forks; den senaste versionen, 0.1.7, släpptes den 29 juli. Projektet är aktivt, men fokus har skiftat från utveckling till underhåll: det har 481 öppna pull requests, jämfört med 183 som har slagits ihop under hela dess historia.

Utvecklarna beskriver syftet så här:

MarkItDown är ett lättviktigt Python-verktyg för att konvertera filer i olika format till Markdown, för användning med stora språkmodeller och relaterade textanalysflöden.

— Microsoft, projektbeskrivning (översatt), https://github.com/microsoft/markitdown

Nästa mening i beskrivningen förklarar hälften av klagomålen på verktyget:

Även om resultatet ofta ser ganska prydligt och lättläst ut för människor är det avsett för textanalysverktyg och kanske inte är det bästa valet för en konvertering med hög trohet av dokument som människor ska läsa.

— Microsoft, projektbeskrivning (översatt), https://github.com/microsoft/markitdown

Resultatet är råmaterial för en modell. Det blir inget vackert dokument, och projektet säger det tydligt redan i det första avsnittet.

Beskrivningen förklarar direkt varför verktyget använder Markdown: ledande modeller ”talar” redan det här märkspråket och tar med det i sina svar utan att bli ombedda, eftersom de såg enorma mängder av det under träningen. Märkspråket är också kompakt: tre hashmarkeringar för en rubrik i stället för ett dussin rader metadata.

Hur skiljer sig MarkItDown från en vanlig konverterare?

Det viktigaste

Konverterare som pandoc översätter ett märkspråk till ett annat och bevarar layouten för människor. pandoc tar inte emot PDF som indata över huvud taget. MarkItDown löser det motsatta problemet: extraherar innehåll från en Office-fil och ordnar det så att en modell förstår det direkt utan att slösa token. Att bevara den visuella layouten är inte målet, och det är hela skillnaden.

Skillnaden framgår tydligt av ett exempel. Ta en mapp med tjugo PDF-filer och försök köra dem genom pandoc. Det fungerar inte: pandoc kan skapa PDF-filer som utdata, men kan inte läsa dem som indata. Och situationen ”Jag har en hög dokument; ge dem till modellen” är den vanligaste.

Författarna till MarkItDown jämför verktyget med textract, ett bibliotek som helt enkelt extraherar text varifrån som helst. Skillnaden är att MarkItDown försöker bevara strukturen: rubriker, listor, tabeller och länkar.

FunktionpandocMarkItDown
Läser PDF-filernejja, med förbehåll
Läser Word, Excel och presentationerdelvisja
Avsedd målgrupp för utdatamänniskormodeller
Främsta värdelayouttrohetstruktur och lågt teckenantal
Installationfristående programett Python-kommando

Den praktiska slutsatsen är enkel. Om du behöver omvandla en artikel till en layout för publicering använder du pandoc. Om du behöver att en AI ska förstå tjugo avtal använder du MarkItDown.

Hur installerar du MarkItDown utan att få den första versionen?

Det viktigaste

Med version 0.1.8 installerar kommandot i projektbeskrivningen den senaste versionen på Python 3.14 och 3.12; detta har kontrollerats på nytt i åtta rena miljöer. En tyst nedgradering till 0.0.2, den näst första versionen i projektets historia, sker fortfarande på Python 3.15, på Intel-Macar med 3.14 och på Macar med äldre macOS-versioner som kör 3.13 och 3.14. I dessa fall rapporterar installationsprogrammet att installationen lyckades. Använd därför Python 3.12, ange formaten du behöver med namn och kontrollera versionsnumret direkt.

Först rätt kommando, sedan varför det är rätt.

  1. Kontrollera Python-versionen

    Python 3.12 är mest tillförlitligt: den senaste MarkItDown-versionen installeras i alla testade miljöer med den versionen. Kommandot python3 --version visar vad du har. På Intel-Macar eller Macar med en äldre version av macOS kan Python 3.13 och 3.14 tyst nedgradera; Python 3.15 stöds ännu inte, som förklaras nedan.

  2. Installera med de angivna formaten

    Kör pip install 'markitdown[pdf,docx,xlsx,pptx]'. Citationstecknen krävs, annars tolkar skalet hakparenteserna. På en Intel-Mac lägger du till flaggan --prefer-binary efter install.

  3. Kontrollera direkt att det installerades

    Kör markitdown --version. Svaret ska vara markitdown 0.1.8 eller senare. Ett lägre nummer betyder att installationen nedgraderades; det här avsnittet förklarar varför.

pip install 'markitdown[pdf,docx,xlsx,pptx]'
markitdown --version

Projektbeskrivningen anger pip install 'markitdown[all]' som huvudkommando för att installera allt på en gång. Den 28 september 2026, en vecka efter att 0.1.8 kom ut, kördes fyra varianter i rena miljöer på en Apple Silicon-Mac med Python 3.14.6 och 3.12.12:

KommandoInstallerat på Python 3.14Installerat på Python 3.12
pip install markitdown0.1.80.1.8
pip install 'markitdown[pdf,docx,xlsx,pptx]'0.1.80.1.8
pip install 'markitdown[all]'0.1.80.1.8
pip install 'markitdown[all]==0.1.8'0.1.80.1.8

Alla åtta installationerna avslutades med ”Successfully installed”, och markitdown --version returnerade 0.1.8 i varje fall. I augusti, när 0.1.7 var den senaste versionen, installerade det tredje kommandot 0.0.2 på Python 3.14. Den versionen släpptes den 8 mars 2025 och var den näst första i projektets historia. Nu finns det elva stabila versioner, från 0.0.1 till 0.1.8, och tjugosex om förhandsversioner räknas in.

Orsaken var beroendekedjan. I 0.1.7 hämtar tillägget [all] in ett bibliotek för YouTube-undertexter från en specifik versionsserie, och alla versioner i den serien anger att de inte fungerar med Python 3.14. Installationsprogrammet avvisar dem och går, eftersom ingen version är låst, bakåt genom MarkItDown-versionerna tills det hittar en som kan installeras. Det hittar 0.0.2 och installerar den, så att du får en version från ett och ett halvt år sedan på datorn. I 0.1.8 höjdes kravet på undertextbiblioteket till en serie som fungerar med 3.14, och då upphörde nedgraderingen.

Mekanismen finns kvar. Om installationsprogrammet inte hittar en obligatorisk komponent för ditt system går det tyst tillbaka till 0.0.2 på samma sätt. I nyare versioner är den komponenten motorn onnxruntime som används av filtypsdetektorn. På Mac byggs den så här: för Python 3.12, macOS 11 och senare; för 3.13, macOS 13; för 3.14, endast Apple Silicon med macOS 14 eller senare. Om din Mac inte uppfyller kraven installerar även det enkla kommandot pip install markitdown 0.0.2. Ett test på en Intel-Mac med Python 3.14 via Rosetta gav precis detta resultat: ”Successfully installed”, inga varningar och 0.0.2 installerad.

Intel-Macar har ytterligare en komplikation. Sedan juni 2026 har kryptografibiblioteket som hämtas in för att läsa PDF-filer släppts utan en förbyggd version för den här processorn, så installationsprogrammet försöker bygga det från källkod. Lägg till flaggan --prefer-binary i kommandot så använder det den föregående versionen med ett förbyggt paket. I ett test med Python 3.13 på Intel installerades 0.1.8 och PDF-filen öppnades. Flaggan installerar cryptography 48.0.1, som har tre kända sårbarheter inom PKCS#7-dekryptering och verifiering av certifikatkedjor. MarkItDown använder det enbart för att dekryptera krypterade PDF-filer, och dokumentläsning når inte de delarna.

Med Python 3.15 sker nedgraderingen av två skäl. Version 0.1.8 deklarerar bara stöd från 3.10 till och med 3.14, och det finns ännu ingen motor för 3.15. Installationsprogrammets beroendelösning för 3.15 bekräftar detta: både det enkla kommandot och kommandot med format installerar samma 0.0.2.

En nedgraderingsvarning ser ut så här, en rad för varje tillägg i kommandot:

WARNING: markitdown 0.0.2 does not provide the extra 'all'

Raden försvinner bland dussintals nedladdningsrader och säger inget om versionen som ersätter den begärda. Med ett enkelt kommando utan tillägg visas inte ens någon varning. Slutrapporten är munter: ”Successfully installed.”

Att installera utan tillägg är inte heller någon lösning. Grundpaketet installeras, men det kan inte öppna PDF-filer:

PdfConverter recognized the input as a potential .pdf file, but the
dependencies needed to read .pdf files have not been installed. To resolve
this error, include the optional dependency [pdf] or [all] when installing
MarkItDown. For example:

* pip install 'markitdown[pdf]'
* pip install 'markitdown[all]'

Verktyget rekommenderar självt [all], och med 0.1.8 fungerar det rådet återigen på Python 3.14 och 3.12. Det är ändå bättre att ange formaten med namn: [all] lägger till omkring femton ytterligare paket och ungefär 55 megabyte, inklusive ett Azure-bibliotek i förhandsversion och just den YouTube-beroendekedja som redan har fått en installation att fallera.

Installationsprogrammet hanterar Azure-förhandsversionen på egen hand. Vanligtvis hoppar pip över förhandsversioner, men här anger beroendet uttryckligen en förhandsversion, så den installeras. Fyra pip-versioner, från 23.2 till 26.2, testades på Python 3.12; alla väljer 0.1.8.

Varning

Kör markitdown --version direkt efter installationen. Det tar fem sekunder och är det enda sättet att veta att du installerade det du bad om. Meddelandet om att installationen lyckades betyder ingenting här.

I augusti gav en ominstallation i en annan ren miljö samma resultat: 0.0.2 och ordet ”Successfully”.

Det finns några praktiska detaljer som är bra att känna till i förväg.

Det är ganska stort: en grundinstallation tar 143 megabyte; med fyra format 303. Den tyngsta komponenten, på 81 megabyte, är filtypsdetektorn, som hämtas även vid grundinstallationen. Det spelar ingen roll på en bärbar dator, men spelar roll för en molnfunktion med en storleksgräns.

Räkna inte med speglar som reservlösning. En testad spegel tillhandahöll ett index och MarkItDown-filerna fanns där, men ett nödvändigt beroende saknades, så installationen misslyckades på både Python 3.14 och 3.12.

Installationen är en småsak jämfört med huvudproblemet. Mycket oftare producerar en AI nonsens för att fel sak, eller fel representation av den, hamnade i dess kontextfönster. Förmågan att avgöra vad man ska ge en modell inför en uppgift kallas kontextteknik, och dokumentförberedelse är en del av den.

Hur omvandlar du ditt första dokument till text?

Det viktigaste

Ett kommando i terminalen: programnamnet och filsökvägen. Som standard skrivs resultatet direkt i fönstret, så du kan spara det rakt till en fil. Det finns tre metoder: utdata till konsolen, skrivning med en flagga eller att skicka filen som en ström. För att bädda in det i dina egna skript finns en Python-wrapper på tre rader, som också tar emot URL:er.

Det kortaste alternativet:

markitdown dogovor.docx

Texten skrivs ut i terminalen. Du kan spara den i en fil på två sätt:

markitdown dogovor.docx -o dogovor.md
markitdown dogovor.docx > dogovor.md

Skillnaden är obetydlig på Mac och Linux, men spelar roll på Windows: omdirigering genom > kan få programmet att krascha när utdata innehåller kyrillisk text.

Du kan skicka en fil som en ström; då är det användbart att ange ett tillägg:

cat dogovor.docx | markitdown -x docx

Här är de viktigaste flaggorna från hjälpen i 0.1.8:

FlaggaVad den gör
-o, --outputskriver resultatet till en fil i stället för att visa det i fönstret
-x, --extensiontilläggstips när filen skickas som en ström
-m, --mime-typetips om innehållstyp
-c, --charsettips om teckenkodning
-d, --use-docintelbearbetning via Microsofts betalda molntjänst
-v, --versionvisar versionen

Samma hjälp listar ytterligare tre användbara flaggor, som alla har testats: --list-plugins visar installerade insticksprogram, -p aktiverar dem för en viss körning och --keep-data-uris behåller bilder som är inbäddade i dokumentet i utdata (de beskärs som standard). Resten är inställningar för Microsofts molntjänster.

Python-wrappern består av tre rader:

from markitdown import MarkItDown

md = MarkItDown()
print(md.convert("ostatki.xlsx").text_content)

Samma anrop fungerar med en URL. En enkel sida gav ren text med 167 tecken, inklusive en rubrik och en länk, utan meny och sidfot:

r = md.convert("https://example.com")

Vilka format förstår MarkItDown, och vad innebär det i praktiken?

Det viktigaste

Projektbeskrivningen listar ett brett utbud: Office-filer, PDF-filer, bilder, ljud, arkiv, YouTube-länkar och e-böcker. Tre saker fungerar inte som de låter. Gratisversionen har ingen textigenkänning i bilder alls. Tal skickas till en engelskspråkig motor. Filer som inte kunde tolkas försvinner ur arkiv utan varning.

En sammanfattande tabell över vad som utlovas och vad som händer i praktiken.

FormatUtlovatVad som faktiskt händer
Word, Excel, presentationerjafungerar rent; det här är dess styrka
CSV, JSON, XML, HTMLjafungerar, men CSV har en avgränsarfälla
PDFjaberor på layouten: en kolumn sätts ihop, två kolumner faller isär
Bilder”metadata och igenkänning”ingen igenkänning, bara metadata eller en betald synmodell
Ljud”taltranskribering”skickas till Googles engelskspråkiga motor
ZIP-arkiv”går igenom innehållet”allt det inte kan tolka försvinner tyst
YouTube-länkarjaendast fullständiga länkar av formen '<OFFICIAL_URL>'?...
EPUB-e-böckerjafungerar

Tre punkter lite mer i detalj.

Bilder. Beskrivningen innehåller ordet OCR, så folk förväntar sig att programmet ska läsa text från ett foto. Det gör det inte. Det läser metadata med ett separat program, exiftool, och kan, om du ansluter en synmodell med din egen nyckel, skicka bilden till den för en beskrivning.

Ljud. Taltranskribering finns, men språket skickas inte med, och motorn förväntar sig engelska som standard. Den anropar också Googles inofficiella kostnadsfria slutpunkt, som är begränsad till omkring femtio anrop om dagen per nyckel.

Arkiv. Programmet packar upp ZIP-filer och går igenom filerna inuti och sammanfogar resultaten. Om det inte kan tolka en fil fångas felet upp och tystas. Filen kommer helt enkelt inte att synas i resultatet, och du får inte veta om det.

Vad händer med dokument som innehåller kyrillisk text?

Det viktigaste

Tre filer med kyrillisk text – ett Word-avtal, ett Excel-lagerblad och en presentation – kördes genom den senaste versionen. Den kyrilliska texten och siffran bevarades intakta i alla tre. Det blir problem på tre ställen: CSV-filer som använder semikolon, valutaformatering i Excel-celler och utdata i Windows-konsolen. Alla tre problemen har lösningar.

Filerna nedan skapades särskilt för testning; deras data är påhittade.

Excel-lagerbladet kom ut lika rent, med bladnamnet omvandlat till en rubrik:

## Stock
| Item | In stock | Reserved | Available |
| --- | --- | --- | --- |
| Coffee beans, kg | 420 | 38 | 382 |
| Loose-leaf tea, kg | 180 | 52 | 128 |

Presentation blev text, med bildnummer som kommentarer och bildrubriker som rubriker. Även här är den kyrilliska texten intakt. Det svepande påståendet att ”MarkItDown inte förstår kyrilliska” är falskt.

Nu till de tre ställena där det faktiskt blir problem.

CSV med semikolon. Två identiska fakturaexporter kördes för att jämföras. Den som använde kommatecken gav en korrekt tabell med fyra kolumner. Med semikolon hamnar hela raden i en enda cell.

Hela raden hamnade i en cell. Kodningen identifierades korrekt, och inget fel uppstod; flaggan -c hjälper inte. Modellen får den här tabellen men förstår inte vilket värde som är beloppet och vilket som är statusen. Exportera filen på nytt med uttrycklig kommaavgränsare och rätt kodning, och behåll originalet oförändrat. Ersätt inte semikolon globalt: avgränsare i citerad text och decimalkomman kan vara del av ett värde. Om ny export inte är möjlig tolkar du originalet med dess faktiska avgränsare och skriver en ny CSV med en CSV-medveten skrivare som bevarar citering och cellvärden. Jämför kolumnantal, radantal och kontrollsummor med källexporten före analys.

Valutaformatering i Excel. Valutasymbolen lagras i cellens visningsinställningar och följer inte med i själva värdet. Projektets underhållare har bekräftat orsaken. För en prislista eller faktura spelar det roll: modellen ser siffror utan att veta vilken valuta de står för.

Windows-konsolen. Programmet kan krascha med filer som innehåller icke-latinska tecken.

Felspåret visar kodningen cp1251, vilket innebär Windows-konsolen. Själva dokumentet tolkas korrekt; det är utskriften av resultatet i terminalfönstret som fallerar. Det finns två lösningar:

markitdown dogovor.docx -o dogovor.md
$env:PYTHONUTF8 = "1"; markitdown dogovor.docx > dogovor.md

Den första kringgår konsolen helt; den andra gör att Python skriver i UTF-8. Minst sex gånger har användare skickat in lösningar på själva verktyget: några förslag stängdes utan att slås ihop, medan de övriga fortfarande är öppna. Så du måste använda en lösning runt problemet.

Ett fjärde symtom förekommer i PDF-filer: sekvenser som (cid:1090) i stället för bokstäver. Det betyder att filen har en teckentabell med ett icke-standardiserat typsnitt och att tecknen inte kunde avkodas. Det är meningslöst att bearbeta ett sådant dokument med MarkItDown; du behöver ett annat verktyg.

Varför blir resultatet av en PDF en röra?

Det viktigaste

En PDF innehåller ingen struktur, bara tecken med koordinater på sidan. Text i en kolumn sätts ihop någorlunda väl. Två kolumner blir en röra: rader fogas samman tvärs över kolumnerna, ord flyter ihop och layouten förvandlas till tabeller som aldrig fanns i dokumentet. Verktyget identifierar över huvud taget inte rubriker i PDF-filer – det framgår både av källkoden och av oberoende mätningar.

För testet bearbetades en vetenskaplig artikel på 2.16 megabyte med två kolumner. Slutkoden var noll; efter 0.9 sekunder innehöll utdata 88,000 tecken, nästan alltihop nonsens. Åttioåtta tusen tecken ger intrycket av att allt fungerade. Ända tills du öppnar filen:

|     | Hybrid |          | OCR-LLM     |     | Framework  |
| --- | ------ | -------- | ----------- | --- | ---------- |
...
Informationextractionfromcopy-heavydoc-
5202 tcO 11  ]LC.sc[  1v83101.0152:viXra

Tre saker gick fel samtidigt. Layouten med två kolumner blev tabeller som inte finns i artikeln. Ord fogades ihop utan mellanslag. Den sista raden är en vertikal sidospalt på sidan, extraherad baklänges.

Sedan kom den roliga delen. Testartikeln visade sig vara just det arbete där MarkItDown mättes och jämfördes med andra verktyg. Verktyget omvandlade stycket som redovisade sina egna mätningar till det här:

cues. This name-matching error could be miti-  OCRpreprocessingoverhead(0.056s),whileDo-
gatedthroughpromptengineeringtoprovidemore  clingandMinerUadoptmorecomputationallyin-
explicit matching instructions or fine-tuning the  tensive strategies with OCR latencies of approxi-

Vänster och höger kolumn har fogats samman rad för rad. En modell som får detta kommer att läsa halva meningen från ett stycke och halva från ett annat.

Orsaken är teknisk och enkel. Word lagrar uttryckligen ”det här är en rubrik” och ”det här är en tabellcell”. En PDF lagrar ”det här är ett tecken” och ”här är dess koordinater på sidan”. Att återskapa strukturen utifrån koordinater är en separat och svår uppgift, och MarkItDown försöker knappt göra det. Källkoden för PDF-tolkningen innehåller ingen rubrikdetektering: om en sida inte känns igen som ett formulär eller en tabell går hela dokumentet genom grundläggande textextrahering.

Användare rapporterar detta regelbundet i projektets repository, även för vetenskapliga artiklar och tabeller.

Verktyget hittar inte en enda rubrik i PDF-filer, precis som källkoden visar.

Påståendet ”MarkItDown uppnår 82 % noggrannhet” cirkulerar på nätet utan någon metodbeskrivning. När man spårar det till ursprungskällan leder det ingenstans: kedjan av länkar slutar på en sida som inte går att läsa in. Det kan inte behandlas som en mätning.

Vad händer med ett skannat avtal?

Det viktigaste

Ingenting. Filen bearbetas, programmet rapporterar att det lyckades och utdata innehåller noll tecken. Inget fel, ingen varning. Detta testades två gånger på en PDF som skapats från en bild och separat på själva bilden – resultatet var detsamma. Verktyget extraherar text som redan finns lagrad som text i filen; gratisversionen saknar igenkänningsförmåga.

Det här beteendet är farligare än de andra eftersom det inte ser ut som ett misslyckande.

För testet skapades en PDF från en bild med text – alltså precis vad du får när ett avtal fotograferas eller skannas. Körningen upprepades för att utesluta slumpen:

IndataSlutkodTecken i utdataFelmeddelande
PDF från bild, körning 100inget
PDF från bild, körning 200inget
PNG-bild direkt01 (radbrytning)inget

Noll tecken och noll fel, två gånger i rad. En slutkod på noll betyder ”allt gick bra”, och varje skript som kontrollerar om det lyckades med hjälp av slutkoden kommer att räkna dokumentet som bearbetat. Sedan skickas den tomma utdatan till modellen, modellen ser ingenting och börjar hitta på ett svar ur tomma intet.

Varning

Om du bearbetar dokument i batchar ska du kontrollera utdatalängden. Slutkoden säger dig ingenting: en tom fil med slutkod noll är vad en skanning ser ut som.

Det finns två lösningar, och båda är betalda. Den första är flaggan -d, som skickar dokumentet till Microsofts molntjänst för igenkänning; flaggans hjälptext säger uttryckligen att en giltig tjänsteslutpunkt krävs. Den andra är ett separat tilläggspaket som skickar sidor till en synmodell med din nyckel, så du betalar modellleverantören för varje sida. Sedan april 2026 har en öppen diskussion om den andra metoden rapporterat att bara den första sidan i en flersidig skanning bearbetas.

Du kan också köra en igenkänningsmodell på din egen dator, men det är ett separat projekt.

För ett enstaka dokument är det enklare att öppna det och kopiera texten manuellt. För en ström av skanningar behöver du ett verktyg med inbyggd igenkänning.

Kan du bara ladda upp filen till en konverterare på nätet?

Det viktigaste

Rent tekniskt, ja; det finns många domäner med det här namnet. Men ingen av dem är knuten till Microsoft. Påståendet ”filen lämnar aldrig webbläsaren” kan kontrolleras med ett klick och stämmer inte alltid. Innan du laddar upp ett avtal eller en export med personers namn ska du själv ta reda på vart filen skickas.

”MarkItDown online” är ett av de vanligaste sökförslagen, och det finns webbplatser som erbjuder det. Microsofts ursprungliga verktyg har ingen webbplats alls; det finns bara som ett program du installerar själv. Allt med ett liknande namn som öppnas i en webbläsare har skapats av någon annan.

Du kan kontrollera en sådan tjänst på en minut: öppna utvecklarverktygen på fliken för nätverksanrop, ladda upp en ofarlig fil och se om den skickas till en server. Om den gör det är påståendet om bearbetning i webbläsaren falskt, oavsett hur övertygande det presenteras i FAQ:n.

Varning

Ett avtal, en faktura eller en export som innehåller anställdas namn omfattar personuppgifter. Om du skickar en sådan fil till en webbplats från tredje part är det du som har överfört den. Ett lokalt verktyg undviker det problemet: filen lämnar inte din dator.

Det är därför MarkItDown uppskattas där dokument inte får skickas utanför organisationen. I en diskussion beskrev någon sin situation: godtyckliga program var förbjudna på arbetsdatorn, men Python-bibliotek var tillåtna, och det lokala verktyget visade sig vara det enda tillgängliga alternativet.

Hur mycket sparar MarkItDown egentligen?

Det viktigaste

Den främsta fördelen är att modellen över huvud taget kan förstå dokumentet. Det finns också en storleksskillnad: jämför man storleken på märkdata inuti Office-filer med den extraherade texten ser man en minskning med fem till sju gånger. Verktyget tar också bort allt som modellen inte behöver läsa: beskrivningar av typsnitt, marginaler och cellfärger.

En Office-fil är strukturerad som ett arkiv som innehåller märkspråk. Om du packar upp de tre testfilerna och jämför storleken på delen som innehåller innehållet med storleken på utdata får du följande:

FilMärkdata inutiExtraherad textGånger mindre
Word-avtal3,701 byte711 byte5.2
Excel-kalkylblad1,561 byte262 byte6.0
Presentation2,203 byte296 byte7.4

Filerna är små; proportionerna blir annorlunda för större filer, och det finns ingen enda siffra för besparingen. När jämförelseartiklar anger jämna tal bör du fråga efter metoden.

Utvecklarna talar själva också om besparingar: projektbeskrivningen säger uttryckligen att Markdown-konventioner är mycket teckensnåla. Det stämmer, men bör inte vara det främsta säljargumentet. Skillnaden mellan ”modellen fick tre tusen tecken i stället för femton tusen” och ”modellen fick en tydlig struktur i stället för en röra” är av en helt annan storleksordning. Det första sparar pengar; det andra avgör om svaret blir begripligt.

Om du oroar dig för kontextanvändningen behandlas det separat: Vart token tar vägen i Claude och hur många som ingår i varje plan.

Hur ansluter du MarkItDown till Claude via MCP?

Det viktigaste

Projektet har ett separat paket som startar en MCP-server med ett enda kommando: ange en filsökväg och få tillbaka text. I september 2026 uppdaterades paketet äntligen till 0.0.1a7, men bygget är fortfarande en förhandsversion och skickar som standard telemetri till Microsoft. Kommandot nedan ansluter det via uv, låser versionen, använder Python 3.12 och stänger av telemetrin. Det finns ingen autentisering, och enligt dess egen dokumentation kan servern läsa alla filer som är tillgängliga för användaren som startade den.

MCP är ett sätt att ge en AI ett externt verktyg som den kan använda själv. En översikt över mekanismen och andra servrar finns i genomgången av MCP-servrar för Claude Code.

MarkItDown-servern tillhandahåller exakt ett verktyg: att omvandla ett dokument till text. Den tar emot en lokal filsökväg, en webbadress eller data som bäddats in direkt i begäran.

Den ansluts till Claude Code med ett enda kommando, där serverversionen är låst. Du behöver pakethanteraren uv:

claude mcp add --scope user --env 'ORT_DISABLE_TELEMETRY=1' --env 'UV_PYTHON=3.12' --transport stdio markitdown -- uvx markitdown-mcp@0.0.1a7
claude mcp list

Svaret på det andra kommandot ska visa ”Connected” för markitdown. Den första starten laddar ned omkring sjuttio paket och tar upp till en minut; därefter startar servern på en till en och en halv sekund.

Här är förbehållen, vart och ett manuellt kontrollerat.

Bygge 0.0.1a7 släpptes den 14 september 2026. Innan dess hade servern suttit fast på 0.0.1a4 från maj 2025 i över ett år. Det senaste versionsnumret är fortfarande en förhandsversion.

Det går inte att installera på alla system med en nyare Python-version. Motorn onnxruntime som det är beroende av finns för Python 3.14 på Mac enbart för Apple Silicon med macOS 14 eller senare, så installationen misslyckas på Intel-Macar och macOS 13 eller äldre med Python 3.14. På en Apple Silicon-Mac kördes servern med Python 3.14, 3.13 och 3.12, och den installerades med alla tre versionerna. Kommandot använder UV_PYTHON=3.12: förbyggda paket för 3.12 finns för Windows, Linux och Apple Silicon-Macar, och om du inte har den Python-versionen hämtar uv den. Även här finns ett förbehåll för Intel-Macar: uv bygger kryptografibiblioteket från källkod eftersom det inte har funnits något förbyggt paket för Intel sedan juni 2026. Installationen tar längre tid och kan misslyckas.

Vilken version av MarkItDown som installeras inuti beror på uv-versionen. Från och med MarkItDown 0.1.6 kräver tillägget [all] ett Azure-bibliotek i förhandsversion: uv 0.12 och senare installerar det och den senaste MarkItDown-versionen 0.1.8, medan äldre uv-versioner nedgraderar till 0.1.5. Kontrollera din uv-version med uv --version.

Två saker skickas ut från datorn. Den första är telemetri: på Mac och Linux skickar onnxruntime-motorn inuti servern som standard telemetri till Microsoft. Variabeln ORT_DISABLE_TELEMETRY=1 i kommandot stänger av den. I testet anslöt servern till Microsofts telemetriändpunkter utan den. Med variabeln inställd gjordes inga anslutningar alls när filer bearbetades från disken.

Det andra är ljud. Servern skickar WAV-, MP3-, M4A- och MP4-filer till Googles taligenkänningstjänst för transkribering via vanlig HTTP, utan kryptering. Det är bättre att inte skicka inspelningar av samtal med kunder via den.

Ett stort dokument får inte plats genom den. En öppen diskussion beskriver ett serversvar på 51,000 token som slog i en gräns på 25,000 token; verktyget delar inte upp filer i delar.

Och säkerheten. Paketets egen dokumentation säger tydligt:

Servern stöder inte autentisering och körs med behörigheterna för användaren som startade den. Konverteringsverktyget kan användas för att läsa alla filer som serveranvändaren har åtkomst till, eller data på nätverket.

— Microsoft, beskrivning av paketet markitdown-mcp (översatt), https://github.com/microsoft/markitdown/tree/main/packages/markitdown-mcp

Med andra ord kan en agent med det här verktyget läsa allt du själv kan läsa. Det är acceptabelt när du arbetar på din egen dator. Du får inte exponera servern offentligt eller ge den till en agent du inte litar på.

Varning

Projektets dokumentation innehåller ingen konfiguration specifikt för Claude Code – den beskriver bara Claude Desktop och start via en container. Om du hittar en färdig konfiguration på nätet som beskrivs som ”från den officiella dokumentationen” för Claude Code ska du känna till att det inte finns någon sådan konfiguration i projektarkivet.

För regelbundet arbete är det enklare att anropa programmet med ett kommando och lägga den resulterande texten i projektet. Filen ligger då bredvid de andra materialen, där modellen kan konsultera den på egen hand.

När är det ärligare att använda ett annat verktyg?

Det viktigaste

Regeln är enkel: om strukturen redan finns registrerad inuti filen använder du MarkItDown – det är snabbast och kostnadsfritt. Om strukturen måste återskapas från en bild av sidan använder du ett verktyg med layoutmodeller. Docling hanterar tabeller och komplexa layouter, MinerU hanterar formler och flera kolumner, och betalda molntjänster hjälper när du inte har tid att krångla med det.

En uppgiftsbaserad jämförelse; GitHub-stjärnor har inget med saken att göra:

VerktygStyrkaVad du betalar med
MarkItDownOffice-filer, hastighet, kostnadsfrittklarar inte komplexa PDF-filer eller skanningar
Doclingtabeller och layouter via specialiserade modellertiotals sekunder per dokument
MinerUflera kolumner, formler, täta tabellersvårare att installera
Markerhög noggrannhet, formler, illustrationerkräver grafikkort och licensen begränsar intäkter
unstructuredreturnerar dokumentstrukturen i delar med beskrivningarutdata är svårare att använda
Molntolkareingen installationpengar och att skicka dokumentet utanför din dator

Det finns en detalj om Marker som jämförelseartiklar utelämnar. Sedan juli 2026 har själva koden haft en tillåtande licens, medan modellvikterna har en separat licens med en tröskel: användningen är kostnadsfri om ditt företag inte överskred fem miljoner dollar i omsättning och samma belopp i insamlad finansiering under föregående år. En separat klausul förbjuder användning för den som bygger en konkurrerande produkt. Det spelar ingen roll för de flesta läsare, men är ett skäl för ett växande företag att läsa licensen innan det inför verktyget.

Det leder till ett praktiskt arbetsflöde i fyra steg:

  1. Kör allt genom MarkItDown – det är kostnadsfritt och omedelbart.
  2. Öppna resultatet och kontrollera storleken.
  3. Om texten är begriplig är uppgiften klar; inget mer behövs.
  4. Om resultatet är en röra eller tomt kör du just den filen genom ett tyngre verktyg.

På så sätt betalar du bara tids- och komplexitetskostnaden för dokument som behöver det.

Hur får du in MarkItDown i ditt arbetsflöde?

Det viktigaste

Anthropic anger själv regeln i beskrivningarna av sina färdigheter: använd det här verktyget för att läsa ett dokument. Planera inte ändringar utifrån det. Här är tre situationer där det lönar sig redan första gången: att tolka en uppsättning likartade dokument, lägga till stående referensmaterial i ett AI-projekt en gång och förbereda en export från ett redovisningssystem för analys.

Anthropic använder MarkItDown i sina egna färdiga färdigheter för Office-filer, och de färdigheterna uttrycker gränsen du bör följa i sin helhet:

Granska snabbt ett blad: markitdown file.xlsx. Cellkoordinater är inte tillgängliga, så planera inte ändringar utifrån detta.

— Anthropic, beskrivning av färdigheten för arbete med tabeller (översatt), https://github.com/anthropics/skills/blob/main/skills/xlsx/SKILL.md

Cell- och sidhänvisningar försvinner i texten, så du kan inte använda den för att göra ändringar i källfilen. Här är tre situationer.

En uppsättning likartade dokument – intyg, fakturor, formulär, ansökningar. Lägg dem i en mapp och kör dem med en rad:

for f in dokumenty/*.docx; do markitdown "$f" -o "text/$(basename "$f" .docx).md"; done

Ge sedan modellen mappen med textfiler och be den sammanställa den relevanta informationen i en tabell. Det fungerar med digitala filer; skanningar misslyckas och du upptäcker dem direkt genom att de har storleken noll.

Stående projektmaterial – prislistor, avtalsmallar, policyer, tjänstebeskrivningar. Konvertera dem till text en gång och lägg dem bredvid projektet. Modellen kan då läsa dem vid varje begäran, så du behöver inte bifoga filerna till konversationen varje gång. Artikeln om att ladda upp filer till Claude förklarar hur det skiljer sig från att ladda upp en fil i chatten.

En export från ett redovisningssystem. En Excel-export från bokföringsprogram eller ett bankkonto blir en tabell på en tredjedels sekund, och modellen kan räkna på den utan någon mellanliggande handpåläggning. Kontrollera att CSV-filen exporterats eller tolkats med verklig avgränsare, citering och kodning och jämför rader, kolumner och kontrollsummor innan du ger den till modellen. Normalisera inte avgränsare med sök och ersätt. Ange också valutan uttryckligen: en symbol som bara finns i Excel-cellens formatering följer inte med vid extraktion.

Bearbetning av stora PDF-filer i terminalen finns inte på den här listan. Det är en separat fråga om kontextanvändning, som behandlas i artikeln om PDF-filer i Claude Code utan att förlora token. Om du just håller på att ställa in din arbetsmiljö kan du börja med att installera Claude Code.

För att komma igång direkt kör du pip install 'markitdown[pdf,docx,xlsx,pptx]', bearbetar det första Word-avtal du hittar och kontrollerar resultatets storlek. På en halv minut vet du om det fungerar med dina filer.

Vanliga frågor

Är MarkItDown kostnadsfritt?

Ja. Det har en MIT-licens utan begränsningar för kommersiell användning. Du betalar bara för två valfria metoder: molnbaserad igenkänning från Microsoft via flaggan -d och bildbeskrivningar från en synmodell med din egen nyckel. Allt annat körs kostnadsfritt på din dator.

Skickas data till någon server?

Vid vanlig konvertering av Office-filer och PDF-filer, nej – allt bearbetas lokalt. Det finns tre undantag: ljudtranskribering går via Googles tjänst, flaggan -d skickar dokumentet till Microsofts moln och bildbeskrivningar skickas till en modell med din nyckel. Ingen av de här metoderna aktiveras automatiskt.

Varför hittar jag inte kommandot markitdown efter installationen?

Oftast installerades programmet i en miljö som inte finns i sökvägen. Kontrollera hela sökvägen till filen i miljön. Ett annat vanligt fall är att du installerade det för en Python-version men anropar det med en annan. En fälla till: på Python-versioner under 3.10 installeras ett tomt paket utan installationsfel.

Vad ska jag göra om jag ser (cid:1090) och liknande strängar i stället för bokstäver?

Det är en oavkodad teckentabell inuti PDF-filen. Inställningar löser inte det; du behöver bearbeta filen med ett annat verktyg, till exempel Docling eller MinerU. För ett enstaka dokument går det snabbare att kopiera texten manuellt från en visare.

Kan jag bearbeta en hel mapp med filer på en gång?

Det finns inget separat mappläge, men du kan göra det med en enradig terminalloop: for f in papka/*.docx; do markitdown "$f" -o "$f.md"; done. Ett annat alternativ är att lägga allt i en ZIP och ange arkivet: programmet bearbetar innehållet, men filer det inte kan tolka försvinner utan varning.

Hur skiljer sig utdata från att kopiera texten för hand?

Strukturen bevaras. Kopiering ger dig platt text där en rubrik inte går att skilja från ett stycke och en tabell faller isär. MarkItDown bevarar rubriker, listor och tabeller så att modellen kan se vad som är vad. Skillnaden är liten för ett kort dokument, men avgörande för tjugo.

Kan MarkItDown öppna lösenordsskyddade dokument?

Nej. En lösenordsskyddad fil går inte att öppna, och du kan inte skicka lösenordet till programmet. Du måste ta bort skyddet i förväg i programmet som lade till det.

När du är redo kan du träffa Ailoot.

Fler detaljer

Frågor om den här guiden: Så omvandlar du PDF- och Word-filer till text för AI: Microsofts MarkItDown

Kan jag rätta en semikolon-CSV genom att ersätta varje semikolon med komma?

Nej. Citerad text och decimalformat kan innehålla dessa tecken. Exportera på nytt med avsedd avgränsare eller använd CSV-tolk och CSV-skrivare med uttrycklig avgränsare, kodning och citering; verifiera kolumner, rader och kontrollsummor mot originalet.

Betyder returkod noll att en PDF har konverterats användbart?

Nej. Artikelns skanningsexempel gav tom utdata utan fel, och en komplex PDF gav oläslig text. Öppna resultatet och kontrollera längd och struktur; använd ett layout- eller textigenkänningsverktyg om den extraherade texten är tom eller förvanskad.

Alla artiklar