Tinklaraštis

Kaip PDF ir Word failus paversti tekstu DI: „Microsoft“ MarkItDown

Markdown

Išsami apžvalga: kaip PDF ir Word failus paversti tekstu, skirtu DI: „Microsoft“ MarkItDown.

Skaityti visą straipsnį

Svarbiausia mintis

MarkItDown yra nemokama „Microsoft“ programa, paverčianti Word, Excel, pateiktis ir PDF failus struktūruotu tekstu, skirtu DI. Ji tvarkingai išnagrinėja „Office“ failus per sekundės dalį. Sudėtingo išdėstymo PDF failus paverčia netvarka, o nuskaitytam dokumentui pateikia tuščią failą ir nulinį išėjimo kodą. Toliau rasite veikiančią diegimo komandą, matavimus su dokumentais, kuriuose yra kirilicos, ir taisyklę, kada naudoti kitą įrankį.

Daugiau instrukcijų rasite Ailoot dokumentacijoje.

Kas yra MarkItDown ir kam jis skirtas?

Svarbiausia mintis

MarkItDown yra „Microsoft“ sukurta Python programa, kuri perskaito failą ir pateikia jo turinį struktūruotu tekstu. Antraštės tampa antraštėmis, o lentelės – lentelėmis. Programa yra atviroje „GitHub“ saugykloje su MIT licencija, įdiegiama viena komanda, o visas apdorojimas atliekamas jūsų kompiuteryje. Ji turi vieną užduotį: paruošti dokumentą taip, kad DI matytų ne tik žodžius, bet ir struktūrą.

Nusiunčiate DI sutartį, ataskaitą ar apskaitos eksportą, o gaunate atsakymą, kuris neturi nieko bendra su dokumentu. Dažniausiai kaltas ne modelis. Failas turi formatą: Word yra archyvas su žymėjimu, Excel – skaičiuoklė su ryšiais tarp langelių, o PDF – puslapyje koordinatėmis išdėstytų simbolių rinkinys. Modelis dirba su tekstu, todėl kažkas turi tą tekstą išgauti.

Štai ką daro MarkItDown. Saugykla yra adresu github.com/microsoft/markitdown, jai taikoma MIT licencija, tad galite ją naudoti be apribojimų. 2026 m. rugpjūčio 18 d. ji turi 174,412 žvaigždučių ir 12,756 fork'us; naujausia versija 0.1.7 išleista liepos 29 d. Projektas aktyvus, nors jo dėmesys nuo kūrimo pasislinko prie priežiūros: yra 481 atviras pull request, palyginti su 183, sujungtais per visą projekto istoriją.

Kūrėjai jo paskirtį apibūdina taip:

MarkItDown yra lengva Python programa, skirta įvairių formatų failams konvertuoti į Markdown, kad juos būtų galima naudoti su dideliais kalbos modeliais ir susijusiais teksto analizės procesais.

— Microsoft, projekto aprašymas (išversta), https://github.com/microsoft/markitdown

Kitas aprašymo sakinys paaiškina pusę priekaištų, kuriuos žmonės išsako dėl šio įrankio:

Nors išvestis dažnai atrodo visai neblogai ir yra lengvai skaitoma žmogui, ji skirta teksto analizės įrankiams, todėl gali netikti dokumentams, kuriuos žmonės skaitys ir kuriems reikia itin tikslaus formato išsaugojimo.

— Microsoft, projekto aprašymas (išversta), https://github.com/microsoft/markitdown

Išvestis yra žaliava modeliui. Tai nebus gražus dokumentas, ir projektas tai aiškiai pasako jau pirmame skyriuje.

Aprašyme tiesiai paaiškinama, kodėl naudojamas Markdown: pirmaujantys modeliai jau „kalba“ šiuo žymėjimu ir įtraukia jį į savo atsakymus be raginimo, nes mokymo metu matė milžiniškus jo kiekius. Žymėjimas taip pat kompaktiškas: antraštei užtenka trijų grotelių, o ne keliolikos eilučių metaduomenų.

Kuo MarkItDown skiriasi nuo įprasto konverterio?

Svarbiausia mintis

Tokie konverteriai kaip pandoc verčia vieną žymėjimo kalbą į kitą ir išsaugo žmonėms skirtą išdėstymą. pandoc visiškai nepriima PDF kaip įvesties. MarkItDown sprendžia priešingą problemą: ištraukia turinį iš „Office“ failo ir sutvarko jį taip, kad modelis iškart suprastų, neeikvodamas žetonų. Vizualinio išdėstymo išsaugojimas nėra jo tikslas – tuo ir skiriasi šie įrankiai.

Skirtumą aiškiai parodo vienas pavyzdys. Paimkite aplanką su dvidešimčia PDF failų ir pabandykite juos apdoroti su pandoc. Nepavyks: pandoc gali sukurti PDF failus kaip išvestį, bet negali jų skaityti kaip įvesties. O situacija „turiu krūvą dokumentų, duokite juos modeliui“ yra dažniausia.

MarkItDown autoriai lygina save su textract – biblioteka, kuri tiesiog ištraukia tekstą iš bet kur. Skirtumas tas, kad MarkItDown bando išsaugoti struktūrą: antraštes, sąrašus, lenteles ir nuorodas.

SavybėpandocMarkItDown
Skaito PDF failusnetaip, su išlygomis
Skaito Word, Excel, pateiktisiš daliestaip
Kam skirta išvestisžmonėmsmodeliams
Pagrindinė vertėišdėstymo tikslumasstruktūra ir mažai simbolių
Diegimasatskira programaviena Python komanda

Praktinė išvada paprasta. Jei reikia straipsnį paversti publikavimui tinkamu išdėstymu, naudokite pandoc. Jei norite, kad DI išnagrinėtų dvidešimt sutarčių, naudokite MarkItDown.

Kaip įdiegti MarkItDown, kad nebūtų įdiegta pirmoji versija?

Svarbiausia mintis

