Blog

Sådan omdanner du PDF- og Word-filer til tekst til AI: Microsofts MarkItDown

Markdown

Grundig gennemgang: Sådan omdanner du PDF- og Word-filer til tekst til AI: Microsofts MarkItDown.

Læs hele artiklen

Vigtigste pointer

MarkItDown er et gratis Microsoft-værktøj, der omdanner Word-, Excel- og præsentationsfiler samt PDF-filer til struktureret tekst til AI. Det analyserer Office-filer rent på en brøkdel af et sekund. PDF-filer med komplekse layout bliver noget rod, og ved en scanning returnerer det en tom fil med exitkode nul. Nedenfor finder du en fungerende installationskommando, målinger på dokumenter med kyrillisk tekst og en regel for, hvornår du bør bruge et andet værktøj.

Flere instruktioner findes i Ailoot-dokumentationen.

Hvad er MarkItDown, og hvad bruges det til?

Vigtigste pointer

MarkItDown er et Python-værktøj fra Microsoft, der læser en fil og returnerer indholdet som struktureret tekst. Overskrifter bliver til overskrifter, og tabeller bliver til tabeller. Det findes i et åbent GitHub-projekt under MIT-licensen, installeres med én kommando og foretager al behandling på din computer. Det har én opgave: at forberede et dokument, så en AI kan se både ordene og strukturen.

Du sender en kontrakt, en rapport eller et regnskabsudtræk til en AI og får et svar, der ikke har noget med dokumentet at gøre. Årsagen er som regel ikke modellen. Filen indeholder et format: Word er et arkiv med opmærkning, Excel er et regneark med forbindelser mellem celler, og PDF er en samling tegn med koordinater på en side. Modellen arbejder med tekst, og nogen skal udtrække teksten.

Det er det, MarkItDown gør. Projektet findes på github.com/microsoft/markitdown under MIT-licensen, så du kan bruge det uden begrænsninger. Den 18. august 2026 havde det 174,412 stjerner og 12,756 forks; den seneste udgivelse, 0.1.7, kom den 29. juli. Projektet er aktivt, men fokus er flyttet fra udvikling til vedligeholdelse: Det har 481 åbne pull requests sammenlignet med 183, der er blevet flettet ind i hele projektets historie.

Udviklerne beskriver formålet sådan:

MarkItDown er et letvægtsværktøj i Python til at konvertere filer i forskellige formater til Markdown til brug med store sprogmodeller og relaterede tekstanalysestrømme.

— Microsoft, projektbeskrivelse (oversat), https://github.com/microsoft/markitdown

Den næste sætning i beskrivelsen forklarer halvdelen af de klager, folk har over værktøjet:

Selvom resultatet ofte ser ganske pænt og menneskevenligt ud, er det beregnet til tekstanalyseværktøjer og er muligvis ikke det bedste valg til konvertering med høj nøjagtighed af dokumenter, der skal læses af mennesker.

— Microsoft, projektbeskrivelse (oversat), https://github.com/microsoft/markitdown

Resultatet er råmateriale til en model. Det bliver ikke et flot dokument, og projektet siger det tydeligt allerede i første afsnit.

Beskrivelsen svarer direkte på, hvorfor det bruger Markdown: førende modeller ”taler” allerede dette opmærkningssprog og tager det med i deres svar uden at blive bedt om det, fordi de så enorme mængder af det under træningen. Opmærkningssproget er også kompakt: tre hashtegn for en overskrift i stedet for et dusin linjer metadata.

Hvordan adskiller MarkItDown sig fra en almindelig konverter?

Vigtigste pointer

Konvertere som pandoc oversætter ét opmærkningssprog til et andet og bevarer layoutet til mennesker. pandoc accepterer slet ikke PDF som input. MarkItDown løser det modsatte problem: Udtrække indhold fra en Office-fil og arrangere det, så en model straks kan forstå det uden at spilde tokens. Det er ikke målet at bevare det visuelle layout, og det er hele forskellen.

Forskellen fremgår tydeligt af et eksempel. Tag en mappe med tyve PDF-filer, og prøv at køre dem gennem pandoc. Det virker ikke: pandoc kan oprette PDF-filer som output, men kan ikke læse dem som input. Og situationen ”Jeg har en bunke dokumenter; giv dem til modellen” er den mest almindelige.

MarkItDown-forfatterne sammenligner værktøjet med textract, et bibliotek, der blot udtrækker tekst fra hvad som helst. Forskellen er, at MarkItDown forsøger at bevare strukturen: overskrifter, lister, tabeller og links.

FunktionpandocMarkItDown
Læser PDF-filernejja, med forbehold
Læser Word, Excel og præsentationerdelvistja
Tiltænkt målgruppe for outputmenneskermodeller
Primær værdilayoutnøjagtighedstruktur og lavt tegnantal
Installationselvstændigt programén Python-kommando

Den praktiske konklusion er enkel. Hvis du skal omdanne en artikel til et layout til udgivelse, skal du bruge pandoc. Hvis du skal have en AI til at forstå tyve kontrakter, skal du bruge MarkItDown.

Hvordan installerer du MarkItDown uden at få den første udgivelse?

Vigtigste pointer

