MarkItDown: heterogene Dokumente für die Analyse in Markdown umwandeln
microsoft/markitdown · 186.984★ · 13.797 forks
Alles Wissenswerte über microsoft/markitdown: ein Python-Werkzeug, das Dokumente und andere Inhalte in Markdown umwandelt, vor allem für Textanalyse-Pipelines und Sprachmodelle konzipiert.
Was MarkItDown ist
MarkItDown ist eine Python-Bibliothek und ein Kommandozeilenwerkzeug, das Dateien in Markdown umwandelt. Sein README verortet es in der Nähe von textract, jedoch mit einer anderen Priorität: nützliche Struktur für die Analyse zu bewahren, etwa Überschriften, Listen, Tabellen und Links, statt eine originalgetreue visuelle Wiedergabe des Ausgangsdokuments anzustreben.
Es unterstützt PDF, PowerPoint, Word, Excel, Bilder mit Metadaten oder OCR, Audio mit Transkription, HTML, CSV, JSON, XML, ZIP-Archive, YouTube-URLs und EPUB, unter anderem. Die Ausgabe kann für Menschen lesbar sein, doch der erklärte Zweck ist es, Werkzeuge für Textanalyse und Pipelines mit Sprachmodellen zu speisen. Dieser Unterschied ist wichtig: Es verspricht nicht, das gesamte Layout, Formeln oder reichhaltige Elemente eines Office-Dokuments zu erhalten.
Der Ursprung: ein Werkzeug der AutoGen-Community innerhalb von Microsoft
Das öffentliche Repository wurde am 13. November 2024 erstellt. Sein erster Commit, signiert von microsoft-github-operations[bot], trägt schlicht den Titel „Initial commit“ und erlaubt daher keine Zuordnung der ursprünglichen Autorenschaft zu einer bestimmten Person. Das README identifiziert das Projekt jedoch als Arbeit des AutoGen-Teams von Microsoft; das auf PyPI veröffentlichte Paket führt Adam Fourney (afourney) als Kontakt, und die API weist ihn als aktuellen Hauptbeitragenden aus. Darüber hinaus benennen die abgerufenen Quellen keinen einzelnen Urheber und keine Launch-Ankündigung mit einer überprüfbaren persönlichen Erzählung.
Der Veröffentlichungskontext war der Aufschwung der Dokumenteneinspeisung für Sprachmodelle. Das README begründet die Wahl von Markdown damit, dass es Text mit minimaler Struktur sei, tokensparsam und von Modellen breit verstanden werde. Diese Entscheidung erzeugte bereits im ersten Hacker-News-Thread eine sichtbare Spannung: Am 13. Dezember 2024 wünschte sich ezxs, Word würde die Funktion nativ integrieren, während LittleTimothy Microsofts scheinbare Offenheit angesichts seiner Geschichte der Interoperabilität mit Office-Formaten infrage stellte. badlibrarian entgegnete, die Formate seien vor etwa zwei Jahrzehnten geöffnet worden, blieben aber weiterhin komplex und bei der Konvertierung unvollkommen.

Philosophie und Prinzipien
Das Vorhaben stützt sich auf vier überprüfbare Ideen:
- Markdown als Zwischendarstellung: genug Struktur für Überschriften, Links und Tabellen, ohne ein vollständiges Präsentationsformat mitzuführen.
- Analysenutzen vor visueller Treue: Ziel ist es, strukturierte Inhalte für Indizierung, Suche oder Modelle zu extrahieren, nicht eine für menschliches Layout bestimmte Datei zu rekonstruieren.
- Schrittweise Erweiterung: Die lokalen Konverter lassen sich durch optionale Abhängigkeiten, Drittanbieter-Plugins und Azure-Dienste ergänzen.
- Explizite Sicherheitskontrolle:
convert()kann lokale Dateien, URIs und Datenströme öffnen; das Projekt empfiehlt, die möglichst eingeschränkte API zu verwenden, nicht vertrauenswürdige Eingaben zu validieren und Pfade, Schemata und Netzwerkziele zu begrenzen.
Diese letzte Warnung ist nicht dekorativ: MarkItDown führt Ein- und Ausgabeoperationen mit den Rechten des ausführenden Prozesses aus. In einem Dienst, der Nutzern zugänglich ist, kann das ungefilterte Annehmen einer URL oder eines Pfads den Zugriffsumfang des Dienstes erweitern.