Su 0.1.8 versija projekto aprašyme pateikta komanda įdiegia naujausią versiją su Python 3.14 ir 3.12; tai dar kartą patikrinta aštuoniose švariose aplinkose. Tylus grįžimas prie 0.0.2 – antrosios versijos projekto istorijoje – vis dar įvyksta su Python 3.15, „Intel“ Mac kompiuteriuose su 3.14 ir senesnių „macOS“ versijų Mac kompiuteriuose su 3.13 bei 3.14. Tokiais atvejais diegimo programa praneša apie sėkmę. Todėl naudokite Python 3.12, nurodykite reikiamus formatus atskirai ir iškart patikrinkite versijos numerį.

Pirmiausia – tinkama komanda, paskui – kodėl ji tinkama.

  1. Patikrinkite Python versiją

    Patikimiausia yra Python 3.12: naujausias MarkItDown įsidiegia visose su šia versija išbandytose aplinkose. Komanda python3 --version parodo, kokią versiją turite. „Intel“ Mac kompiuteriuose arba Mac kompiuteriuose su senesne „macOS“ versija Python 3.13 ir 3.14 gali tyliai įdiegti senesnę versiją; Python 3.15 dar nepalaikomas, kaip paaiškinta toliau.

  2. Įdiekite nurodydami formatus

    Vykdykite pip install 'markitdown[pdf,docx,xlsx,pptx]'. Kabutės būtinos, antraip apvalkalas interpretuos laužtinius skliaustus. „Intel“ Mac kompiuteryje po install pridėkite vėliavėlę --prefer-binary.

  3. Iškart patikrinkite, ar įdiegta

    Vykdykite markitdown --version. Atsakymas turėtų būti markitdown 0.1.8 arba naujesnė versija. Mažesnis skaičius reiškia, kad įdiegta senesnė versija; šiame skyriuje paaiškinta kodėl.

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

Projekto aprašyme kaip pagrindinė komanda – viskam įdiegti iš karto – nurodyta pip install 'markitdown[all]'. 2026 m. rugsėjo 28 d., praėjus savaitei po 0.1.8 išleidimo, keturi variantai buvo išbandyti švariose aplinkose „Apple Silicon“ Mac kompiuteryje su Python 3.14.6 ir 3.12.12:

KomandaĮdiegta su Python 3.14Įdiegta su 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

Visi aštuoni diegimai baigėsi pranešimu „Successfully installed“, o markitdown --version kiekvienu atveju grąžino 0.1.8. Rugpjūtį, kai naujausia buvo 0.1.7, trečioji komanda su Python 3.14 įdiegė 0.0.2, išleistą 2025 m. kovo 8 d. – antrąją versiją projekto istorijoje. Dabar yra vienuolika stabilių versijų – nuo 0.0.1 iki 0.1.8 – ir dvidešimt šešios, įskaitant bandomąsias versijas.

Priežastis buvo priklausomybių grandinė. 0.1.7 versijoje papildoma parinktis [all] įtraukia konkrečios leidimų serijos „YouTube“ subtitrų biblioteką, o visose tos serijos versijose nurodyta, kad jos neveikia su Python 3.14. Diegimo programa jas atmeta ir, kadangi versija nenurodyta, grįžta per MarkItDown versijas, kol randa tokią, kurią gali įdiegti. Ji randa 0.0.2 ir ją įdiegia – jūsų kompiuteryje atsiduria prieš pusantrų metų išleista versija. 0.1.8 versijoje subtitrų bibliotekos reikalavimas buvo pakeltas iki serijos, veikiančios su 3.14, ir senesnės versijos diegimas sustojo.

Šis mechanizmas vis dar veikia. Jei diegimo programa jūsų sistemoje neranda vieno būtino komponento, ji taip pat tyliai grįžta prie 0.0.2. Naujesnėse versijose tas komponentas yra onnxruntime variklis, naudojamas failų tipų detektoriuje. Mac kompiuteryje jo versijos suderinamos taip: Python 3.12 atveju – „macOS 11“ ir naujesnė; 3.13 atveju – „macOS 13“; 3.14 atveju – tik „Apple Silicon“ ir „macOS 14“ arba naujesnė. Jei jūsų Mac neatitinka šių reikalavimų, net paprasta komanda pip install markitdown įdiegia 0.0.2. Bandymas „Intel“ Mac kompiuteryje su Python 3.14 per „Rosetta“ davė būtent tokį rezultatą: „Successfully installed“, jokių įspėjimų ir viduje – 0.0.2.

„Intel“ Mac kompiuteriuose yra dar viena komplikacija. Nuo 2026 m. birželio kriptografijos biblioteka, reikalinga PDF skaitymui, išleidžiama be iš anksto sukompiliuotos versijos šiam procesoriui, todėl diegimo programa bando ją sukompiliuoti iš šaltinio kodo. Pridėkite prie komandos vėliavėlę --prefer-binary, ir bus naudojama ankstesnė versija su paruoštu paketu. Bandant su Python 3.13 „Intel“ kompiuteryje įsidiegė 0.1.8, o PDF atsidarė. Vėliavėlė įdiegia cryptography 48.0.1, kurioje žinomi trys pažeidžiamumai: PKCS#7 iššifravimo ir sertifikatų grandinės tikrinimo srityse. MarkItDown ją naudoja tik šifruotiems PDF iššifruoti, o dokumentų skaitymas šių dalių nepasiekia.

Su Python 3.15 senesnė versija įdiegiama dėl dviejų priežasčių. 0.1.8 versija deklaruoja palaikanti tik nuo 3.10 iki 3.14, o 3.15 versijai variklio dar nėra. 3.15 versijos diegimo programos sprendimas tai patvirtina: ir paprasta komanda, ir komanda su formatais įdiegia tą pačią 0.0.2 versiją.

Įspėjimas apie senesnės versijos įdiegimą atrodo taip – po vieną eilutę kiekvienai komandos papildomai parinkčiai:

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

Tokia eilutė pasimeta tarp dešimčių atsisiuntimo eilučių ir nieko nepasako apie įdiegtą versiją. Naudojant paprastą komandą be papildomų parinkčių, įspėjimo apskritai nėra. Galutinė ataskaita džiugi: „Successfully installed“.

