Bringen Sie Ihre Dokumente in KI-Pipelines — direkt aus Python, vor Ort, mit einem pip install.

Heute veröffentlichen wir die erste öffentliche Version von GroupDocs.Markdown für Python via .NET auf PyPI. Die Bibliothek konvertiert PDF, Word, Excel, EPUB und über 20 weitere Formate in sauberes, semantisches Markdown — das Format, mit dem LLMs, RAG‑Pipelines und statische Seitengeneratoren am besten arbeiten.

Wenn Sie dem .NET‑Release vom September (oder dem vollständigen API‑Overhaul in 26.3) gefolgt sind, ist die Begründung dieselbe: Dokumentformatierung trägt Semantik, und das Bewahren dieser semantischen Struktur sorgt dafür, dass ein RAG‑System gute Antworten liefert. Der frühere Beitrag behandelt das Problem (OCR flacht Struktur ab, LLMs benötigen Markdown) und die Lösung (ein DOM‑basierter Renderer, der das Dokument durchläuft und Markdown erzeugt) ausführlich — wir wiederholen diese Geschichte hier nicht.

Stattdessen konzentrieren wir uns auf das, was neu für Python‑Entwickler ist.


Was Sie erhalten

  • Ein einzelnes Wheel, keine Laufzeitabhängigkeiten. pip install groupdocs-markdown-net holt ein eigenständiges Wheel, das die .NET‑Runtime und alle benötigten nativen Bibliotheken enthält. Keine dotnet‑Installation, kein Microsoft Office, kein Adobe Acrobat, keine Cloud‑Dienste.
  • Plattformübergreifend. Windows x64/x86, Linux x64, macOS x64 und Apple Silicon (ARM64). Python 3.5 bis 3.14.
  • Eine pythonische API. Klassen verwenden PascalCase, Methoden und Eigenschaften snake_case, Enum‑Werte UPPER_SNAKE_CASE. Kontext‑Manager entsorgen geladene Dokumente deterministisch.
  • Wirklich async. Jede statische und Instanz‑Methode hat ein Gegenstück mit _async. Datei‑I/O ist asynchron und die CPU‑intensive Konvertierung läuft in einem Worker‑Thread — Ihre asyncio‑Ereignisschleife bleibt frei.
  • AI‑Agent‑freundlich. Das installierte Wheel enthält eine AGENTS.md‑Datei, sodass Coding‑Assistenten (Claude Code, Cursor, GitHub Copilot, Codex) die API‑Oberfläche, idiomatische Nutzungsmuster und Fehlertipps automatisch entdecken. Die Dokumentation wird außerdem als llms.txt, ein einseitiges Korpus (llms-full.txt), pro‑Seite‑Markdown und ein MCP‑Server veröffentlicht — siehe unten AI‑friendly by design für Details.

Erste Schritte

pip install groupdocs-markdown-net

Die einfachste Konvertierung ist ein Einzeiler:

from groupdocs.markdown import MarkdownConverter

# In einen String konvertieren
md = MarkdownConverter.to_markdown("business-plan.docx")

# Oder direkt in eine Datei schreiben
MarkdownConverter.to_file("business-plan.docx", "business-plan.md")

Das war’s — keine Konfiguration, keine Optionen, kein Boilerplate. Der Evaluierungsmodus verarbeitet die ersten 3 Seiten und fügt ein Wasserzeichen hinzu. Um die Beschränkungen zu entfernen, eine Lizenz anwenden:

from groupdocs.markdown import License

License().set_license("path/to/license.lic")

Oder GROUPDOCS_LIC_PATH als Umgebungsvariable setzen; sie wird beim Import automatisch angewendet.


Unterstützte Formate

Das Python‑Paket unterstützt dieselbe Bandbreite an Formaten wie die .NET‑Bibliothek:

  • PDF — .pdf
  • Word / Rich Text — .doc, .docx, .docm, .dot, .dotx, .dotm, .rtf, .odt, .ott
  • Tabellen — .xls, .xlsx, .xlsb, .xlsm, .csv, .tsv, .ods, .ots
  • eBooks — .epub, .mobi
  • Text / Markup / Hilfe — .txt, .xml, .chm