Med udgivelse 0.1.8 installerer kommandoen i projektbeskrivelsen den nyeste version på Python 3.14 og 3.12; det er blevet kontrolleret igen i otte rene miljøer. En stille nedgradering til 0.0.2, den næstførste udgivelse i projektets historie, sker stadig på Python 3.15, på Intel-Mac-computere med 3.14 og på Mac-computere med ældre macOS-versioner, der kører 3.13 og 3.14. I disse tilfælde melder installationsprogrammet, at installationen lykkedes. Brug derfor Python 3.12, angiv de formater, du har brug for, med navn, og kontrollér versionsnummeret med det samme.

Først den rigtige kommando; derefter hvorfor det er den rigtige.

  1. Kontrollér Python-versionen

    Python 3.12 er mest pålidelig: Den nyeste MarkItDown-version installeres i alle testede miljøer med den. Kommandoen python3 --version viser, hvad du har. På Intel-Mac-computere eller Mac-computere med en ældre macOS-version kan Python 3.13 og 3.14 stille og roligt nedgradere; Python 3.15 understøttes endnu ikke, som forklaret nedenfor.

  2. Installér med de angivne formater

    Kør pip install 'markitdown[pdf,docx,xlsx,pptx]'. Anførselstegnene er nødvendige, ellers fortolker skallen de kantede parenteser. På en Intel-Mac skal du tilføje flaget --prefer-binary efter install.

  3. Kontrollér straks, at det blev installeret

    Kør markitdown --version. Svaret bør være markitdown 0.1.8 eller nyere. Et lavere tal betyder, at installationen blev nedgraderet; dette afsnit forklarer hvorfor.

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

Projektbeskrivelsen angiver pip install 'markitdown[all]' som hovedkommandoen til at installere alt på én gang. Den 28. september 2026, en uge efter at 0.1.8 udkom, blev fire varianter kørt i rene miljøer på en Apple Silicon-Mac med Python 3.14.6 og 3.12.12:

KommandoInstalleret på Python 3.14Installeret 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

Alle otte installationer sluttede med “Successfully installed”, og markitdown --version returnerede 0.1.8 i hvert tilfælde. I august, hvor 0.1.7 var den nyeste udgivelse, installerede den tredje kommando 0.0.2 på Python 3.14, udgivet den 8. marts 2025 – den næstførste udgivelse i projektets historie. Nu har det elleve stabile udgivelser fra 0.0.1 til 0.1.8 og seksogtyve inklusive forhåndsudgivelser.

Årsagen var afhængighedskæden. I 0.1.7 henter tilføjelsen [all] et bibliotek til YouTube-undertekster fra en bestemt udgivelsesserie, og alle udgivelser i serien angiver, at de ikke fungerer på Python 3.14. Installationsprogrammet afviser dem og går, fordi ingen version er fastlåst, baglæns gennem MarkItDown-versionerne, indtil det finder en, der kan installeres. Det finder 0.0.2 og installerer den, så du får en udgivelse fra halvandet år siden på din computer. I 0.1.8 blev kravet til undertekstbiblioteket hævet til en serie, der fungerer på 3.14, og nedgraderingen stoppede dermed.

Mekanismen findes stadig. Hvis installationsprogrammet ikke kan finde én nødvendig komponent til dit system, går det stille og roligt tilbage til 0.0.2 på samme måde. I nyere versioner er komponenten onnxruntime-motoren, som filtypegenkendelsen bruger. På Mac bygges den sådan: til Python 3.12, macOS 11 og nyere; til 3.13, macOS 13; til 3.14, kun Apple Silicon med macOS 14 eller nyere. Hvis din Mac ikke opfylder kravene, installerer selv den enkle kommando pip install markitdown 0.0.2. En test på en Intel-Mac med Python 3.14 via Rosetta gav præcis dette resultat: “Successfully installed”, ingen advarsler og 0.0.2 installeret.

Intel-Mac-computere har endnu en komplikation. Siden juni 2026 er kryptografibiblioteket, der hentes ind til læsning af PDF-filer, blevet udgivet uden en prækompileret version til denne processor, så installationsprogrammet forsøger at bygge det fra kilden. Tilføj flaget --prefer-binary til kommandoen, så bruger den den tidligere version med en prækompileret pakke. Ved test på Python 3.13 til Intel installerede det 0.1.8, og PDF-filen blev åbnet. Flaget installerer cryptography 48.0.1, som har tre kendte sårbarheder: i PKCS#7-dekryptering og verifikation af certifikatkæder. MarkItDown bruger det kun til at dekryptere krypterede PDF-filer, og dokumentlæsning kommer ikke i nærheden af disse dele.

På Python 3.15 sker nedgraderingen af to årsager. Version 0.1.8 erklærer kun understøttelse fra 3.10 til og med 3.14, og der findes endnu ingen motor til 3.15. Installationsprogrammets afhængighedsopløsning for 3.15 bekræfter det: både den enkle kommando og kommandoen med formater installerer samme 0.0.2.

En nedgraderingsadvarsel ser sådan ud, én linje for hvert tilvalg i kommandoen:

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

Linjen forsvinder blandt snesevis af downloadlinjer og siger intet om den version, der indsættes i stedet. Med en enkel kommando uden tilvalg er der ikke engang en advarsel. Den endelige besked er munter: “Successfully installed.”