Diegimas be papildomų parinkčių taip pat nėra sprendimas. Bazinis paketas įdiegiamas, bet PDF failų atidaryti negali:

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]'

Pats įrankis rekomenduoja [all], o su 0.1.8 šis patarimas vėl veikia su Python 3.14 ir 3.12. Vis dėlto geriau formatus nurodyti atskirai: [all] prideda dar maždaug penkiolika paketų ir apie 55 megabaitus, įskaitant bandomąją „Azure“ biblioteką ir tą pačią „YouTube“ priklausomybių grandinę, kuri jau kartą sugadino diegimą.

Diegimo programa pati susitvarko su bandomąja „Azure“ versija. Paprastai pip bandomąsias versijas praleidžia, tačiau čia reikalavime aiškiai nurodyta bandomoji versija, todėl ji įdiegiama. Buvo išbandytos keturios pip versijos – nuo 23.2 iki 26.2 – su Python 3.12; visos parenka 0.1.8.

Dėmesio

Iškart po įdiegimo vykdykite markitdown --version. Tai trunka penkias sekundes ir yra vienintelis būdas sužinoti, ar įdiegėte tai, ko prašėte. Sėkmės pranešimas čia nieko nereiškia.

Rugpjūtį pakartotinis diegimas kitoje švarioje aplinkoje davė tą patį rezultatą: 0.0.2 ir žodį „Successfully“.

Verta iš anksto žinoti keletą praktinių dalykų.

Programa gana didelė: bazinis diegimas užima 143 megabaitus, o su keturiais formatais – 303. Sunkiausias komponentas, užimantis 81 megabaitą, yra failų tipų detektorius, įtraukiamas net į bazinį diegimą. Nešiojamajame kompiuteryje tai nesvarbu, bet svarbu riboto dydžio debesijos funkcijai.

Nesitikėkite, kad atsarginis variantas bus veidrodinė saugykla. Išbandyta veidrodinė saugykla pateikė indeksą, o MarkItDown failai joje buvo, tačiau trūko vienos būtinos priklausomybės, todėl diegimas nepavyko tiek su Python 3.14, tiek su 3.12.

Diegimas – smulkmena, palyginti su pagrindine problema. Daug dažniau DI pateikia nesąmones todėl, kad į jo konteksto langą pateko netinkamas dalykas arba netinkama jo reprezentacija. Gebėjimas prieš užduotį nuspręsti, ką pateikti modeliui, vadinamas konteksto inžinerija, o dokumentų paruošimas yra jos dalis.

Kaip pirmąjį dokumentą paversti tekstu?

Svarbiausia mintis

Viena komanda terminale: programos pavadinimas ir failo kelias. Pagal numatytuosius nustatymus rezultatas išvedamas tiesiai į langą, todėl galite jį iškart išsaugoti faile. Yra trys būdai: išvesti į konsolę, įrašyti naudojant vėliavėlę arba perduoti failą srautu. Jei norite tai įterpti į savo scenarijus, yra trijų eilučių Python apvalkalas, kuris taip pat priima URL adresus.

Trumpiausias variantas:

markitdown dogovor.docx

Tekstas išvedamas terminale. Norėdami išsaugoti jį faile, galite rinktis iš dviejų būdų:

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

Mac ir Linux sistemose skirtumas nereikšmingas, bet Windows sistemoje jis svarbus: peradresuojant su > programa gali užstrigti, jei išvestyje yra kirilicos tekstas.

Failą galite perduoti srautu; tokiu atveju pravarti plėtinio užuomina:

cat dogovor.docx | markitdown -x docx

Štai pagrindinės vėliavėlės iš 0.1.8 pagalbos:

VėliavėlėKą ji daro
-o, --outputįrašo rezultatą į failą, užuot išvedusi jį į langą
-x, --extensionplėtinio užuomina, kai failas perduodamas srautu
-m, --mime-typeturinio tipo užuomina
-c, --charsetsimbolių koduotės užuomina
-d, --use-docintelapdorojimas per mokamą „Microsoft“ debesijos paslaugą
-v, --versionparodo versiją

Toje pačioje pagalboje nurodytos dar trys naudingos vėliavėlės, kiekviena išbandyta: --list-plugins parodo įdiegtus papildinius, -p įjungia juos konkrečiam paleidimui, o --keep-data-uris išsaugo dokumente įterptus vaizdus išvestyje (pagal numatytuosius nustatymus jie apkarpomi). Likę nustatymai skirti „Microsoft“ debesijos paslaugoms.

Python apvalkalui užtenka trijų eilučių:

from markitdown import MarkItDown

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

Tas pats iškvietimas priima URL adresą. Paprastas puslapis grąžino tvarkingą 167 simbolių tekstą su antrašte ir nuoroda, be meniu ir poraštės:

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

Kokius formatus supranta MarkItDown ir ką tai iš tikrųjų reiškia?

Svarbiausia mintis

Projekto aprašyme išvardyta daug formatų: „Office“ failai, PDF, vaizdai, garso įrašai, archyvai, „YouTube“ nuorodos ir elektroninės knygos. Trys iš jų neveikia taip, kaip leidžia suprasti pavadinimas. Nemokamoje versijoje nėra jokio vaizdų teksto atpažinimo. Kalbos įrašai siunčiami į anglų kalbos variklį. Failai, kurių nepavyko išnagrinėti, iš archyvų dingsta be įspėjimo.

Apibendrinamoji lentelė, kurioje palyginama, kas deklaruojama ir kas vyksta iš tikrųjų.

FormatasDeklaruojamaKas vyksta iš tikrųjų
Word, Excel, pateiktystaipveikia tvarkingai; tai stiprioji pusė
CSV, JSON, XML, HTMLtaipveikia, bet CSV turi skirtukų spąstus
PDFtaippriklauso nuo išdėstymo: vienas stulpelis sujungiamas, du stulpeliai subyra
Vaizdai„metaduomenys ir atpažinimas“nėra atpažinimo, tik metaduomenys arba mokamas vaizdų modelis
Garso įrašai„kalbos transkripcija“siunčiami į „Google“ anglų kalbos variklį
ZIP archyvai„apdoroja turinį“viskas, ko nepavyksta išnagrinėti, dingsta tyliai
„YouTube“ nuorodostaiptik visos nuorodos, kurių forma '<OFFICIAL_URL>'?...
EPUB elektroninės knygostaipveikia