Pythonische Beispiele

Konvertierungsoptionen und Bildstrategien

from groupdocs.markdown import (
    MarkdownConverter,
    ConvertOptions,
    MarkdownFlavor,
    ExportImagesToFileSystemStrategy,
)

strategy = ExportImagesToFileSystemStrategy("output/images")
strategy.images_relative_path = "images"  # ![](images/img-001.png)

options = ConvertOptions()
options.flavor = MarkdownFlavor.GIT_HUB
options.heading_level_offset = 1      # # Title -> ## Title
options.include_front_matter = True    # YAML‑Metadaten voranstellen
options.image_export_strategy = strategy

MarkdownConverter.to_file("report.docx", "output/report.md", convert_options=options)

Dokumentinspektion ohne Konvertierung

from groupdocs.markdown import MarkdownConverter

info = MarkdownConverter.get_info("business-plan.docx")
print(f"{info.file_format}, {info.page_count} pages, author: {info.author}")

Laden einer passwortgeschützten Datei

from groupdocs.markdown import MarkdownConverter, LoadOptions, FileFormat

load_opts = LoadOptions(FileFormat.DOCX)
load_opts.password = "secret"

MarkdownConverter.to_file("protected.docx", "output.md", load_options=load_opts)

Streams und Kontext‑Manager

from groupdocs.markdown import MarkdownConverter

with open("document.docx", "rb") as stream:
    with MarkdownConverter(stream) as converter:
        converter.convert("document.md")

Async‑API — mehrere Dokumente gleichzeitig konvertieren

Da Datei‑I/O asynchron ist, ermöglicht asyncio.gather() einem einzelnen Worker, viele Dokumente ohne Blockierung zu verarbeiten:

import asyncio
from groupdocs.markdown import MarkdownConverter

async def convert_many():
    await asyncio.gather(
        MarkdownConverter.to_file_async("a.docx", "a.md", None),
        MarkdownConverter.to_file_async("b.pdf",  "b.md", None),
        MarkdownConverter.to_file_async("c.xlsx", "c.md", None),
    )

asyncio.run(convert_many())

Damit lässt sich die Bibliothek nahtlos in ASGI‑Frameworks wie FastAPI einsetzen — ein Worker kann viele gleichzeitige Konvertierungsanfragen bedienen, ohne Thread‑Konkurrenz.

Fehlerbehandlung

Alle Konvertierungsmethoden werfen bei einem Fehlschlag, mit spezifischen Ausnahmetypen für gängige Szenarien:

from groupdocs.markdown import (
    MarkdownConverter,
    DocumentProtectedException,
    InvalidFormatException,
    GroupDocsMarkdownException,
)

try:
    MarkdownConverter.to_file("annual-report.docx", "annual-report.md")
except DocumentProtectedException:
    print("Falsches oder fehlendes Passwort.")
except InvalidFormatException:
    print("Datei ist beschädigt oder nicht unterstützt.")
except GroupDocsMarkdownException as ex:
    print(f"Konvertierung fehlgeschlagen: {ex}")

Für RAG‑ und LLM‑Pipelines gebaut

Markdown ist das bevorzugte Eingabeformat für Einbettungs‑Modelle und Retrieval‑Pipelines — es bewahrt Überschriften, Listen, Tabellen und Hervorhebungen und lässt sich leicht chunken und tokenisieren. Ein typischer RAG‑Ingest‑Workflow sieht so aus:

import re
from groupdocs.markdown import MarkdownConverter, ConvertOptions, SkipImagesStrategy, MarkdownFlavor

options = ConvertOptions()
options.image_export_strategy = SkipImagesStrategy()   # Nur Text für RAG
options.flavor = MarkdownFlavor.COMMON_MARK

MarkdownConverter.to_file("business-plan.pdf", "business-plan.md", convert_options=options)

