Skip to content

Office-Dokumente nach Markdown konvertieren

Jedes Office-Oxide-Handle hat eine to_markdown()-Methode, die GitHub-flavored Markdown liefert — Überschriften, Tabellen, Listen und code-ähnliche Blöcke — aus jedem der sechs unterstützten Formate. Der richtige Einstieg für die meisten LLM- und RAG-Pipelines.

Einzelaufruf

Rust

use office_oxide::to_markdown;

let md = to_markdown("report.docx")?;
std::fs::write("report.md", md)?;

Python

import office_oxide

md = office_oxide.to_markdown("report.docx")
open("report.md", "w").write(md)

JavaScript

import { toMarkdown } from 'office-oxide';
import { writeFileSync } from 'node:fs';

writeFileSync('report.md', toMarkdown('report.docx'));

Go

md, err := officeoxide.ToMarkdown("report.docx")
os.WriteFile("report.md", []byte(md), 0o644)

C#

File.WriteAllText("report.md", OfficeOxide.ToMarkdown("report.docx"));

Wiederverwendbares Handle

Python

from office_oxide import Document

with Document.open("deck.pptx") as doc:
    md = doc.to_markdown()

Rust

let doc = office_oxide::Document::open("deck.pptx")?;
let md = doc.to_markdown();

JavaScript

using doc = Document.open('deck.pptx');
const md = doc.toMarkdown();

Was rauskommt

Quellelement Markdown
DOCX-Überschrift (<w:pStyle w:val="Heading1"/> …) # Überschrift (Level gemäß Stil)
DOCX-Absatz Ein Absatz, Soft-Hyphens entfernt
DOCX-Listenpunkt - punkt oder 1. punkt (Nummerierung erhalten)
DOCX-Tabelle GFM-Pipe-Tabelle
XLSX-Sheet ## Sheet-Name plus Pipe-Tabelle pro Range
Verbundene XLSX-Zellen Inhalt der ersten Zelle, Span wird verworfen
PPTX-Folie ## Folie N plus Body, Notizen als Blockquote angehängt
PPTX-Tabelle GFM-Pipe-Tabelle inline in der Folie
Hyperlinks [text](url)
Bilder Placeholder ![alt](filename) — siehe „Bilder" unten

Bilder

to_markdown() gibt Bilder als Name-Placeholder aus (z. B. ![](image1.png)), extrahiert aber keine Bild-Bytes — Markdown ist ein Textformat. Um Bilder rauszuholen, nutze die IR oder den formatspezifischen Zugriff:

from office_oxide import Document

with Document.open("report.docx") as doc:
    ir = doc.to_ir()
    for section in ir["sections"]:
        for el in section["elements"]:
            if el["kind"] == "Image":
                print(el["filename"], len(el["data"]))

Vollständiges Schema unter IR-Extraktion.

Use Cases

  • RAG-Ingestion — Markdown ist das LLM-freundlichste Eingabeformat. Ein Pass pro Dokument, deterministische Struktur, kein HTML-Rauschen.
  • Dokument-Indexierung — Überschriften geben natürliche Chunk-Grenzen; Tabellen bleiben abfragbar.
  • Migrationen — DOCX → Markdown für Static-Site-Generatoren (Hugo, Astro, MkDocs).
  • Content-Diffs — Markdown-Diffs sind viel reviewfreundlicher als binäre .docx-Diffs.

Performance

to_markdown() läuft in derselben Größenordnung wie plain_text() — üblicherweise 1–2× Kosten beim Mediandokument. Vollständige Zahlen unter Performance.

Siehe auch