Trys dalykai išsamiau.

Vaizdai. Aprašyme yra žodis OCR, todėl žmonės tikisi, kad programa skaitys tekstą iš nuotraukos. Taip nėra. Ji skaito metaduomenis naudodama atskirą programą exiftool, o prijungus vaizdų modelį su savo raktu gali nusiųsti jam vaizdą aprašymui sukurti.

Garsas. Kalbos transkripcija galima, tačiau kalba neperduodama, o variklis pagal numatytuosius nustatymus tikisi anglų kalbos. Be to, jis kreipiasi į neoficialų nemokamą „Google“ adresą, kuriame vienam raktui taikomas maždaug penkiasdešimties užklausų per dieną limitas.

Archyvai. Programa išpakuoja ZIP failus, pereina per juose esančius failus ir sujungia rezultatus. Jei failo nepavyksta išnagrinėti, klaida pagaunama ir nuslepiama. Failo rezultate tiesiog nebus, ir apie tai nesužinosite.

Kas nutinka dokumentams, kuriuose yra kirilicos?

Svarbiausia mintis

Naujausia versija apdoroti buvo pateikti trys failai su kirilica: Word sutartis, Excel atsargų lentelė ir pateiktis. Kirilicos tekstas ir skaičius visuose trijuose išliko nepakitę. Problemos kyla trijose vietose: CSV failuose, kuriuose naudojami kabliataškiai, Excel langelių valiutos formatavime ir Windows konsolės išvestyje. Visoms trims problemoms yra sprendimo būdų.

Toliau pateikti failai sukurti būtent bandymams; jų duomenys išgalvoti.

Excel atsargų lentelė taip pat išėjo tvarkinga, o lapo pavadinimas tapo antrašte:

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

Pateiktis tapo tekstu: skaidrių numeriai parodyti kaip anotacijos, o skaidrių pavadinimai – kaip antraštės. Kirilicos tekstas ir čia išliko nepakitęs. Teiginys „MarkItDown nesupranta kirilicos“ yra klaidingas.

Dabar – trys vietos, kuriose kyla problemų.

CSV su kabliataškiais. Palyginimui buvo apdoroti du identiški sąskaitų eksportai. Faile, kuriame naudoti kableliai, gauta taisyklinga keturių stulpelių lentelė. Faile su kabliataškiais visa eilutė atsidūrė viename langelyje.

Visa eilutė atsidūrė viename langelyje. Koduotė atpažinta teisingai, klaidos nebuvo, o vėliavėlė -c nepadeda. Modelis gaus šią lentelę ir nesupras, kuri reikšmė yra suma, o kuri – būsena. Eksportuokite failą iš naujo aiškiai pasirinkę kablelio skirtuką ir tinkamą koduotę, originalo nekeisdami. Nepakeiskite visų kabliataškių kableliais: skirtukai kabutėmis apgaubtame tekste ir dešimtainiai kableliai gali būti reikšmės dalis. Jei eksportuoti iš naujo neįmanoma, originalą išnagrinėkite pagal tikrąjį jo skirtuką ir naują CSV parašykite CSV taisykles išmanančiu įrašymo įrankiu, išlaikančiu kabutes bei langelių reikšmes. Prieš analizę palyginkite stulpelių, eilučių skaičių ir kontrolines sumas su pradiniu eksportu.

Excel valiutos formatavimas. Valiutos simbolis saugomas langelio rodymo nustatymuose, todėl į pačią reikšmę nepatenka. Projekto prižiūrėtojai patvirtino priežastį. Kainoraštyje ar sąskaitoje tai svarbu: modelis matys skaičius nežinodamas, kokią valiutą jie reiškia.

Windows konsolė. Apdorojant failus su nelotyniškais rašmenimis, programos darbas gali nutrūkti.

Klaidos pėdsake matoma cp1251 koduotė, vadinasi, kalta Windows konsolė. Pats dokumentas išnagrinėjamas tinkamai; nepavyksta tik išvesti rezultatą terminalo lange. Yra du sprendimo būdai:

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

Pirmasis visiškai apeina konsolę, o antrasis priverčia Python rašyti UTF-8 koduote. Žmonės bent šešis kartus pateikė patobulinimų šiai pačiai įrankio problemai spręsti: kai kurie pasiūlymai buvo uždaryti nesujungti, o kiti vis dar atviri. Todėl tenka naudoti apėjimo būdą.

PDF failuose pasitaiko ir ketvirtas požymis – vietoj raidžių pateikiamos tokios sekos kaip (cid:1090). Tai reiškia, kad faile yra nestandartinė šriftų lentelė ir simbolių nepavyko iškoduoti. Tokį dokumentą apdoroti su MarkItDown nėra prasmės – reikia kito įrankio.

Kodėl PDF tampa netvarka?

Svarbiausia mintis

PDF nėra struktūros – jame tėra simboliai su puslapio koordinatėmis. Vieno stulpelio tekstas sujungiamas gana neblogai. Du stulpeliai virsta netvarka: eilutės sujungiamos iš skirtingų stulpelių, žodžiai sulimpa, o išdėstymas tampa lentelėmis, kurių dokumente niekada nebuvo. Įrankis PDF failuose apskritai neatpažįsta antraščių – tai aiškiai rodo ir šaltinio kodas, ir nepriklausomi matavimai.

Bandymui apdorotas 2.16 megabaito, dviejų stulpelių mokslinis straipsnis. Išėjimo kodas buvo nulis; po 0.9 sekundės išvestyje buvo 88,000 simbolių, kurių beveik visi buvo beprasmiai. Aštuoniasdešimt aštuoni tūkstančiai simbolių sudaro įspūdį, kad viskas pavyko. Kol neatidarote failo:

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