Det er heller ikke en løsning at installere uden tilvalg. Grundpakken installeres, men kan ikke åbne 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]'

Værktøjet anbefaler selv [all], og med 0.1.8 fungerer det råd igen på Python 3.14 og 3.12. Det er stadig bedre at angive formaterne ved navn: [all] tilføjer omkring femten ekstra pakker og cirka 55 megabyte, herunder et Azure-bibliotek i forhåndsudgave og netop den YouTube-afhængighedskæde, der allerede har ødelagt en installation én gang.

Installationsprogrammet håndterer selv Azure-forhåndsudgaven. Normalt springer pip forhåndsudgivelser over, men her angiver kravet udtrykkeligt en forhåndsudgivelse, så den installerer den. Fire pip-versioner fra 23.2 til 26.2 blev testet på Python 3.12; alle vælger 0.1.8.

Bemærk

Kør markitdown --version straks efter installationen. Det tager fem sekunder, og det er den eneste måde at vide, at du installerede det, du bad om. Beskeden om, at installationen lykkedes, betyder intet her.

I august gav en geninstallation i et andet rent miljø samme resultat: 0.0.2 og ordet “Successfully”.

Der er nogle praktiske detaljer, som er gode at kende på forhånd.

Det fylder en del: en grundinstallation fylder 143 megabyte; med fire formater 303. Den tungeste komponent på 81 megabyte er filtypegenkendelsen, som også hentes ved grundinstallationen. Det betyder ikke noget på en bærbar computer, men betyder noget for en cloudfunktion med en størrelsesgrænse.

Regn ikke med spejle som reserve. Et testet spejl leverede et indeks, og MarkItDown-filerne var til stede, men én nødvendig afhængighed manglede, så installationen mislykkedes på både Python 3.14 og 3.12.

Installationen er en bagatel sammenlignet med hovedproblemet. Langt oftere producerer en AI noget sludder, fordi det forkerte indhold eller den forkerte repræsentation endte i dens kontekstvindue. Evnen til at afgøre, hvad man skal give en model før en opgave, kaldes kontekstteknik, og dokumentforberedelse er en del af det.

Hvordan omdanner du dit første dokument til tekst?

Vigtigste pointer

Én kommando i terminalen: programnavnet og filstien. Som standard vises resultatet direkte i vinduet, så du kan gemme det direkte i en fil. Der er tre metoder: output til konsollen, skrivning med et flag eller at sende filen som en strøm. Til indlejring i dine egne scripts findes en Python-wrapper på tre linjer, som også accepterer URL'er.

Den korteste mulighed:

markitdown dogovor.docx

Teksten vises i terminalen. Du kan gemme den i en fil på to måder:

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

Forskellen er ubetydelig på Mac og Linux, men vigtig på Windows: omdirigering gennem > kan få programmet til at gå ned, når outputtet indeholder kyrillisk tekst.

Du kan sende en fil som en strøm; i så fald er det nyttigt at angive filtypen:

cat dogovor.docx | markitdown -x docx

Her er de vigtigste flag fra hjælpen i 0.1.8:

FlagHvad det gør
-o, --outputskriver resultatet til en fil i stedet for at vise det i vinduet
-x, --extensionfiltypehint, når filen sendes som en strøm
-m, --mime-typehint om indholdstype
-c, --charsethint om tegnkodning
-d, --use-docintelbehandling via Microsofts betalte cloudtjeneste
-v, --versionviser versionen

Den samme hjælp viser yderligere tre nyttige flag, som alle er blevet testet: --list-plugins viser installerede plugins, -p aktiverer dem ved en bestemt kørsel, og --keep-data-uris beholder billeder, der er indlejret i dokumentet, i outputtet (de beskæres som standard). Resten er indstillinger til Microsofts cloudtjenester.

Python-wrapperen fylder tre linjer:

from markitdown import MarkItDown

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

Det samme kald accepterer en URL. En enkel side returnerede ren tekst på 167 tegn, inklusive en overskrift og et link, uden menu og sidefod:

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

Hvilke formater forstår MarkItDown, og hvad betyder det i praksis?

Vigtigste pointer

Projektbeskrivelsen nævner en lang række formater: Office-filer, PDF-filer, billeder, lyd, arkiver, YouTube-links og e-bøger. Tre ting fungerer ikke, som de lyder. Gratisversionen har slet ingen tekstgenkendelse i billeder. Tale sendes til en engelsksproget motor. Filer, der ikke kunne analyseres, forsvinder fra arkiver uden varsel.

En oversigtstabel over, hvad der hævdes, og hvad det betyder i praksis.

FormatHævdetHvad der faktisk sker
Word, Excel, præsentationerjafungerer rent; dette er dets styrke
CSV, JSON, XML, HTMLjafungerer, men CSV har en afgrænsningsfælde
PDFjaafhænger af layoutet: én spalte samles, to spalter falder fra hinanden
Billeder”metadata og genkendelse”ingen genkendelse, kun metadata eller en betalt synsmodel
Lyd”talegenkendelse”sendes til Googles engelsksprogede motor
ZIP-arkiver”gennemgår indholdet”alt, det ikke kan analysere, forsvinder lydløst
YouTube-linksjakun fulde links af typen '<OFFICIAL_URL>'?...
EPUB-e-bøgerjafungerer