with open("business-plan.md", "r", encoding="utf-8") as f:
    markdown = f.read()

# Nach Top‑Level‑Überschriften splitten, dann jedes Chunk einbetten/indexieren
chunks = [c for c in re.split(r"\n#{1,2} ", markdown) if c.strip()]

Da die Bibliothek vollständig on‑premise läuft, verlassen sensible Dokumente niemals Ihre Umgebung — ein häufiges Erfordernis in regulierten Branchen, bei Rechtsteams und internen Wissensdatenbanken.


AI‑friendly by design

Die meisten Python‑SDKs behandeln KI‑Coding‑Assistenten als nachträglichen Gedanken — ein Entwickler muss dem Agenten noch die Dokumentation zeigen, Beispiele einfügen oder durch Trial‑and‑Error debuggen. GroupDocs.Markdown für Python via .NET kehrt das um: Die Bibliothek ist so konzipiert, dass Agenten wie Claude Code, Cursor, GitHub Copilot und Codex sie ohne manuelle Einrichtung aufnehmen können.

AGENTS.md wird im Wheel ausgeliefert

Dies ist das erste GroupDocs‑Paket, das eine AGENTS.md‑Datei direkt im installierten Wheel bündelt. Die Datei folgt der aufkommenden AGENTS.md‑Konvention — einem reinen Markdown‑README, das speziell für KI‑Coding‑Assistenten und nicht für Menschen geschrieben ist.

Nach pip install groupdocs-markdown-net landet die Datei unter:

site-packages/groupdocs/markdown/AGENTS.md

Ein KI‑Assistent, der Ihr Projekt öffnet, kann sie sofort lesen und lernen:

  • Die komplette öffentliche API‑Oberfläche (Klassen, Methoden, Enums, Ausnahmen) und deren Beziehungen.
  • Idiomatische Nutzungsmuster für die häufigsten Szenarien — statisch vs. Instanz‑API, sync vs. async, Bildstrategien, Front‑Matter, Fehlerbehandlung.
  • Häufige Stolperfallen und deren Vermeidung — z. B. welche ConvertOptions‑Überladungen None akzeptieren, wie passwortgeschützte Dateien zu handhaben sind, wie Konvertierungs‑Warnungen zu erfassen sind.
  • Fehlerbehebung für plattformspezifische Probleme (libSkiaSharp auf macOS, ICU auf Linux).

In der Praxis bedeutet das, Sie können sagen „verwende groupdocs-markdown-net, um diesen Ordner PDFs in Markdown für meine RAG‑Pipeline zu konvertieren“ und der Agent schreibt beim ersten Versuch funktionierenden Code — keine halluzinierten Methodennamen, keine falsche Argumentreihenfolge, keine geratenen Importe.

Maschinell lesbare Dokumentation

Für Agenten, die etwas nachschlagen müssen, das nicht in AGENTS.md steht, wird die komplette Produktdokumentation ebenfalls maschinenlesbar bereitgestellt:

  • Einseitiges Korpus — die gesamten Docs als eine zusammengefügte Markdown‑Datei, bereit, in das Kontext‑Fenster eines Agenten geladen zu werden:
    https://docs.groupdocs.com/markdown/python-net/llms-full.txt
  • Pro‑Seite‑Markdown — .md an jede Docs‑URL anhängen, um den Roh‑Source zu erhalten:
    https://docs.groupdocs.com/markdown/python-net/quick-start-guide.md
  • llms.txt‑Index — ein llms.txt-ähnliches Inhaltsverzeichnis, das Agenten zu den benötigten Seiten führt:
    https://docs.groupdocs.com/markdown/python-net/llms.txt

MCP‑Server für Live‑Doc‑Lookups

Für Agenten, die das Model Context Protocol unterstützen, stellen wir die Docs als MCP‑Server bereit. Fügen Sie dies Ihrer Claude Code‑ oder Cursor‑Konfiguration hinzu:

