Så omvandlar du PDF- och Word-filer till text för AI: Microsofts MarkItDown
MarkdownFö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.
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.
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.
| Funktion | pandoc | MarkItDown |
|---|---|---|
| Läser PDF-filer | nej | ja, med förbehåll |
| Läser Word, Excel och presentationer | delvis | ja |
| Avsedd målgrupp för utdata | människor | modeller |
| Främsta värde | layouttrohet | struktur och lågt teckenantal |
| Installation | fristående program | ett 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.
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 --versionvisar 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.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-binaryefterinstall.Kontrollera direkt att det installerades
Kör
markitdown --version. Svaret ska varamarkitdown 0.1.8eller 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:
| Kommando | Installerat på Python 3.14 | Installerat på Python 3.12 |
|---|---|---|
pip install markitdown | 0.1.8 | 0.1.8 |
pip install 'markitdown[pdf,docx,xlsx,pptx]' | 0.1.8 | 0.1.8 |
pip install 'markitdown[all]' | 0.1.8 | 0.1.8 |
pip install 'markitdown[all]==0.1.8' | 0.1.8 | 0.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:
| Flagga | Vad den gör |
|---|---|
-o, --output | skriver resultatet till en fil i stället för att visa det i fönstret |
-x, --extension | tilläggstips när filen skickas som en ström |
-m, --mime-type | tips om innehållstyp |
-c, --charset | tips om teckenkodning |
-d, --use-docintel | bearbetning via Microsofts betalda molntjänst |
-v, --version | visar 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.
| Format | Utlovat | Vad som faktiskt händer |
|---|---|---|
| Word, Excel, presentationer | ja | fungerar rent; det här är dess styrka |
| CSV, JSON, XML, HTML | ja | fungerar, men CSV har en avgränsarfälla |
| ja | beror 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änkar | ja | endast fullständiga länkar av formen '<OFFICIAL_URL>'?... |
| EPUB-e-böcker | ja | fungerar |
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:
| Indata | Slutkod | Tecken i utdata | Felmeddelande |
|---|---|---|---|
| PDF från bild, körning 1 | 0 | 0 | inget |
| PDF från bild, körning 2 | 0 | 0 | inget |
| PNG-bild direkt | 0 | 1 (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:
| Fil | Märkdata inuti | Extraherad text | Gånger mindre |
|---|---|---|---|
| Word-avtal | 3,701 byte | 711 byte | 5.2 |
| Excel-kalkylblad | 1,561 byte | 262 byte | 6.0 |
| Presentation | 2,203 byte | 296 byte | 7.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.
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:
| Verktyg | Styrka | Vad du betalar med |
|---|---|---|
| MarkItDown | Office-filer, hastighet, kostnadsfritt | klarar inte komplexa PDF-filer eller skanningar |
| Docling | tabeller och layouter via specialiserade modeller | tiotals sekunder per dokument |
| MinerU | flera kolumner, formler, täta tabeller | svårare att installera |
| Marker | hög noggrannhet, formler, illustrationer | kräver grafikkort och licensen begränsar intäkter |
| unstructured | returnerar dokumentstrukturen i delar med beskrivningar | utdata är svårare att använda |
| Molntolkare | ingen installation | pengar 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:
- Kör allt genom MarkItDown – det är kostnadsfritt och omedelbart.
- Öppna resultatet och kontrollera storleken.
- Om texten är begriplig är uppgiften klar; inget mer behövs.
- 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.
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.
Källor
- MarkItDown – projektarkiv på GitHub
- MarkItDown på PyPI – versioner och releasedatum
- markitdown-mcp – beskrivning av MCP-servern
- Anthropic Skills – så används MarkItDown för tabeller
- Docling – dokumenttolkning med layoutmodeller
- MinerU – tolkning av komplexa PDF-layouter
- Marker – licens för modellvikter
- pandoc – konverterare för märkspråk
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.