Vienu metu nutiko trys dalykai. Dviejų stulpelių išdėstymas virto lentelėmis, kurių straipsnyje nėra. Žodžiai sulipo be tarpų. Paskutinė eilutė yra vertikali šoninė juosta puslapyje, ištraukta atbulai.

Tada paaiškėjo juokinga dalis. Bandomasis straipsnis pasirodė esąs būtent darbas, kuriame buvo vertinamas MarkItDown ir lyginamas su kitais įrankiais. Įrankis pastraipą apie savo paties matavimus pavertė štai kuo:

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-

Kairysis ir dešinysis stulpeliai sujungti eilutė po eilutės. Tai gavęs modelis perskaitys pusę vienos pastraipos sakinio ir pusę kitos.

Priežastis techninė ir paprasta. Word aiškiai saugo informaciją „tai antraštė“ ir „tai lentelės langelis“. PDF saugo „tai simbolis“ ir „štai jo koordinatės puslapyje“. Struktūros atkūrimas iš koordinačių yra atskira ir sudėtinga užduotis, o MarkItDown ją vos bando atlikti. PDF analizavimo šaltinio kode antraščių atpažinimo nėra: jei puslapis neatpažįstamas kaip forma ar lentelė, visas dokumentas apdorojamas atliekant bazinį teksto išgavimą.

Naudotojai apie tai nuolat praneša projekto saugykloje, be kita ko, dėl mokslinių straipsnių ir lentelių.

Įrankis PDF failuose neranda nė vienos antraštės – būtent tai rodo šaltinio kodas.

Teiginys „MarkItDown tikslumas siekia 82 %“ internete kartojamas nenurodant jokios metodikos. Atsekus jį iki pirminio šaltinio nieko nerandama: nuorodų grandinė baigiasi puslapyje, kuris neįsikelia. To negalima laikyti matavimo rezultatu.

Kas nutinka nuskaitytai sutarčiai?

Svarbiausia mintis

Nieko. Failas apdorojamas, programa praneša apie sėkmę, o išvestyje yra nulis simbolių. Jokios klaidos ar įspėjimo. Tai du kartus išbandyta su iš vaizdo sukurtu PDF ir atskirai su pačiu vaizdu – rezultatas buvo toks pat. Įrankis ištraukia tekstą, kuris faile jau saugomas kaip tekstas; nemokama versija neturi atpažinimo galimybių.

Toks elgesys pavojingesnis už kitus, nes neatrodo kaip nesėkmė.

Bandymui iš vaizdo su tekstu buvo sukurtas PDF – būtent tokį failą gaunate nufotografavę arba nuskenavę sutartį. Bandymas pakartotas siekiant atmesti atsitiktinumo galimybę:

ĮvestisIšėjimo kodasSimbolių išvestyjeKlaidos pranešimas
PDF iš vaizdo, 1 bandymas00nėra
PDF iš vaizdo, 2 bandymas00nėra
PNG vaizdas tiesiogiai01 (eilutės lūžis)nėra

Nulis simbolių ir nulis klaidų – du kartus iš eilės. Nulinis išėjimo kodas reiškia „viskas pavyko“, todėl bet kuris scenarijus, tikrinantis sėkmę pagal išėjimo kodą, laikys dokumentą apdorotu. Tada tuščia išvestis perduodama modeliui, modelis nieko nemato ir ima kurti atsakymą iš oro.

Dėmesio

Jei apdorojate dokumentus paketais, patikrinkite išvesties ilgį. Išėjimo kodas nieko nepasakys: tuščias failas su nuliniu išėjimo kodu – taip atrodo nuskaitytas dokumentas.

Yra du sprendimo būdai ir abu mokami. Pirmasis – vėliavėlė -d, kuri siunčia dokumentą į „Microsoft“ debesijos atpažinimo paslaugą; vėliavėlės pagalbos tekste aiškiai nurodyta, kad būtinas galiojantis paslaugos galinis taškas. Antrasis – atskiras priedų paketas, kuris siunčia puslapius vaizdų modeliui naudodamas jūsų raktą, tad už kiekvieną puslapį mokate modelio teikėjui. Nuo 2026 m. balandžio atviroje diskusijoje apie antrąjį būdą pranešama, kad apdorojamas tik pirmasis kelių puslapių nuskaityto dokumento puslapis.

Taip pat galite paleisti atpažinimo modelį savo kompiuteryje, bet tam reikia atskiro projekto.

Vienkartiniam dokumentui lengviau jį atidaryti ir nukopijuoti tekstą rankiniu būdu. Jei turite nuolat apdoroti nuskaitytus dokumentus, reikia įrankio su įtaisytuoju atpažinimu.

Ar galima tiesiog įkelti failą į internetinį konverterį?

Svarbiausia mintis

Techniškai – taip; šiuo vardu pavadinta daug svetainių. Tačiau nė viena jų nėra susijusi su „Microsoft“. Teiginį „failas niekada neišeina iš jūsų naršyklės“ galima patikrinti vienu spustelėjimu, ir jis ne visada teisingas. Prieš įkeldami sutartį ar eksportą su žmonių vardais, patys patikrinkite, kur keliauja failas.

„MarkItDown online“ yra viena dažniausių paieškos pasiūlymų, ir tokią paslaugą siūlančių svetainių yra. Originalus „Microsoft“ įrankis neturi jokios svetainės – jį galima naudoti tik pačiam įsidiegus programą. Bet kuri panašaus pavadinimo naršyklėje atidaroma paslauga sukurta kieno nors kito.

Tokią paslaugą galite patikrinti per minutę: atverkite kūrėjų įrankių tinklo užklausų skirtuką, įkelkite kokį nors nepavojingą failą ir pažiūrėkite, ar jis siunčiamas į serverį. Jei taip, teiginys apie apdorojimą naršyklėje yra klaidingas, kad ir kaip užtikrintai jis būtų pateiktas DUK.

Dėmesio

Sutartyje, sąskaitoje ar eksporte su darbuotojų vardais yra asmens duomenų. Jei tokį failą siunčiate trečiosios šalies svetainei, esate tas, kas jį perdavė. Vietinė programa padeda išvengti šios problemos: failas neišeina iš jūsų kompiuterio.