{
  "mcpServers": {
    "groupdocs-docs": {
      "url": "https://docs.groupdocs.com/mcp"
    }
  }
}

Danach kann Ihr Agent die Dokumentation bei Bedarf abfragen, anstatt sich auf möglicherweise veraltete Trainingsdaten zu verlassen.

Markdown rein, Markdown raus

Hier gibt es eine schöne Symmetrie: Der Ausgabe‑Typ der Bibliothek ist Markdown — das Format, das LLMs für RAG am besten verarbeiten — und ihre Dokumentation ist ebenfalls Markdown, als Einzeldatei für einfache Kontext‑Fenster‑Einspeisung bereitgestellt. Egal, ob Sie einen Agenten bitten, Code zu schreiben, der die Bibliothek verwendet, oder den Agenten bitten, Ihre Dokumente mit der Bibliothek zu verstehen, Markdown ist das gemeinsame Medium.


Export‑Beispiel

Die obigen Snippets kommen dem kürzesten nützlichen Programm, das Sie mit der Bibliothek schreiben können, sehr nahe. Hier dieselbe Idee als lauffähiges Projekt — Quell‑Dokument, Python‑Skript, vorab generierte Ausgabe, requirements.txt und ein Dockerfile — sodass Sie es end‑to‑end ausprobieren können, ohne von Grund auf zu schreiben.

Quell‑DOCX

Die Quelldatei business-plan.docx ist ein kurzer, reich formatierter Business‑Plan mit Überschriften, Tabellen, Bildern und Metadaten.

Python‑Skript

from groupdocs.markdown import MarkdownConverter, ConvertOptions, MarkdownFlavor

def quick_example():
    """Ein Word‑Dokument mit GitHub‑Flavor und YAML‑Front‑Matter nach Markdown konvertieren."""

    # Einzeiler — gibt einen Markdown‑String zurück
    md = MarkdownConverter.to_markdown("business-plan.docx")

    # Mit Optionen — schreibt in eine Datei
    options = ConvertOptions()
    options.flavor = MarkdownFlavor.GIT_HUB
    options.include_front_matter = True
    options.heading_level_offset = 1
    MarkdownConverter.to_file("business-plan.docx", "quick-example.md", convert_options=options)

if __name__ == "__main__":
    quick_example()

Ausgabe‑Markdown

Die quick-example.md‑Ausgabe beginnt mit einem YAML‑Front‑Matter‑Block, der automatisch aus den Dokument‑Metadaten extrahiert wurde, gefolgt vom konvertierten Inhalt mit GitHub‑Flavored‑Tabellen und einer verschobenen Überschriftenhierarchie (bereit, in ein größeres Dokument eingebettet zu werden).

Lauffähige Beispiel‑App

Alles zusammengepackt: sample-app.zip. Entpacken, dann:

cd src
python -m venv .venv
# Windows: .venv\Scripts\activate
# Linux/macOS: source .venv/bin/activate
pip install -r requirements.txt
python quick_example.py

Oder in Docker ausführen — das mitgelieferte Dockerfile richtet die ICU‑Abhängigkeit ein, die die gebündelte .NET‑Runtime unter Linux benötigt:

cd src
docker build -t groupdocs-markdown-python-example .
docker run --rm -v "$(pwd)/output:/app/output" groupdocs-markdown-python-example

Zusammenfassung

GroupDocs.Markdown für Python via .NET bringt die vollständige Dokument‑zu‑Markdown‑Konvertierungs‑Engine als eigenständiges Wheel zu Python — kein externes Runtime, keine Cloud, keine Überraschungen. Eine pythonische API, Async‑Support und erstklassige KI‑Tool‑Integration machen es zu einer praktischen Wahl für Python‑Teams, die RAG‑Systeme, statische Seitengeneratoren oder Dokument‑Verarbeitungspipelines bauen.


Weiterführende Informationen


Support & Feedback

Für Fragen oder technische Unterstützung nutzen Sie bitte unser Free Support Forum — wir helfen Ihnen gern.