Tre punkter mere detaljeret.

Billeder. Beskrivelsen indeholder ordet OCR, så folk forventer, at programmet kan læse tekst fra et foto. Det kan det ikke. Det læser metadata med et separat program, exiftool, og kan, hvis du forbinder en synsmodel med din egen nøgle, sende billedet til den for at få en beskrivelse.

Lyd. Talegenkendelse er tilgængelig, men sproget sendes ikke med, og motoren forventer engelsk som standard. Den kalder også Googles uofficielle gratis slutpunkt, der er begrænset til omkring halvtreds anmodninger om dagen pr. nøgle.

Arkiver. Programmet pakker ZIP-filer ud og gennemgår filerne indeni og sammenkæder resultaterne. Hvis det ikke kan analysere en fil, fanges fejlen og skjules. Filen vises simpelthen ikke i resultatet, og du får det ikke at vide.

Hvad sker der med dokumenter, der indeholder kyrillisk tekst?

Vigtigste pointer

Tre filer med kyrillisk tekst – en Word-kontrakt, et Excel-lagerark og en præsentation – blev kørt gennem den nyeste version. Den kyrilliske tekst og tallet overlevede intakt i alle tre. Der opstår problemer tre steder: CSV-filer med semikolon, valutaformatering i Excel-celler og output fra Windows-konsollen. Alle tre problemer har løsninger.

Filerne nedenfor blev oprettet specifikt til test; deres data er opdigtede.

Excel-lagerarket kom lige så rent ud, og arknavnet blev til en overskrift:

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

Præsentationen blev til tekst med slidenumre vist som annotationer og slidetitler omdannet til overskrifter. Den kyrilliske tekst er også intakt her. Den generelle påstand om, at ”MarkItDown ikke forstår kyrillisk”, er forkert.

Nu til de tre steder, hvor det går galt.

CSV med semikolon. To identiske fakturaudtræk blev kørt til sammenligning. Det, der brugte kommaer, gav en korrekt tabel med fire kolonner. Med semikolon ender hele linjen i én celle.

Hele linjen endte i én celle. Kodningen blev genkendt korrekt, og der var ingen fejl; flaget -c hjælper ikke. Modellen får denne tabel og forstår ikke, hvilken værdi der er beløbet, og hvilken der er status. Eksportér filen igen med en udtrykkelig kommaafgrænser og korrekt kodning, og bevar originalen uændret. Erstat ikke semikolon globalt: Separatorer i tekst med anførselstegn og decimalkommaer kan være en del af en værdi. Hvis geneksport ikke er mulig, skal du parse originalen med dens faktiske afgrænser og skrive en ny CSV med en CSV-bevidst skriver, der bevarer anførselstegn og celleværdier. Sammenlign kolonneantal, rækkeantal og kontrolsummer med kildeudtrækket før analyse.

Valutaformatering i Excel. Valutasymbolet gemmes i cellens visningsindstillinger og indgår ikke i selve værdien. Projektets vedligeholdere har bekræftet årsagen. For en prisliste eller en faktura betyder det noget: Modellen ser tal uden at vide, hvilken valuta de repræsenterer.

Windows-konsollen. Programmet kan gå ned på filer med ikke-latinske tegn.

Fejlsporet viser kodningen cp1251, hvilket betyder Windows-konsollen. Selve dokumentet analyseres korrekt; det er udskrivningen af resultatet i terminalvinduet, der fejler. Der er derfor to løsninger:

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

Den første omgår konsollen helt; den anden får Python til at skrive i UTF-8. Folk har indsendt rettelser til selve værktøjet mindst seks gange: nogle forslag blev lukket uden at blive flettet ind, mens resten stadig er åbne. Så du må arbejde uden om problemet.

Et fjerde symptom viser sig i PDF-filer: sekvenser som (cid:1090) i stedet for bogstaver. Det betyder, at filen har en skrifttabel, der ikke er standard, og at tegnene ikke kunne afkodes. Det nytter ikke at behandle sådan et dokument med MarkItDown; du har brug for et andet værktøj.

Hvorfor bliver en PDF til noget rod?

Vigtigste pointer

En PDF indeholder ingen struktur, kun tegn med koordinater på siden. Tekst i én spalte samles nogenlunde godt. To spalter bliver til noget rod: Linjer sættes sammen på tværs af spalterne, ord løber sammen, og layoutet bliver til tabeller, der aldrig fandtes i dokumentet. Værktøjet identificerer slet ikke overskrifter i PDF-filer – det fremgår både af kildekoden og af uafhængige målinger.

Til testen blev en videnskabelig artikel på 2.16 megabyte med to spalter behandlet. Exitkoden var nul; efter 0.9 sekunder indeholdt outputtet 88,000 tegn, næsten alt sammen noget rod. Otteogfirs tusind tegn giver indtryk af, at alt fungerede. Lige indtil du åbner filen:

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

Tre ting gik galt på én gang. Layoutet med to spalter blev til tabeller, som ikke findes i artiklen. Ord løb sammen uden mellemrum. Den sidste linje er en lodret sidebjælke på siden, udtrukket baglæns.