Todėl MarkItDown vertinamas ten, kur dokumentų negalima siųsti už organizacijos ribų. Vienoje diskusijoje žmogus aprašė savo situaciją: darbo nešiojamajame kompiuteryje buvo draudžiama naudoti savavališkas programas, bet leista naudoti Python bibliotekas, todėl vietinė programa pasirodė vienintelė prieinama galimybė.

Kiek iš tikrųjų sutaupo MarkItDown?

Svarbiausia mintis

Pagrindinė nauda – modelis apskritai gali suprasti dokumentą. Skiriasi ir dydis: palyginus „Office“ failuose esančio žymėjimo apimtį su ištraukto teksto dydžiu matyti, kad jis sumažėja nuo penkių iki septynių kartų. Taip pat pašalinama viskas, ko modeliui nereikia skaityti: šriftų, paraščių ir langelių spalvų aprašai.

„Office“ failas yra kaip archyvas su žymėjimu. Išpakavus tris bandomuosius failus ir palyginus turinį turinčios dalies dydį su išvesties dydžiu, gauname štai ką:

FailasŽymėjimas vidujeIštrauktas tekstasKartų mažesnis
Word sutartis3,701 baito711 baitų5.2
Excel skaičiuoklė1,561 baito262 baitai6.0
Pateiktis2,203 baitų296 baitai7.4

Failai maži; didesnių proporcijos skirsis ir vieno bendro sutaupymo skaičiaus nėra. Jei lyginamuosiuose straipsniuose pateikiami apvalūs skaičiai, pasidomėkite metodika.

Patys kūrėjai taip pat kalba apie sutaupymą: projekto aprašyme konkrečiai sakoma, kad Markdown žymėjimas yra labai taupus simbolių atžvilgiu. Tai tiesa, bet tai neturėtų būti pagrindinis argumentas. Skirtumas tarp „modelis gavo tris tūkstančius simbolių vietoj penkiolikos tūkstančių“ ir „modelis gavo aiškią struktūrą vietoj mišrainės“ yra visai kito masto. Pirmasis variantas taupo pinigus, antrasis lemia, ar atsakymas turės prasmę.

Jei jums rūpi konteksto naudojimas, apie tai kalbama atskirai: Kur keliauja žetonai Claude aplinkoje ir kiek jų įtraukta į kiekvieną planą.

Kaip prijungti MarkItDown prie Claude per MCP?

Svarbiausia mintis

Projektas turi atskirą paketą, kuris viena komanda paleidžia MCP serverį: nurodote failo kelią ir gaunate tekstą. 2026 m. rugsėjį paketas pagaliau buvo atnaujintas iki 0.0.1a7, bet tai vis dar bandomoji versija, pagal numatytuosius nustatymus siunčianti telemetriją „Microsoft“. Toliau pateikta komanda prijungia serverį per uv, prisega versiją, naudoja Python 3.12 ir išjungia telemetriją. Autentifikavimo nėra, o pagal paties projekto dokumentaciją serveris gali skaityti bet kurį failą, prieinamą jį paleidusiam naudotojui.

MCP – tai būdas suteikti DI išorinį įrankį, kuriuo jis gali naudotis pats. Mechanizmo ir kitų serverių apžvalgą rasite Claude Code MCP serverių apžvalgoje.

MarkItDown serveris pateikia lygiai vieną įrankį: konvertuoti dokumentą į tekstą. Jis priima vietinio failo kelią, puslapio URL adresą arba tiesiai į užklausą įterptus duomenis.

Jis prijungiamas prie Claude Code viena komanda, prisegant serverio versiją. Reikalinga uv paketų tvarkyklė:

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

Antrosios komandos atsakyme ties markitdown turėtų būti rodoma „Connected“. Pirmą kartą paleidžiant atsisiunčiama apie septyniasdešimt paketų ir tai užtrunka iki minutės; vėliau serveris paleidžiamas per vieną–pusantros sekundės.

Šios išlygos patikrintos rankiniu būdu.

Versija 0.0.1a7 išleista 2026 m. rugsėjo 14 d. Iki tol serveris daugiau nei metus buvo įstrigęs ties 0.0.1a4, išleista 2025 m. gegužę. Naujausias versijos numeris vis dar priklauso bandomajai versijai.

Ji neįsidiegs visose sistemose su nauja Python versija. Priklausomas onnxruntime variklis su Python 3.14 Mac kompiuteriuose prieinamas tik „Apple Silicon“ įrenginiams su „macOS 14“ arba naujesne versija, todėl diegimas nepavyksta „Intel“ Mac kompiuteriuose ir kompiuteriuose su „macOS 13“ ar senesne versija, kai naudojamas Python 3.14. „Apple Silicon“ Mac kompiuteryje serveris išbandytas su Python 3.14, 3.13 ir 3.12, ir įdiegtas visais trimis atvejais. Komandoje naudojama UV_PYTHON=3.12: 3.12 skirti paruošti paketai yra „Windows“, Linux ir „Apple Silicon“ Mac sistemoms, o jei šios Python versijos neturite, uv ją atsisiųs. „Intel“ Mac kompiuteriuose ir čia yra išlyga: uv sukompiliuos cryptography biblioteką iš šaltinio, nes nuo 2026 m. birželio nebėra paruošto paketo „Intel“ sistemoms. Diegimas trunka ilgiau ir gali nepavykti.

Įdiegtos MarkItDown versija priklauso nuo uv versijos. Nuo MarkItDown 0.1.6 jo papildomai parinkčiai [all] būtina bandomoji „Azure“ biblioteka: uv 0.12 ir naujesnė versija ją įdiegia kartu su naujausia MarkItDown 0.1.8, o senesnės uv versijos grįžta prie 0.1.5. Patikrinkite uv versiją komanda uv --version.

Už kompiuterio ribų siunčiami du dalykai. Pirmasis – telemetrija: Mac ir Linux sistemose serverio viduje esantis onnxruntime variklis ją pagal numatytuosius nustatymus siunčia „Microsoft“. Komandoje esantis kintamasis ORT_DISABLE_TELEMETRY=1 ją išjungia. Atliekant bandymą serveris be jo prisijungė prie „Microsoft“ telemetrijos galinių taškų. Nustačius kintamąjį, apdorojant failus iš disko jokių ryšių nebuvo.

