MarkItDown – Dateien in Markdown konvertieren
Übersicht
MarkItDown ist ein von Microsoft entwickeltes Python-Tool zur Konvertierung verschiedener Dateiformate in Markdown. Es ist besonders nützlich, um Dokumente in ein für LLMs geeignetes Textformat zu konvertieren, da Markdown token-effizient ist und von modernen Sprachmodellen gut verstanden wird.
Wichtigste Vorteile:
- Konvertiert Dokumente in sauberes, strukturiertes Markdown
- Token-effizientes Format für die LLM-Verarbeitung
- Unterstützt über 15 Dateiformate
- Optionale KI-gestützte Bildbeschreibungen
- OCR für Bilder und gescannte Dokumente
- Sprachtranskription für Audiodateien
Visuelle Aufwertung mit wissenschaftlichen Schemata
Beim Erstellen von Dokumenten mit dieser Skill sollte immer das Hinzufügen wissenschaftlicher Diagramme und Schemata zur Verbesserung der visuellen Kommunikation in Betracht gezogen werden.
Falls Ihr Dokument noch keine Schemata oder Diagramme enthält:
- Nutzen Sie die scientific-schematics-Skill, um KI-gestützte, veröffentlichungsreife Diagramme zu generieren
- Beschreiben Sie Ihr gewünschtes Diagramm einfach in natürlicher Sprache
- Nano Banana Pro generiert, überprüft und verfeinert das Schema automatisch
Für neue Dokumente: Standardmäßig sollten wissenschaftliche Schemata generiert werden, um Schlüsselkonzepte, Arbeitsabläufe, Architekturen oder Beziehungen im Text visuell darzustellen.
So generieren Sie Schemata:
python scripts/generate_schematic.py "Ihre Diagrammbeschreibung" -o figures/output.png
Die KI wird automatisch:
- Veröffentlichungsreife Bilder mit korrekter Formatierung erstellen
- Mehrere Iterationen durchlaufen, um zu überprüfen und zu verfeinern
- Barrierefreiheit sicherstellen (farbenblindfreundlich, hoher Kontrast)
- Ausgaben im figures/-Verzeichnis speichern
Wann Schemata hinzugefügt werden sollten:
- Diagramme des Dokumentenkonvertierungs-Workflows
- Architekturillustrationen von Dateiformaten
- Diagramme der OCR-Verarbeitungspipeline
- Integrations-Workflow-Visualisierungen
- Systemarchitekturdiagramme
- Datenflussdiagramme
- Jedes komplexe Konzept, das von einer Visualisierung profitiert
Eine detaillierte Anleitung zur Erstellung von Schemata finden Sie in der Dokumentation der scientific-schematics-Skill.
Unterstützte Formate
| Format | Beschreibung | Hinweise |
|---|---|---|
| Portable Document Format | Vollständige Textextraktion | |
| DOCX | Microsoft Word | Tabellen, Formatierung erhalten |
| PPTX | PowerPoint | Folien mit Notizen |
| XLSX | Excel-Tabellen | Tabellen und Daten |
| Bilder | JPEG, PNG, GIF, WebP | EXIF-Metadaten + OCR |
| Audio | WAV, MP3 | Metadaten + Transkription |
| HTML | Webseiten | Saubere Konvertierung |
| CSV | Kommagetrennte Werte | Tabellenformat |
| JSON | JSON-Daten | Strukturierte Darstellung |
| XML | XML-Dokumente | Strukturiertes Format |
| ZIP | Archivdateien | Durchläuft Inhalte |
| EPUB | E-Books | Vollständige Textextraktion |
| YouTube | Video-URLs | Transkriptionen abrufen |
Schnellstart
Installation
# Mit allen Funktionen installieren
pip install 'markitdown[all]'
# Oder aus dem Quellcode
git clone https://github.com/microsoft/markitdown.git
cd markitdown
pip install -e 'packages/markitdown[all]'
Befehlszeilenverwendung
# Grundlegende Konvertierung
markitdown dokument.pdf > ausgabe.md
# Ausgabedatei angeben
markitdown dokument.pdf -o ausgabe.md
# Inhalt weiterleiten
cat dokument.pdf | markitdown > ausgabe.md
# Plugins aktivieren
markitdown --list-plugins # Verfügbare Plugins auflisten
markitdown --use-plugins dokument.pdf -o ausgabe.md
Python-API
from markitdown import MarkItDown
# Grundlegende Verwendung
md = MarkItDown()
ergebnis = md.convert("dokument.pdf")
print(ergebnis.text_content)
# Aus einem Stream konvertieren
with open("dokument.pdf", "rb") as f:
ergebnis = md.convert_stream(f, file_extension=".pdf")
print(ergebnis.text_content)
Erweiterte Funktionen
1. KI-gestützte Bildbeschreibungen
LLMs über OpenRouter verwenden, um detaillierte Bildbeschreibungen zu generieren (für PPTX- und Bilddateien):
from markitdown import MarkItDown
from openai import OpenAI
# OpenRouter-Client initialisieren (OpenAI-kompatible API)
client = OpenAI(
api_key="ihr-openrouter-api-schlüssel",
base_url="https://openrouter.ai/api/v1"
)
md = MarkItDown(
llm_client=client,
llm_model="anthropic/claude-sonnet-4.5", # empfohlen für wissenschaftliches Sehen
llm_prompt="Beschreiben Sie dieses Bild detailliert für die wissenschaftliche Dokumentation"
)
ergebnis = md.convert("präsentation.pptx")
print(ergebnis.text_content)
2. Azure Document Intelligence
Für eine verbesserte PDF-Konvertierung mit Microsoft Document Intelligence:
# Befehlszeile
markitdown dokument.pdf -o ausgabe.md -d -e "<document_intelligence_endpoint>"
# Python-API
from markitdown import MarkItDown
md = MarkItDown(docintel_endpoint="<document_intelligence_endpoint>")
ergebnis = md.convert("komplexes_dokument.pdf")
print(ergebnis.text_content)
3. Plugin-System
MarkItDown unterstützt Drittanbieter-Plugins zur Funktionserweiterung:
# Installierte Plugins auflisten
markitdown --list-plugins
# Plugins aktivieren
markitdown --use-plugins datei.pdf -o ausgabe.md
Plugins auf GitHub mit dem Hashtag finden: #markitdown-plugin
Optionale Abhängigkeiten
Steuern Sie, welche Dateiformate Sie unterstützen:
# Bestimmte Formate installieren
pip install 'markitdown[pdf, docx, pptx]'
# Alle verfügbaren Optionen:
# [all] - Alle optionalen Abhängigkeiten
# [pptx] - PowerPoint-Dateien
# [docx] - Word-Dokumente
# [xlsx] - Excel-Tabellen
# [xls] - Ältere Excel-Dateien
# [pdf] - PDF-Dokumente
# [outlook] - Outlook-Nachrichten
# [az-doc-intel] - Azure Document Intelligence
# [audio-transcription] - WAV- und MP3-Transkription
# [youtube-transcription] - YouTube-Videotranskription
Häufige Anwendungsfälle
1. Wissenschaftliche Arbeiten in Markdown konvertieren
from markitdown import MarkItDown
md = MarkItDown()
# PDF-Arbeit konvertieren
ergebnis = md.convert("forschungspapier.pdf")
with open("papier.md", "w") as f:
f.write(ergebnis.text_content)
2. Daten aus Excel für Analysen extrahieren
from markitdown import MarkItDown
md = MarkItDown()
ergebnis = md.convert("daten.xlsx")
# Ergebnis liegt im Markdown-Tabellenformat vor
print(ergebnis.text_content)
3. Mehrere Dokumente verarbeiten
from markitdown import MarkItDown
import os
from pathlib import Path
md = MarkItDown()
# Alle PDFs in einem Verzeichnis verarbeiten
pdf_verz = Path("arbeiten/")
ausgabe_verz = Path("markdown_ausgabe/")
ausgabe_verz.mkdir(exist_ok=True)
for pdf_datei in pdf_verz.glob("*.pdf"):
ergebnis = md.convert(str(pdf_datei))
ausgabe_datei = ausgabe_verz / f"{pdf_datei.stem}.md"
ausgabe_datei.write_text(ergebnis.text_content)
print(f"Konvertiert: {pdf_datei.name}")
4. PowerPoint mit KI-Beschreibungen konvertieren
from markitdown import MarkItDown
from openai import OpenAI
# OpenRouter für den Zugriff auf mehrere KI-Modelle verwenden
client = OpenAI(
api_key="ihr-openrouter-api-schlüssel",
base_url="https://openrouter.ai/api/v1"
)
md = MarkItDown(
llm_client=client,
llm_model="anthropic/claude-sonnet-4.5", # empfohlen für Präsentationen
llm_prompt="Beschreiben Sie dieses Folienbild detailliert, mit Fokus auf wichtige visuelle Elemente und Daten"
)
ergebnis = md.convert("präsentation.pptx")
with open("präsentation.md", "w") as f:
f.write(ergebnis.text_content)
5. Stapelverarbeitung mit verschiedenen Formaten
from markitdown import MarkItDown
from pathlib import Path
md = MarkItDown()
# Zu konvertierende Dateien
dateien = [
"dokument.pdf",
"tabellenkalkulation.xlsx",
"präsentation.pptx",
"notizen.docx"
]
for datei in dateien:
try:
ergebnis = md.convert(datei)
ausgabe = Path(datei).stem + ".md"
with open(ausgabe, "w") as f:
f.write(ergebnis.text_content)
print(f"✓ Konvertiert {datei}")
except Exception as e:
print(f"✗ Fehler beim Konvertieren von {datei}: {e}")
6. YouTube-Videotranskription extrahieren
from markitdown import MarkItDown
md = MarkItDown()
# YouTube-Video in Transkript konvertieren
ergebnis = md.convert("https://www.youtube.com/watch?v=VIDEO_ID")
print(ergebnis.text_content)
Docker-Verwendung
# Image erstellen
docker build -t markitdown:latest .
# Konvertierung ausführen
docker run --rm -i markitdown:latest < ~/dokument.pdf > ausgabe.md
Best Practices
1. Die richtige Konvertierungsmethode wählen
- Einfache Dokumente: Grundlegende
MarkItDown()verwenden - Komplexe PDFs: Azure Document Intelligence verwenden
- Visuelle Inhalte: KI-Bildbeschreibungen aktivieren
- Gescannte Dokumente: Sicherstellen, dass OCR-Abhängigkeiten installiert sind
2. Fehler elegant behandeln
from markitdown import MarkItDown
md = MarkItDown()
try:
ergebnis = md.convert("dokument.pdf")
print(ergebnis.text_content)
except FileNotFoundError:
print("Datei nicht gefunden")
except Exception as e:
print(f"Konvertierungsfehler: {e}")
3. Große Dateien effizient verarbeiten
from markitdown import MarkItDown
md = MarkItDown()
# Für große Dateien Streaming verwenden
with open("große_datei.pdf", "rb") as f:
ergebnis = md.convert_stream(f, file_extension=".pdf")
# In Teilen verarbeiten oder direkt speichern
with open("ausgabe.md", "w") as aus:
aus.write(ergebnis.text_content)
4. Für Token-Effizienz optimieren
Die Markdown-Ausgabe ist bereits token-effizient, aber Sie können:
- Übermäßige Leerzeichen entfernen
- Ähnliche Abschnitte zusammenfassen
- Metadaten entfernen, falls nicht benötigt
from markitdown import MarkItDown
import re
md = MarkItDown()
ergebnis = md.convert("dokument.pdf")
# Zusätzliche Leerzeichen bereinigen
sauberer_text = re.sub(r'\n{3,}', '\n\n', ergebnis.text_content)
sauberer_text = sauberer_text.strip()
print(sauberer_text)
Integration in wissenschaftliche Workflows
Literatur für die Überprüfung konvertieren
from markitdown import MarkItDown
from pathlib import Path
md = MarkItDown()
# Alle Arbeiten im Literaturordner konvertieren
arbeiten_verz = Path("literatur/pdfs")
ausgabe_verz = Path("literatur/markdown")
ausgabe_verz.mkdir(exist_ok=True)
for arbeit in arbeiten_verz.glob("*.pdf"):
ergebnis = md.convert(str(arbeit))
# Mit Metadaten speichern
ausgabe_datei = ausgabe_verz / f"{arbeit.stem}.md"
inhalt = f"# {arbeit.stem}\n\n"
inhalt += f"**Quelle**: {arbeit.name}\n\n"
inhalt += "---\n\n"
inhalt += ergebnis.text_content
ausgabe_datei.write_text(inhalt)
# Für KI-gestützte Konvertierung mit Abbildungen
from openai import OpenAI
client = OpenAI(
api_key="ihr-openrouter-api-schlüssel",
base_url="https://openrouter.ai/api/v1"
)
md_ki = MarkItDown(
llm_client=client,
llm_model="anthropic/claude-sonnet-4.5",
llm_prompt="Beschreiben Sie wissenschaftliche Abbildungen mit technischer Präzision"
)
Tabellen für Analysen extrahieren
from markitdown import MarkItDown
import re
md = MarkItDown()
ergebnis = md.convert("daten_tabellen.xlsx")
# Markdown-Tabellen können analysiert oder direkt verwendet werden
print(ergebnis.text_content)
Fehlerbehebung
Häufige Probleme
-
Fehlende Abhängigkeiten: Installieren Sie funktionsspezifische Pakete
pip install 'markitdown[pdf]' # Für PDF-Unterstützung -
Binärdateifehler: Stellen Sie sicher, dass Dateien im Binärmodus geöffnet werden
with open("datei.pdf", "rb") as f: # Beachten Sie das "rb" ergebnis = md.convert_stream(f, file_extension=".pdf") -
OCR funktioniert nicht: Installieren Sie Tesseract
# macOS brew install tesseract # Ubuntu sudo apt-get install tesseract-ocr
Leistungsüberlegungen
- PDF-Dateien: Große PDFs können Zeit in Anspruch nehmen; Seitenbereiche in Betracht ziehen, falls unterstützt
- Bild-OCR: Die OCR-Verarbeitung ist CPU-intensiv
- Audiotranskription: Erfordert zusätzliche Rechenressourcen
- KI-Bildbeschreibungen: Erfordert API-Aufrufe (Kosten können anfallen)
Nächste Schritte
- Siehe
references/api_reference.mdfür die vollständige API-Dokumentation - Überprüfen Sie
references/file_formats.mdfür formatspezifische Details - Sehen Sie sich
scripts/batch_convert.pyfür Automatisierungsbeispiele an - Erkunden Sie
scripts/convert_with_ai.pyfür KI-gestützte Konvertierungen
Ressourcen
- MarkItDown GitHub: https://github.com/microsoft/markitdown
- PyPI: https://pypi.org/project/markitdown/
- OpenRouter: https://openrouter.ai (für KI-gestützte Konvertierungen)
- OpenRouter-API-Schlüssel: https://openrouter.ai/keys
- OpenRouter-Modelle: https://openrouter.ai/models
- MCP-Server: markitdown-mcp (für Claude Desktop-Integration)
- Plugin-Entwicklung: Siehe
packages/markitdown-sample-plugin