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  — siehe „Bilder" unten |
Bilder
to_markdown() gibt Bilder als Name-Placeholder aus (z. B. ), 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
- HTML-Extraktion — wenn stilisierte Ausgabe gefragt ist
- IR-Extraktion — strukturiertes JSON für reichere Pipelines
- PDF for RAG — Begleitbibliothek
pdf_oxidefür PDFs