Så kom den sjove del. Testartiklen viste sig at være selve det arbejde, der målte MarkItDown og sammenlignede det med andre værktøjer. Værktøjet omdannede afsnittet med dets egne målinger til dette:

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-

Venstre og højre spalte er sat sammen linje for linje. En model, der får dette, vil læse halvdelen af en sætning fra ét afsnit og halvdelen fra et andet.

Årsagen er teknisk og enkel. Word gemmer eksplicit ”dette er en overskrift” og ”dette er en tabelcelle”. En PDF gemmer ”dette er et tegn” og ”dette er dets koordinater på siden”. At genskabe strukturen ud fra koordinater er en separat og vanskelig opgave, og MarkItDown forsøger knap nok. Kildekoden til PDF-analyse indeholder ingen overskriftsgenkendelse: Hvis en side ikke genkendes som en formular eller en tabel, behandles hele dokumentet med grundlæggende tekstudtræk.

Brugere rapporterer jævnligt dette i projektets repository, også for videnskabelige artikler og tabeller.

Værktøjet finder ikke en eneste overskrift i PDF-filer, præcis som kildekoden viser.

Påstanden ”MarkItDown opnår 82 % nøjagtighed” cirkulerer på nettet uden nogen metodebeskrivelse. Når man sporer den tilbage til den oprindelige kilde, fører det ingen vegne: Linkkæden ender på en side, der ikke indlæses. Det kan ikke behandles som en måling.

Hvad sker der med en scannet kontrakt?

Vigtigste pointer

Ingenting. Filen behandles, programmet melder, at det lykkedes, og outputtet indeholder nul tegn. Ingen fejl, ingen advarsel. Det blev testet to gange på en PDF, der var lavet ud fra et billede, og separat på selve billedet – resultatet var det samme. Værktøjet udtrækker tekst, der allerede er gemt som tekst i filen; gratisversionen har ingen genkendelsesfunktion.

Denne adfærd er farligere end de andre, fordi den ikke ligner en fejl.

Til testen blev der lavet en PDF ud fra et billede med tekst – altså præcis det, du får, når en kontrakt fotograferes eller scannes. Kørslen blev gentaget for at udelukke tilfældigheder:

InputExitkodeTegn i outputFejlmeddelelse
PDF fra billede, kørsel 100ingen
PDF fra billede, kørsel 200ingen
PNG-billede direkte01 (linjeskift)ingen

Nul tegn og nul fejl, to gange i træk. En exitkode på nul betyder ”alt gik godt”, og ethvert script, der kontrollerer, om det lykkedes, via exitkoden, vil tælle dokumentet som behandlet. Derefter sendes det tomme output til modellen, modellen ser ingenting og begynder at finde på et svar ud af den blå luft.

Bemærk

Hvis du behandler dokumenter i batches, skal du kontrollere outputtets længde. Exitkoden fortæller dig ingenting: En tom fil med exitkode nul er, hvordan en scanning ser ud.

Der findes to løsninger, og begge koster penge. Den første er flaget -d, som sender dokumentet til Microsofts cloudtjeneste til genkendelse; flagets hjælpetekst siger udtrykkeligt, at et gyldigt serviceendpoint er påkrævet. Den anden er en separat tilføjelsespakke, der sender sider til en synsmodel med din nøgle, så du betaler modeludbyderen for hver side. Siden april 2026 har en åben diskussion om den anden metode rapporteret, at kun den første side af en scanning med flere sider behandles.

Du kan også køre en genkendelsesmodel på din egen computer, men det er et separat projekt.

For et enkelt dokument er det nemmere at åbne det og kopiere teksten manuelt. Til en strøm af scanninger har du brug for et værktøj med indbygget genkendelse.

Kan du ikke bare overføre filen til en onlinekonverter?

Vigtigste pointer

Rent teknisk, ja; der findes mange domæner med dette navn. Men ingen af dem er tilknyttet Microsoft. Påstanden ”filen forlader aldrig din browser” kan kontrolleres med ét klik, og den er ikke altid sand. Før du overfører en kontrakt eller et udtræk med personers navne, bør du selv se, hvor filen sendes hen.

”MarkItDown online” er et af de mest almindelige søgeforslag, og der findes websteder, der tilbyder det. Microsofts oprindelige værktøj har slet intet websted; det findes kun som et program, du selv installerer. Alt med et lignende navn, der åbnes i en browser, er lavet af nogen andre.

Du kan kontrollere sådan en tjeneste på et minut: Åbn udviklerværktøjerne på fanen med netværksanmodninger, overfør en harmløs fil, og se, om den sendes til en server. Hvis den gør det, er påstanden om behandling i browseren falsk, uanset hvor overbevisende den præsenteres i FAQ'en.

Bemærk

En kontrakt, en faktura eller et udtræk med medarbejderes navne indeholder personoplysninger. Hvis du sender sådan en fil til et tredjepartswebsted, er det dig, der har overført den. Et lokalt værktøj undgår det problem: Filen forlader ikke din computer.

Det er derfor, MarkItDown værdsættes, når dokumenter ikke må sendes uden for organisationen. I en diskussion beskrev nogen sin situation: Vilkårlige programmer var forbudt på arbejdslaptopen, men Python-biblioteker var tilladt, og det lokale værktøj viste sig at være den eneste tilgængelige mulighed.

