Skip to content

Features

Kreuzberg is a document intelligence library built on a Rust core with bindings for 12 languages. It extracts text, tables, and metadata from 91+ file formats, runs OCR when needed, and feeds the results through a configurable post-processing pipeline. Each capability below links to the guide or reference page with configuration details and code examples.

  • Extraction — Pull text, tables, metadata, and images from 91+ formats through native Rust extractors. No external tools such as LibreOffice are required. See Extraction Basics.
  • OCR — Recognize text in scanned documents and images with Tesseract, PaddleOCR, or EasyOCR, optionally chained into a quality-driven fallback pipeline. See the OCR Guide.
  • Chunking and embeddings — Split extracted text into sized chunks and generate local vector embeddings with FastEmbed for RAG pipelines. See Chunking and Embeddings.
  • Output formats — Render results as plain text, Markdown, Djot, HTML, or structured JSON. The HTML renderer ships styled kb-* classes and built-in themes. See Output Formats and HTML Output.
  • API and MCP server — Serve extraction over HTTP (kreuzberg serve) or expose it to AI agents over MCP (kreuzberg mcp). See the API Server Guide.
  • Plugins — Extend the pipeline with custom document extractors, OCR backends, validators, and post-processors. See the Plugin System concept and the Creating Plugins guide.

Kreuzberg handles 91+ file formats across these categories:

  • Documents — PDF, Word, PowerPoint, OpenDocument, RTF, plain text, Markdown, and more
  • Spreadsheets — Excel, Numbers, OpenDocument, CSV, TSV, dBASE
  • Images — JPEG, PNG, GIF, BMP, TIFF, WebP, JPEG 2000, and more (routed to OCR)
  • Email — EML, MSG
  • Web and markup — HTML, XHTML, XML, SVG
  • Structured data — JSON, YAML, TOML
  • Archives — ZIP, TAR, GZIP, 7-Zip
  • Academic — EPUB, BibTeX, RIS, LaTeX, Typst, JATS, DocBook, and more

For the full format matrix with MIME types and extraction methods, see the Format Support Reference.

Every file flows through the same multi-stage pipeline: MIME detection, format extraction, optional OCR, post-processing (validators, quality processing, chunking, embeddings), and caching. For a stage-by-stage walkthrough, see Extraction Pipeline.

Mode When to Use Details
Library Embedding extraction into your application Import the package in Python, TypeScript, Rust, Go, Ruby, C#, Java, PHP, Elixir, R, or C
CLI One-off extractions, scripting, CI pipelines kreuzberg extract document.pdf --format json — see CLI Usage
REST API Multi-service architectures, language-agnostic access kreuzberg serve --port 8000 — see API Server Guide
MCP Server AI agent integration kreuzberg mcp — stdio transport with JSON-RPC 2.0
Docker Reproducible deployments with all dependencies bundled ghcr.io/kreuzberg-dev/kreuzberg-full:4 — see Docker Guide

Kreuzberg reads configuration programmatically or from kreuzberg.toml, kreuzberg.yaml, or kreuzberg.json, auto-discovered from the current directory, ~/.config/kreuzberg/, and /etc/kreuzberg/. Environment variables override file-based settings. See the Configuration Guide.