MinerU vs xberg
Heavyweight document-to-markdown/JSON parser — PDFs plus Office (docx/pptx/xlsx) through layout analysis and OCR into LLM-ready output for RAG and agentic pipelines. 73k stars, self-hostable. — versus — Rust-core document-intelligence engine with 15 language bindings: turns 96 formats — PDF, Office, images, audio, code — into clean text, tables and RAG-ready chunks. Library, CLI, REST or MCP.
Both turn documents (PDFs, Office) into LLM-ready text/JSON for RAG. MinerU is a heavyweight Python/VLM parser tuned for max-fidelity layout + OCR; Xberg is a lightweight polyglot engine spanning 96 formats and 15 language bindings with pluggable OCR. Pick MinerU for the hardest scanned/complex PDFs, Xberg for breadth and multi-language embedding.
| MinerU | xberg | |
|---|---|---|
| Stars | 75k | 8.7k |
| Forks | 6.3k | 520 |
| Language | Python | Rust |
| License | NOASSERTION | MIT |
| Last activity | 2 days ago | 2 days ago |
| Topics | ocr, rag | ocr, rag, local |
| Curated connections | 6 | 5 |
MinerU — the curator's take
The incumbent when document variety is the problem: beyond PDFs it handles Office formats, with mature layout analysis (reading order, tables, formulas) and a huge user base shaking out edge cases. NOT the lightest option — it's a full pipeline with model downloads and real hardware appetite; for a handful of clean PDFs a smaller tool is faster to stand up. Check the license (NOASSERTION on GitHub — AGPL-family, matters for commercial use).
xberg — the curator's take
The polyglot pick: reach for Xberg when your stack spans Rust, Python, Node, Go, the JVM or WASM and you want ONE extraction engine instead of a per-language pipeline. Handles 96 formats — PDFs, Office, images, audio/video (Whisper), even source code (306 languages, syntax-aware chunking) — with pluggable OCR (Tesseract/PaddleOCR/VLM), no GPU, and library/CLI/REST/MCP entry points. It's the v1 successor to Kreuzberg. Don't reach for it if you only need max-fidelity parsing of messy scanned PDFs (a dedicated VLM like MinerU or olmocr wins there), or if you're Python-only and already committed to LlamaIndex's own readers.