Antrasis dalykas – garsas. WAV, MP3, M4A ir MP4 failai įprastu HTTP ryšiu be šifravimo siunčiami į „Google“ kalbos atpažinimo paslaugą transkripcijai. Geriau per ją nesiųsti pokalbių su klientais įrašų.

Didelis dokumentas netilps. Atviroje diskusijoje aprašyta, kaip 51,000 žetonų serverio atsakymas pasiekė 25,000 žetonų limitą, o įrankis failų į dalis neskaido.

Ir saugumas. Paties paketo dokumentacijoje aiškiai sakoma:

Serveris nepalaiko autentifikavimo ir veikia jį paleidusio naudotojo teisėmis. Konvertavimo įrankį galima naudoti bet kuriam serverio naudotojui prieinamam failui arba bet kokiems tinkle esantiems duomenims skaityti.

— Microsoft, paketo „markitdown-mcp“ aprašymas (išversta), https://github.com/microsoft/markitdown/tree/main/packages/markitdown-mcp

Kitaip tariant, agentas su šiuo įrankiu gali skaityti viską, ką galite skaityti jūs. Tai priimtina dirbant savo kompiuteryje. Serverio negalima viešai atskleisti ar duoti nepatikimam agentui.

Dėmesio

Projekto dokumentacijoje nėra specialios Claude Code konfigūracijos – aprašyta tik Claude Desktop ir paleidimas konteineryje. Jei internete rasite paruoštą konfigūraciją, pristatomą kaip „iš oficialios dokumentacijos“, skirtą Claude Code, žinokite, kad tokios konfigūracijos saugykloje nėra.

Įprastam darbui lengviau paleisti programą komanda ir įdėti gautą tekstą į projektą. Tada failas yra greta kitos medžiagos, kur modelis gali jį peržiūrėti pats.

Kada sąžiningiau naudoti kitą įrankį?

Svarbiausia mintis

Taisyklė paprasta: jei struktūra jau įrašyta faile, naudokite MarkItDown – jis greičiausias ir nemokamas. Jei struktūrą reikia atkurti iš puslapio vaizdo, naudokite įrankį su išdėstymo modeliais. Docling apdoroja lenteles ir sudėtingus išdėstymus, MinerU – formules ir kelis stulpelius, o mokamos debesijos paslaugos padeda, kai nėra laiko gaišti su nustatymais.

Palyginimas pagal užduotis; „GitHub“ žvaigždutės čia niekuo dėtos:

ĮrankisStiprybėKą tenka sumokėti
MarkItDown„Office“ failai, greitis, nemokamasnesusitvarko su sudėtingais PDF ar nuskaitytais dokumentais
Doclinglentelės ir išdėstymai naudojant specializuotus modeliusdešimtys sekundžių dokumentui
MinerUkeli stulpeliai, formulės, tankios lentelėssudėtingesnis diegimas
Markerdidelis tikslumas, formulės, iliustracijosreikalinga vaizdo plokštė, o licencija riboja pajamas
unstructuredgrąžina dokumento struktūrą dalimis su aprašaisišvestį sunkiau naudoti
Debesijos analizatoriainereikia nustatymųpinigai ir dokumento siuntimas už jūsų kompiuterio ribų

Yra viena detalė apie Marker, kurią lyginamieji straipsniai praleidžia. Nuo 2026 m. liepos pats kodas platinamas pagal leidžiančią licenciją, o modelio svoriams taikoma atskira licencija su riba: naudoti nemokamai galima, jei jūsų įmonės pajamos praėjusiais metais neviršijo penkių milijonų dolerių ir tais pačiais metais pritraukto finansavimo suma neviršijo tokios pat sumos. Atskira sąlyga draudžia jį naudoti visiems, kurie kuria konkuruojantį produktą. Daugumai skaitytojų tai nesvarbu, bet augančiam verslui tai priežastis prieš pasirenkant perskaityti licenciją.

Iš to kyla praktiška keturių žingsnių eiga:

  1. Viską apdorokite su MarkItDown – jis nemokamas ir greitas.
  2. Atidarykite rezultatą ir patikrinkite jo dydį.
  3. Jei tekstas prasmingas, užduotis baigta; daugiau nieko nereikia.
  4. Jei išvestis netvarkinga arba tuščia, konkretų failą apdorokite sunkesniu įrankiu.

Taip už laiką ir sudėtingumą mokėsite tik už dokumentus, kuriems to reikia.

Kaip įtraukti MarkItDown į darbo eigą?

Svarbiausia mintis

Pati Anthropic savo paruoštų įgūdžių aprašymuose nurodo taisyklę: naudokite šį įrankį dokumentui skaityti. Neplanuokite pagal jį redaguoti. Štai trys scenarijai, kuriuose jis praverčia jau pirmą kartą: panašių dokumentų paketų analizė, nuolatinių informacinių medžiagų įtraukimas į DI projektą ir apskaitos sistemos eksporto paruošimas analizei.

Pati Anthropic naudoja MarkItDown savo paruoštuose įgūdžiuose, skirtuose darbui su „Office“ failais, ir juose aiškiai nurodo ribą, kurios turėtumėte laikytis:

Greitai apžiūrėkite lapą: markitdown file.xlsx. Langelių koordinatės neprieinamos, todėl neplanuokite pagal tai redaguoti.

— Anthropic, įgūdžio dirbti su lentelėmis aprašymas (išversta), https://github.com/anthropics/skills/blob/main/skills/xlsx/SKILL.md

Tekste prarandamos langelių ir puslapių nuorodos, todėl jo negalima naudoti šaltinio failui keisti. Štai trys scenarijai.

Panašių dokumentų paketas – aktai, sąskaitos, formos, paraiškos. Sudėkite juos į aplanką ir apdorokite viena eilute:

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