Wie es funktioniert
Der minimale Weg besteht darin, das Paket zu installieren und eine Datei zu konvertieren:
pip install 'markitdown[all]'
markitdown informe.pdf -o informe.md
Es kann auch Daten über die Standardeingabe empfangen. In Python liefert MarkItDown().convert("archivo.xlsx") das Ergebnis; für eine Umgebung mit Isolationsanforderungen rät das README, je nach Herkunft des Inhalts eher convert_local(), convert_stream() oder convert_response() zu verwenden.
Optionale Abhängigkeiten erlauben es, nur die benötigten Konverter zu installieren, zum Beispiel markitdown[pdf,docx,pptx]. Für Bilder und Präsentationen kann es einen mit OpenAI kompatiblen Client und ein Modell entgegennehmen, um Beschreibungen zu erzeugen. Das Plugin markitdown-ocr fügt OCR für eingebettete Bilder in PDF, DOCX, PPTX und XLSX mittels Sprachmodell-Vision hinzu; laut seinem PyPI-Eintrag ist die abgerufene Version 0.1.0.
Es gibt zwei bei Azure gehostete Pfade. Azure Document Intelligence wird über die Kommandozeile mit -d und einem Endpunkt aufgerufen. Azure Content Understanding kann Layoutanalyse, OCR, Dokument-, Bild-, Audio- und Videomodalitäten anwenden und strukturierte Felder in YAML-Metadaten extrahieren. Es ist keine kostenlose lokale Funktion: Jede an diesen Dienst weitergeleitete Konvertierung kann eine Azure-Gebühr erzeugen.
Plugins sind standardmäßig deaktiviert. markitdown --list-plugins listet sie auf, und markitdown --use-plugins archivo.pdf aktiviert sie; das Repository stellt zudem packages/markitdown-sample-plugin als Vorlage für die Entwicklung eines eigenen Plugins bereit.


Offizieller und halboffizieller Status
Der offizielle Status ist in Bezug auf die Herkunft eindeutig: Das Repository liegt unter der Organisation Microsoft, sein README stellt es als Arbeit des AutoGen-Teams dar, und das Paket markitdown auf PyPI führt Adam Fourney von Microsoft als Kontakt. Es handelt sich um MIT-lizenzierte Software, kein proprietäres Office-Produkt und keine native Funktion von Word, Excel oder PowerPoint.
Es wurde kein Beleg dafür gefunden, dass MarkItDown in einen offiziellen Plugin-Marktplatz eines Agentenanbieters aufgenommen wurde, noch für eine Zertifizierung durch Microsoft Office oder Azure, die seine Konvertierungsqualität bestätigt. Die optionale Azure-Integration und die AutoGen-Bezüge sind Ökosystem-Rückhalt, keine Ergebnisgarantie. Mit 171.142 Sternen kann es auf GitHub als sehr sichtbar gelten, doch die Quellen bezeichnen es nicht formal als De-facto-Standard.
Das Ökosystem
Offizielle und eng verwandte Komponenten
Eine auf org:microsoft markitdown beschränkte GitHub-Repository-Suche lieferte nur das Hauptrepository: Es wurde kein eigenständiges öffentliches Schwester-Repository von Microsoft mit diesem Namen identifiziert. Das offizielle Ökosystem lebt vor allem innerhalb des Monorepos und in veröffentlichten Paketen:
microsoft/markitdown: das Hauptpaket, 171.142 Sterne und 12.454 Forks bei der unten genannten Messung.packages/markitdown-ocr: ein offizielles Plugin, das im Baum des Projekts enthalten ist; PyPI veröffentlichtmarkitdown-ocr0.1.0. Fügt OCR per Sprachmodell-Vision hinzu.packages/markitdown-sample-plugin: eine im selben Repository gepflegte Plugin-Vorlage; sie dient dazu, die Plugin-Schnittstelle zu erweitern, ist aber kein eigenständiges Produkt.- AutoGen: das Abzeichen im README schreibt das Projekt diesem Microsoft-Team zu. Es ist sein organisatorischer Kontext, keine notwendige Abhängigkeit, um das Werkzeug auszuführen.
Ports, Forks und Community-Erweiterungen
Die Forks-API und die Repository-Beschreibungen unterscheiden einige echte Erweiterungen von den vielen Kopien ohne erklärte Änderungen:
managedcode/markitdown: ein C#-Fork, der als Markdown-Konvertierungswerkzeug beschrieben wird; 76 Sterne.conductor-oss/markitdown: eine Go-Implementierung, auf Hacker News als „MarkItDown in Go“ vorgestellt; 20 Sterne. Die API beschreibt es als Datei-zu-Markdown-Konverter.cnChenKai/markitdown-GUI: eine grafische Oberfläche für Windows auf Basis des Forks; 6 Sterne.llA1ll/markitdown_hwpx: eine nicht-englische Erweiterung, die HWPX hinzufügt und HWP-Unterstützung unter Windows angibt; 3 Sterne. Es ist eine koreanische Anpassung, keine offizielle Dokumentationsübersetzung.RapidsPackerCount/markitdown: ein Fork, der Sicherheitspatches und Installationskorrekturen angibt; 6 Sterne.
Darüber hinaus wurde html.zone/markitdown von ccbikai im ursprünglichen Thread als eine vollständig im Browser lauffähige Version vorgestellt. Die abgerufene Quelle belegt die Demo, liefert aber kein Repository oder überprüfbare Kennzahlen dafür. Forks entsprechen keinem von Microsoft garantierten Support oder einer garantierten Kompatibilität.