Hvor meget sparer MarkItDown egentlig?

Vigtigste pointer

Den største fordel er, at modellen overhovedet kan forstå dokumentet. Der er også en forskel i størrelse: Hvis man sammenligner størrelsen af opmærkningen i Office-filer med størrelsen på den udtrukne tekst, ses en reduktion på fem til syv gange. Det fjerner også alt det, modellen ikke behøver at læse: beskrivelser af skrifttyper, margener og cellefarver.

En Office-fil er struktureret som et arkiv med opmærkning. Hvis du pakker de tre testfiler ud og sammenligner størrelsen af den del, der indeholder indholdet, med størrelsen af outputtet, får du dette:

FilOpmærkning indeniUdtrukket tekstGange mindre
Word-kontrakt3,701 byte711 byte5.2
Excel-regneark1,561 byte262 byte6.0
Præsentation2,203 byte296 byte7.4

Filerne er små; proportionerne vil være anderledes for større filer, og der findes ikke ét enkelt besparelsestal. Når der står runde tal i sammenligningsartikler, bør du spørge til metoden.

Udviklerne taler også selv om besparelser: Projektbeskrivelsen siger specifikt, at Markdown-konventioner er meget økonomiske med hensyn til tegn. Det er sandt, men bør ikke være det vigtigste salgsargument. Forskellen mellem ”modellen fik tre tusind tegn i stedet for femten tusind” og ”modellen fik en tydelig struktur i stedet for noget rod” er af en helt anden størrelsesorden. Det første sparer penge; det andet afgør, om svaret giver mening.

Hvis du bekymrer dig om kontekstforbrug, behandles det separat: Hvor tokens går hen i Claude og hvor mange der er inkluderet i hver plan.

Hvordan forbinder du MarkItDown med Claude gennem MCP?

Vigtigste pointer

Projektet har en separat pakke, der starter en MCP-server med én kommando: Angiv en filsti, og få tekst tilbage. I september 2026 blev pakken endelig opdateret til 0.0.1a7, men buildet er stadig en forhåndsudgivelse og sender som standard telemetri til Microsoft. Kommandoen nedenfor forbinder den via uv, fastlåser versionen, bruger Python 3.12 og deaktiverer telemetri. Der er ingen godkendelse, og ifølge dens egen dokumentation kan serveren læse alle filer, som den bruger, der startede den, har adgang til.

MCP er en måde at give en AI et eksternt værktøj, som den selv kan bruge. Se gennemgangen af MCP-servere til Claude Code for en oversigt over mekanismen og andre servere.

MarkItDown-serveren stiller præcis ét værktøj til rådighed: at konvertere et dokument til tekst. Den accepterer en lokal filsti, en side-URL eller data, der er indlejret direkte i anmodningen.

Den forbindes med Claude Code med én kommando, hvor serverversionen er fastlåst. Du skal bruge pakkehåndteringen 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å den anden kommando bør vise ”Connected” for markitdown. Første start downloader omkring halvfjerds pakker og tager op til et minut; derefter starter serveren på ét til halvandet sekund.

Her er forbeholdene, som hver især er kontrolleret manuelt.

Build 0.0.1a7 blev udgivet den 14. september 2026. Før det havde serveren siddet fast på 0.0.1a4 fra maj 2025 i over et år. Det seneste versionsnummer er stadig en forhåndsudgivelse.

Den kan ikke installeres på alle systemer med en nyere version af Python. Den onnxruntime-motor, den afhænger af, findes til Python 3.14 på Mac kun til Apple Silicon med macOS 14 eller nyere, så installationen mislykkes på Intel-Mac-computere og på macOS 13 eller ældre med Python 3.14. På en Apple Silicon-Mac blev serveren kørt på Python 3.14, 3.13 og 3.12 og installeret på alle tre. Kommandoen bruger UV_PYTHON=3.12: prækompilerede pakker til 3.12 findes til Windows, Linux og Apple Silicon-Mac-computere, og hvis du ikke har den Python-version, downloader uv den. Der er også et forbehold for Intel-Mac-computere: uv bygger kryptografibiblioteket fra kilden, fordi der ikke har været en prækompileret pakke til Intel siden juni 2026. Installationen tager længere tid og kan mislykkes.

Versionen af MarkItDown, der installeres indeni, afhænger af uv-versionen. Fra MarkItDown 0.1.6 kræver tilføjelsen [all] et Azure-bibliotek i forhåndsudgave: uv 0.12 og nyere installerer det og den nyeste MarkItDown 0.1.8, mens ældre uv-versioner nedgraderer til 0.1.5. Kontrollér din uv-version med uv --version.

To ting sendes uden for computeren. Den første er telemetri: På Mac og Linux sender onnxruntime-motoren inde i serveren som standard telemetri til Microsoft. Variablen ORT_DISABLE_TELEMETRY=1 i kommandoen deaktiverer den. I testen oprettede serveren forbindelse til Microsofts telemetriendepunkter uden variablen. Med variablen indstillet blev der slet ikke oprettet forbindelser, mens filer blev behandlet fra disken.

