LLM-grade ingestion
Structured Markdown plus extracted images, with reading order and tables preserved — a viable alternative to markitdown and docling, because it uses them.
Markdown-first document engine
DocMD orchestrates best-of-breed engines to ingest .docx, .pdf,
.pptx and .xlsx into a git-native Markdown package you can edit in
VS Code or the CLI — then render back to PDF and DOCX. Content over style: the text and
images survive, the binary never gets to be the source of truth.
Why DocMD
Ingestion libraries stop at extraction. DocMD borrows their extraction and owns the round trip: an editable package, a VS Code frontend, and a render path back out.
Structured Markdown plus extracted images, with reading order and tables preserved — a viable alternative to markitdown and docling, because it uses them.
Import into a package, edit the canonical Markdown, render back to PDF or DOCX. The editable truth is text and assets, not an opaque binary.
DocMD picks the right engine per format and direction — pandoc, LibreOffice, docling or markitdown — behind one consistent CLI and package contract.
The engine matrix
Python is scoped to PDF ingestion only. Everything else — all render, and docx/pptx/xlsx import — is native. Edit Markdown and export, and you need no Python at all.
| Format | Import engine | Runtime |
|---|---|---|
.md | passthrough (copy) | native |
.docx | pandoc | native |
.pptx / .xlsx | LibreOffice → pandoc | native |
.pdf | docling (default) · markitdown (fallback) | python |
Render (Markdown → X): docx, pptx via pandoc; pdf via pandoc → LibreOffice. PDF defaults to docling for its layout, table structure and OCR — markitdown stays the zero-friction fallback.
One CLI
The VS Code extension is a frontend over these commands, so automation and editor UX stay aligned.
docmd import report.pdf
Ingest docx / pdf / pptx / xlsx into a .docmd package with canonical Markdown and extracted assets.
docmd render report.docmd --pdf
Render the edited package back out to PDF (also DOCX and PPTX).
docmd doctor
Per-capability report of which import/render formats are available on this machine, with install hints.
docmd bench ./corpus --reference docling
Compare docmd vs docling vs markitdown on coverage and text recall — the measure of “viable alternative”.
docmd setup pdf --apply
Provision the toolchain — pandoc & LibreOffice via your package manager, docling & markitdown via uv. Terraform-style --plan by default, --apply to execute.
docmd tui
A summary of your packages and available workflows, straight in the terminal.
The canonical model
Every import produces a folder: a manifest, the canonical Markdown, the original file, and extracted assets. Review it in a diff, edit it with an agent, render it when you’re done — it behaves like a code artifact, not a binary blob.
report.docmd/ manifest.yaml # kind, source, import status content/document.md # the canonical, editable truth assets/ # extracted images original/ # the untouched source file exports/ # rendered pdf / docx
Get started
Grab the DocMD runtime, then run docmd setup to install the conversion engines it orchestrates.
Windows
irm https://docmd.ccisne.dev/install.ps1 | iex
Linux
curl -fsSL https://docmd.ccisne.dev/install.sh | bash
Engines
docmd setup all --apply