Tada pateikite modeliui tekstinių failų aplanką ir paprašykite surinkti svarbią informaciją į lentelę. Tai veikia su skaitmeniniais failais; nuskaitytų dokumentų apdorojimas nepavyks, ir juos iškart pastebėsite pagal nulinį dydį.

Nuolatinė projektinė medžiaga – kainoraščiai, sutarčių šablonai, taisyklės, paslaugų aprašymai. Vieną kartą konvertuokite ją į tekstą ir įdėkite greta projekto. Tada modelis galės skaityti ją su kiekviena užklausa, todėl nereikės kaskart pokalbyje pridėti failų. Straipsnyje apie failų įkėlimą į Claude paaiškinta, kuo tai skiriasi nuo failo įkėlimo į pokalbį.

Apskaitos sistemos eksportas. Apskaitos programos arba banko sąskaitos Excel eksportas per trečdalį sekundės tampa lentele, iš kurios modelis gali atlikti skaičiavimus be jokio tarpinio tvarkymo. Patikrinkite, ar CSV eksportuotas arba išnagrinėtas pagal tikrąjį skirtuką, kabučių taisykles ir koduotę; prieš pateikdami modeliui palyginkite eilutes, stulpelius ir kontrolines sumas. Nenormalizuokite skirtukų paieška ir pakeitimu. Taip pat aiškiai užrašykite valiutą: vien Excel langelio formatavime saugomas simbolis po ištraukimo neišliks.

Didelių PDF failų apdorojimas terminale į šį sąrašą neįtrauktas. Tai atskiras klausimas, susijęs su konteksto naudojimu; jis aptariamas straipsnyje apie PDF failus Claude Code aplinkoje neprarandant žetonų. Jei tik pradedate kurti darbo aplinką, pradėkite nuo Claude Code diegimo.

Norėdami pradėti dabar, paleiskite pip install 'markitdown[pdf,docx,xlsx,pptx]', apdorokite pirmą pasitaikiusią Word sutartį ir patikrinkite rezultato dydį. Po pusės minutės žinosite, ar tai veikia su jūsų failais.

Dažnai užduodami klausimai

Ar MarkItDown nemokamas?

Taip. Jam taikoma MIT licencija, neribojanti komercinio naudojimo. Mokėti reikia tik už du pasirenkamus būdus: debesijos atpažinimą per „Microsoft“, naudojant vėliavėlę -d, ir vaizdų aprašymus, kuriuos sukuria vaizdų modelis, naudodamas jūsų raktą. Visa kita nemokamai veikia jūsų kompiuteryje.

Ar duomenys siunčiami į kokį nors serverį?

Įprastai konvertuojant „Office“ ir PDF failus – ne, viskas apdorojama vietoje. Yra trys išimtys: garso transkripcija atliekama per „Google“ paslaugą, vėliavėlė -d siunčia dokumentą į „Microsoft“ debesiją, o vaizdų aprašymai siunčiami modeliui naudojant jūsų raktą. Nė vienas iš šių būdų neįjungiamas automatiškai.

Kodėl po įdiegimo nerandu komandos markitdown?

Dažniausiai programa įdiegta aplinkoje, kurios kelias nėra paieškos kelyje. Patikrinkite visą failo kelią aplinkoje. Dar viena dažna priežastis – įdiegėte programą vienai Python versijai, o kviečiate ją naudodami kitą. Dar vieni spąstai: su senesnėmis nei 3.10 Python versijomis įdiegiamas tuščias paketas, bet diegimo klaidos nepateikiama.

Ką daryti, jei vietoj raidžių matau (cid:1090) ir panašias sekas?

Tai neiškoduota šriftų lentelė PDF faile. Nustatymai nepadės; failą reikia apdoroti kitu įrankiu, pavyzdžiui, Docling arba MinerU. Vienkartiniam dokumentui tekstą greičiau nukopijuoti rankiniu būdu iš peržiūros programos.

Ar galiu vienu metu apdoroti visą failų aplanką?

Atskiro aplanko režimo nėra, bet tai galima padaryti viena terminalo ciklo eilute: for f in papka/*.docx; do markitdown "$f" -o "$f.md"; done. Kita galimybė – viską sudėti į ZIP failą ir pateikti archyvą: programa apdoros jo turinį, bet nepavykę išnagrinėti failai dings be įspėjimo.

Kuo išvestis skiriasi nuo rankinio teksto kopijavimo?

Ji išsaugo struktūrą. Kopijuojant gaunamas paprastas tekstas, kuriame antraštė nesiskiria nuo pastraipos, o lentelė subyra. MarkItDown išsaugo antraštes, sąrašus ir lenteles, todėl modelis gali suprasti, kas yra kas. Vienam trumpam dokumentui skirtumas nedidelis, bet dvidešimčiai – lemiamas.

Ar MarkItDown gali atidaryti slaptažodžiu apsaugotus dokumentus?

Ne. Slaptažodžiu apsaugotas failas neatsidarys, o programai slaptažodžio perduoti negalima. Pirmiausia apsaugą reikia pašalinti programoje, kurioje ji buvo nustatyta.

Kai būsite pasirengę, susipažinkite su Ailoot.

Išsamiau

Klausimai ir atsakymai

Ar CSV su kabliataškiais galima pataisyti kiekvieną kabliataškį pakeitus kableliu?

Ne. Kabutėmis apgaubtame tekste ir skaičių formatuose gali būti tų pačių simbolių. Eksportuokite iš naujo su numatytu skirtuku arba naudokite CSV analizatorių ir įrašymo įrankį su aiškiu skirtuku, koduote bei kabučių taisyklėmis; patikrinkite stulpelius, eilutes ir kontrolines sumas pagal originalą.

Ar nulinis išėjimo kodas reiškia, kad PDF naudingai konvertuotas?

Ne. Straipsnio skenuoto dokumento pavyzdyje grąžinta tuščia išvestis be klaidos, o sudėtingas PDF davė neįskaitomą tekstą. Atverkite rezultatą, patikrinkite jo ilgį ir struktūrą, o jei tekstas tuščias ar iškraipytas, naudokite išdėstymo arba atpažinimo įrankį.

Visi straipsniai