Den anden ting er lyd. Serveren sender WAV-, MP3-, M4A- og MP4-filer til Googles talegenkendelsestjeneste til transskription via almindelig HTTP uden kryptering. Det er bedst ikke at sende optagelser af samtaler med kunder gennem den.

Et stort dokument kan ikke være der igennem. En åben diskussion beskriver et serversvar på 51,000 tokens, der rammer en grænse på 25,000 tokens, og værktøjet deler ikke filer op i mindre dele.

Og sikkerheden. Pakkens egen dokumentation siger det tydeligt:

Serveren understøtter ikke godkendelse og kører med de tilladelser, som brugeren, der startede den, har. Konverteringsværktøjet kan bruges til at læse enhver fil, som serverbrugeren har adgang til, eller data på netværket.

— Microsoft, beskrivelse af pakken markitdown-mcp (oversat), https://github.com/microsoft/markitdown/tree/main/packages/markitdown-mcp

Med andre ord kan en agent med dette værktøj læse alt, hvad du selv kan læse. Det er acceptabelt ved arbejde på din egen computer. Du må ikke eksponere serveren offentligt eller give den til en agent, du ikke har tillid til.

Bemærk

Projektets dokumentation indeholder ikke en konfiguration specifikt til Claude Code – den beskriver kun Claude Desktop og start gennem en container. Hvis du finder en færdig konfiguration online, der beskrives som ”fra den officielle dokumentation” til Claude Code, skal du vide, at der ikke findes en sådan konfiguration i projektet.

Til almindeligt arbejde er det nemmere at kalde programmet med en kommando og lægge den resulterende tekst i projektet. Filen ligger så ved siden af de øvrige materialer, hvor modellen selv kan konsultere den.

Hvornår er det mere ærligt at bruge et andet værktøj?

Vigtigste pointer

Reglen er enkel: Hvis strukturen allerede er registreret i selve filen, skal du bruge MarkItDown – det er hurtigst og gratis. Hvis strukturen skal genskabes ud fra et billede af siden, skal du bruge et værktøj med layoutmodeller. Docling håndterer tabeller og komplekse layout, MinerU håndterer formler og flere spalter, og betalte cloudtjenester hjælper, når der ikke er tid til at rode med det.

En opgavebaseret sammenligning; GitHub-stjerner har intet med det at gøre:

VærktøjStyrkeHvad du betaler med
MarkItDownOffice-filer, hastighed, gratiskan ikke håndtere komplekse PDF-filer eller scanninger
Doclingtabeller og layout gennem specialiserede modellersnesevis af sekunder pr. dokument
MinerUflere spalter, formler, tætte tabellersværere at installere
Markerhøj nøjagtighed, formler, illustrationerkræver et grafikkort, og licensen begrænser indtægter
unstructuredreturnerer dokumentstrukturen i dele med beskrivelseroutputtet er sværere at bruge
Cloud-parsereingen opsætningpenge og at sende dokumentet uden for din computer

Der er en detalje om Marker, som sammenligningsartikler udelader. Siden juli 2026 har selve koden været under en tilladende licens, mens modelvægtene er under en separat licens med en tærskel: Brugen er gratis, hvis din virksomhed ikke oversteg fem millioner dollar i omsætning og det samme beløb i rejst finansiering det foregående år. En separat klausul forbyder brug for alle, der bygger et konkurrerende produkt. Det er ligegyldigt for de fleste læsere, men det er en grund til, at en virksomhed i vækst bør læse licensen, før den tager værktøjet i brug.

Det fører til et praktisk arbejdsflow i fire trin:

  1. Kør alt gennem MarkItDown – det er gratis og øjeblikkeligt.
  2. Åbn resultatet, og kontrollér størrelsen.
  3. Hvis teksten giver mening, er opgaven løst; der er ikke brug for mere.
  4. Hvis outputtet er noget rod eller tomt, skal du køre den specifikke fil gennem et tungere værktøj.

På den måde betaler du kun tids- og kompleksitetsomkostningen for dokumenter, der har brug for det.

Hvordan indarbejder du MarkItDown i dit arbejdsflow?

Vigtigste pointer

Anthropic angiver selv reglen i sine beskrivelser af færdigheder: Brug dette værktøj til at læse et dokument. Planlæg ikke ændringer ud fra det. Her er tre scenarier, hvor det betaler sig allerede første gang: analyse af en bunke lignende dokumenter, tilføjelse af faste referencematerialer til et AI-projekt én gang og klargøring af et udtræk fra et regnskabssystem til analyse.

Anthropic bruger selv MarkItDown i sine færdige færdigheder til arbejde med Office-filer, og de færdigheder angiver den grænse, du bør følge, helt tydeligt:

Undersøg hurtigt et ark: markitdown file.xlsx. Cellekoordinater er ikke tilgængelige, så planlæg ikke ændringer ud fra dette.

— Anthropic, beskrivelse af færdigheden til at arbejde med tabeller (oversat), https://github.com/anthropics/skills/blob/main/skills/xlsx/SKILL.md

Celle- og sidehenvisninger går tabt i teksten, så du kan ikke bruge den til at foretage ændringer i kildefilen. Her er tre scenarier.

En bunke lignende dokumenter – attester, fakturaer, formularer, ansøgninger. Læg dem i en mappe, og kør dem med én linje:

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