Zahlen zum Repository
Messung: 3. August 2026, 15:43 UTC; GitHub- und PyPI-API.
| Metrik | Wert |
|---|---|
| Sterne | 171.142 |
| Forks | 12.454 |
| Echte Abonnenten | 549 |
| Commits | 315 |
| Von der API angegebene offene Issues | 837 |
| Hauptsprache | Python |
| Lizenz | MIT |
| Erstellung | 13. November 2024 |
| Letzter Code-Push | 29. Juli 2026 |
| Letzte Metadaten-Aktualisierung | 3. August 2026, 15:40 UTC |
| Letzte Veröffentlichung | v0.1.7, 29. Juli 2026 |
Die Gesamtzahl von 315 Commits stammt aus dem letzten Paginierungslink der API. Die von der API zurückgegebenen Hauptbeitragenden waren afourney (104), gagb (70), sugatoray (9), PetrAPConsulting (8), l-lumin (7) und Josh-XT (7). open_issues_count kann offene Pull Requests einschließen und steht daher nicht ausschließlich für Issues. Zudem dupliziert watchers_count in der allgemeinen GitHub-Antwort die Gesamtsternezahl; deshalb wird hier subscribers_count als echte Abonnentenzahl angegeben.
Version v0.1.7 behebt unter anderem quadratische Wertesuchen in PPTX-Diagrammen, LaTeX-Makros für Gleichungen und die Behandlung von PPTX-SVG-Bildern ohne gerastertes Fallback. Die vorherige Version fügte eine OCR-Schicht für eingebettete Bilder sowie den Azure-Content-Understanding-Konverter hinzu.

Wie man beiträgt
Das README nimmt Beiträge und Vorschläge unter dem Contributor License Agreement von Microsoft entgegen: Ein Bot prüft bei jedem Pull Request, ob eine Annahme erforderlich ist. Das Projekt verlinkt mit „open for contribution“ gekennzeichnete Issues und mit „open for reviewing“ gekennzeichnete Pull Requests, ohne die Teilnahme auf diese Kennzeichnungen zu beschränken.
Zur Vorbereitung eines Beitrags dokumentiert es diesen Ablauf:
- In
packages/markitdownwechseln. hatchinstallieren, dessen Umgebung öffnen undhatch testausführen; alternativ den Entwicklungscontainer verwenden.pre-commit run --all-filesausführen, bevor der Pull Request eingereicht wird.- Den Verhaltenskodex für freie Software von Microsoft einhalten und den CLA-Prozess abschließen, wenn der Bot dies verlangt.
Das Repository lädt außerdem dazu ein, Drittanbieter-Plugins zu veröffentlichen, und stellt ein Beispiel bereit. Ein offener Pull Request zum seitenweisen Extrahieren von Inhalten aus PDF, PPTX und DOCX veranschaulicht einen Beitrag mit Tests und abwärtskompatiblen Parametern, sollte aber nicht als bereits veröffentlichte Funktionalität verstanden werden.