Giv derefter modellen mappen med tekstfiler, og bed den samle de relevante oplysninger i en tabel. Det fungerer med digitale filer; scanninger fejler, og du opdager dem med det samme på deres størrelse på nul.

Faste projektmaterialer – prislister, kontraktskabeloner, politikker, servicebeskrivelser. Konvertér dem til tekst én gang, og læg dem ved siden af projektet. Modellen kan så læse dem ved hver anmodning, så du ikke behøver at vedhæfte filerne til samtalen hver gang. Artiklen om at uploade filer til Claude forklarer, hvordan det adskiller sig fra at uploade en fil til chatten.

Et udtræk fra et regnskabssystem. Et Excel-udtræk fra regnskabssoftware eller en bankkonto bliver til en tabel på en tredjedel af et sekund, og modellen kan beregne ud fra den uden mellemliggende fifleri. Kontrollér, at CSV-filen er eksporteret eller parset med sin reelle afgrænser, anførselstegnshåndtering og kodning, og sammenlign rækker, kolonner og kontrolsummer, før du giver den til modellen. Normalisér ikke separatorer med søg-og-erstat. Angiv også valutaen udtrykkeligt: Et symbol, der kun ligger i en Excel-celles formatering, overlever ikke udtrækket.

Behandling af store PDF-filer i terminalen står ikke på denne liste. Det er et separat spørgsmål om kontekstforbrug, som behandles i artiklen om PDF-filer i Claude Code uden at miste tokens. Hvis du netop er ved at indrette dit arbejdsmiljø, kan du begynde med at installere Claude Code.

For at komme i gang med det samme skal du køre pip install 'markitdown[pdf,docx,xlsx,pptx]', behandle den første Word-kontrakt, du finder, og kontrollere resultatets størrelse. På et halvt minut ved du, om det virker med dine filer.

Ofte stillede spørgsmål

Er MarkItDown gratis?

Ja. Det har en MIT-licens uden begrænsninger på kommerciel brug. Du betaler kun for to valgfrie metoder: cloudgenkendelse fra Microsoft via flaget -d og billedbeskrivelser fra en synsmodel med din egen nøgle. Alt andet kører gratis på din computer.

Sendes data til en server?

Ved almindelig konvertering af Office-filer og PDF-filer, nej – alt behandles lokalt. Der er tre undtagelser: Lydtransskription går gennem Googles tjeneste, flaget -d sender dokumentet til Microsofts cloud, og billedbeskrivelser sendes til en model med din nøgle. Ingen af disse metoder aktiveres automatisk.

Hvorfor kan jeg ikke finde kommandoen markitdown efter installationen?

Oftest blev programmet installeret i et miljø, som ikke findes i din søgesti. Kontrollér den fulde sti til filen inde i miljøet. Et andet almindeligt tilfælde er, at du installerede det til én version af Python, men kalder det med en anden. Endnu en fælde: På Python-versioner under 3.10 installeres en tom pakke uden installationsfejl.

Hvad skal jeg gøre, hvis jeg ser (cid:1090) og lignende strenge i stedet for bogstaver?

Det er en uafkodet skrifttabel inde i PDF-filen. Indstillinger kan ikke løse det; du skal køre filen gennem et andet værktøj, for eksempel Docling eller MinerU. For et enkelt dokument er det hurtigere at kopiere teksten manuelt fra en fremviser.

Kan jeg behandle en hel mappe med filer på én gang?

Der er ingen separat mappetilstand, men du kan gøre det med en terminal-løkke på én linje: for f in papka/*.docx; do markitdown "$f" -o "$f.md"; done. En anden mulighed er at lægge alt i en ZIP-fil og angive arkivet: Programmet behandler indholdet, men filer, det ikke kan analysere, forsvinder uden varsel.

Hvordan adskiller outputtet sig fra at kopiere teksten i hånden?

Det bevarer strukturen. Kopiering giver dig flad tekst, hvor en overskrift ikke kan skelnes fra et afsnit, og en tabel falder fra hinanden. MarkItDown bevarer overskrifter, lister og tabeller, så modellen kan se, hvad der er hvad. Forskellen er lille for ét kort dokument, men afgørende for tyve.

Kan MarkItDown åbne adgangskodebeskyttede dokumenter?

Nej. En adgangskodebeskyttet fil kan ikke åbnes, og du kan ikke sende adgangskoden til programmet. Du skal først fjerne beskyttelsen i det program, der anvendte den.

Når du er klar, kan du møde Ailoot.

Flere oplysninger

Spørgsmål og svar

Kan jeg rette en semikolon-CSV ved at erstatte alle semikolon med kommaer?

Nej. Tekst i anførselstegn og decimalformater kan indeholde disse tegn. Eksportér igen med den ønskede afgrænser, eller brug en CSV-parser og -skriver med udtrykkelig afgrænser, kodning og anførselstegnshåndtering. Verificér kolonner, rækker og kontrolsummer mod originalen.

Betyder exitkode nul, at en PDF er konverteret brugbart?

Nej. Artiklens scanningseksempel gav tomt output uden fejl, og en kompleks PDF gav ulæselig tekst. Åbn resultatet, kontrollér længde og struktur, og brug et layout- eller genkendelsesværktøj, hvis teksten er tom eller forvansket.

Alle artikler