Wie die Community reagierte
Die abgerufene Resonanz verbindet praktische Akzeptanz mit relevanten Vorbehalten zu Treue, Tabellen und Sicherheit:
- Die direkte Hacker-News-Ankündigung, 42410803, wurde von Handy-Man am 13. Dezember 2024 eingereicht und erreichte 329 Punkte und 81 Kommentare.
simonwbemerkte, er habe HTML und PDF ausprobiert und sie ordentlich gut befunden;poidossteuerte einen konkreten Anwendungsfall bei, bei dem eine XLSX-Tabelle in eine lesbare Markdown-Tabelle umgewandelt wurde. Es handelt sich um individuelle Erfahrungen, keine vergleichende Bewertung. - Im selben Thread bezeichnete
irskep, der angab, an einem ähnlichen internen System gearbeitet zu haben, die Implementierung als vernünftig und leicht einzusetzen, riet jedoch davon ab, sie für Bilder zu verwenden, wenn der Modellanbieter Bilder direkt unterstützt, und empfahl, Markdown-Tabellen für Tabellenkalkulationen zu misstrauen.starkparkerwar kritischer: Bei PDF-Büchern mit komplexen Layouts und Tabellen stellte er fest, dass Tabellen nicht gut aufgelöst wurden, weshalb es für seinen Fall nicht funktionierte. konfektwandte ein, das Projekt wirke wie eine Hülle um bestehende Bibliotheken und potenziell spezialisierten Werkzeugen unterlegen.wisbestätigte, dass der Code Python-Pakete wie Mammoth, python-pptx und pandas verwendete, anstelle von Office-COM-Schnittstellen;jamwilentgegnete, diese Bibliotheken läsen OOXML direkt und vermieden eine Abhängigkeit von den Office-Anwendungen. Die Uneinigkeit betrifft Architektur und Mehrwert, nicht einen Beweis, dass das Ergebnis fehlerhaft sei.- In 48595111, mit 5 Punkten und 1 Kommentar, behauptete
pierre, Autor von LiteParse, sein Projekt übertreffe MarkItDown bei Geschwindigkeit und Genauigkeit. Es ist eine Behauptung eines Wettbewerbers ohne abgerufene Methodik und bestätigt daher kein unabhängiges Ranking. - In 47732167, mit 4 Punkten und 2 Kommentaren, schlug
llamatheollama, Autor von MarkitMe, eine Aufteilung der Anwendungsfälle vor: Pandoc für Formatabdeckung und Zuverlässigkeit, MarkItDown zum Extrahieren von Text für Agenten und sein eigenes Werkzeug für lesefreundliche Markdown-Notizen. Es ist ein Positionierungsvergleich des Autors, kein Benchmark. nebezbgab in einem Kommentar zu 46675030 an, MarkItDown regelmäßig zu nutzen, und schätzte, dass es in 95 % seiner Fälle gut funktioniere, wobei es bei Gleichungen und komplexen Bildern an Treue verliere. Er warnte zudem, dass die Ausführung in einem Container ein trügerisches Sicherheitsgefühl vermitteln könne. Diese Vorsicht deckt sich mit der Rechtewarnung des README.
MarkItDown im Vergleich zu anderen Ansätzen
| Ansatz | Überprüfbare Übereinstimmung | Überprüfbarer Unterschied |
|---|---|---|
textract | Das README nennt es als nächstliegenden Vergleich: Beide extrahieren Inhalte aus verschiedenen Dateitypen. | MarkItDown erklärt es zum Ziel, Struktur in Markdown zu bewahren; es wurde keine Formatmatrix gefunden, die einen Vergleich der Abdeckung erlaubt. |
| Pandoc | Konvertiert Dokumente zwischen Formaten und wurde in der Hacker-News-Diskussion wiederholt erwähnt. | figomore wies im ursprünglichen Thread darauf hin, dass Pandoc DOCX nach Markdown und andere Formate konvertiert, jedoch nicht PowerPoint oder Excel; MarkItDown dokumentiert Unterstützung für diese beiden Typen. |
DS4SD/docling | Beide wurden als Werkzeuge genannt, um Dokumente als von Modellen nutzbaren Text einzuspeisen. | Die Diskussion bestätigte, dass Docling zum Funktionieren kein Sprachmodell benötigt; die abgerufenen Quellen liefern keinen gemeinsamen, reproduzierbaren Benchmark. |
run-llama/liteparse | Konvertiert Dokumente in Markdown für Analyse-Workflows. | Sein Autor behauptete bessere Geschwindigkeit und Genauigkeit, doch es wurde keine Methodik gefunden, die diesen Vergleich validieren würde. |
Luthiraa/markitme | Erzeugt Markdown aus Inhalten. | Sein Autor richtet es auf lesbare Notizen mit Metadaten, wiki-artigen Links und Stapelverarbeitung aus, im Gegensatz zur Agenten-Einspeisung, die er MarkItDown zuschreibt. |
Die Wahl hängt vom Zweck ab: MarkItDown eignet sich, wenn es darauf ankommt, mehrere Formate zu strukturiertem Text zu normalisieren, und ein Verlust der Darstellung akzeptiert wird; für Bearbeitung, visuelle Erhaltung oder komplexe Tabellen lohnt es sich, das gewählte Werkzeug mit eigenen Beispieldokumenten zu prüfen.
Anwendungsfälle und wem dieses Repository helfen kann
- Teams, die Korpora für Suche, Indizierung oder Retrieval-Assistenten vorbereiten, können PDF, Word, Präsentationen, HTML und Tabellenkalkulationen in eine gemeinsame Markdown-Darstellung umwandeln. Sie sollten die Qualität mit echten Dokumenten prüfen, besonders wenn diese Tabellen, Gleichungen oder komplexe Layouts enthalten.
- Entwicklerinnen und Entwickler von Agenten oder Dokumentautomatisierungen können die Python-Bibliothek oder die Kommandozeile aufrufen, nur die benötigten Extras aktivieren und Plugins nutzen. Die ZIP-Unterstützung erlaubt das Durchlaufen eines Containers, doch die Dokumentation macht daraus kein Versprechen, alle Eigenschaften jeder internen Datei zu erhalten.
- Prozesse, die OCR oder strukturierte Felder benötigen, können sich für
markitdown-ocrmit einem Vision-Client entscheiden oder für Azure Content Understanding, wenn Layoutanalyse, Audio, Video oder YAML-Metadaten erforderlich sind. Die zweite Option bringt Kosten pro Aufruf und eine Abhängigkeit von einem Azure-Dienst mit sich. - Betreiber von Diensten, die Dateien oder URLs von Dritten empfangen, können von den eingeschränkten APIs (
convert_local,convert_streamundconvert_response) und der Sicherheitswarnung des Projekts profitieren. Sie solltenconvert()nicht ohne Validierung von Pfaden, Schemata und Netzwerkzielen exponieren.
![Futuristisches Terminal mit grünem Neontext, das pip install 'markitdown[all]' und markitdown informe.pdf -o informe.md zeigt, in einem High-Tech-Labor mit violetter und blauer Beleuchtung.](/images/dispatches/028-microsoft-markitdown-inline-09.webp)
Ressourcen
- Repository: https://github.com/microsoft/markitdown
- Dokumentation und Installation: https://github.com/microsoft/markitdown#installation
- Offizielles OCR-Plugin: https://pypi.org/project/markitdown-ocr/
- Offizielles Plugin-Beispiel: https://github.com/microsoft/markitdown/tree/main/packages/markitdown-sample-plugin
- AutoGen-Projekt: https://github.com/microsoft/autogen
- Community und Gespräche: https://news.ycombinator.com/item?id=42410803, https://news.ycombinator.com/item?id=48595111, https://news.ycombinator.com/item?id=47732167
Hinweis: Dieser Artikel kombiniert das README und die Historie von microsoft/markitdown, die GitHub-API, PyPI und die zitierten Hacker-News-Threads, abgerufen am 3. August 2026. Zahlen ändern sich mit der Zeit.
Kommentare