kreuzberg-dev/kreuzberg
 Watch   
 Star   
 Fork   
9 hours ago
kreuzberg

v1.0.7

Highlights

Candle OCR backends now ship in the published packages. The pure-Rust Candle VLM OCR backends — TrOCR, PaddleOCR-VL, GLM-OCR, and DeepSeek-OCR — are compiled in by default across Python, Node, Go, Java, C#, Ruby, PHP, Elixir, Kotlin (JVM), Zig, and the CLI / Docker image on Linux, macOS (Apple Silicon), and Windows. Select one with ocr.backend = "candle-glm-ocr" (or candle-trocr / candle-paddleocr-vl / candle-deepseek-ocr); model weights download from Hugging Face on first use. Previously these backends were excluded from full and reachable only via a custom source build.

Not available on WebAssembly, Android, iOS, Dart, Swift, or x86_64 (Intel) macOS.

Fixed

  • #1355 — force_ocr no longer emits a silently blank page when the PDF rasterizer cannot decode an image XObject. OCR is retried directly on the embedded image bytes (decoded pixels, or the raw JPEG/JP2 stream) and a processing warning is recorded, so the page content is recovered instead of dropped without notice.
  • Swift artifact bundle builds again — HEIC (whose libheif build script can't cross-compile) is dropped from the cross-compiled Swift target; the native C FFI distribution keeps HEIC.
  • XLSX extraction on Windows now works instead of returning UnsupportedFormat for a format the registry advertised as supported.
  • Complete cross-platform publish — the first release since 1.0.4 with green Windows binding builds (libwpd/zlib MSVC link) and working npm integration packages (langchain-xberg, llamaindex-xberg, n8n-nodes-xberg).

Install

pip install xberg            # Python
npm install @xberg-io/xberg  # Node
docker pull ghcr.io/xberg-io/xberg-cli:1.0.7

See the full changelog for the complete list of changes.

19 hours ago
kreuzberg

Benchmark Results 2026-07-31 (9f0c318)

Comparative benchmark results from workflow run 30624463676.

Commit: 9f0c318380f30521c70bf97d0edc1a3941da14b2 Date: 2026-07-31

23 hours ago
kreuzberg

v1.0.5

Release v1.0.5

1 days ago
kreuzberg

v1.0.5

xberg v1.0.5

Patch release: closes the remaining open bug reports in the PDF/OCR/layout pipeline and install path, hardens layout hardware-acceleration fallback, and denies raw stdout/stderr prints across the workspace. No breaking API changes.

Highlights

  • #1344 — Layout inference no longer silently degrades to no-layout output when a hardware execution provider fails. macOS auto acceleration resolves RT-DETR to CPU up front (its current export cannot execute under CoreML); when an explicit accelerated provider fails at inference, both the markdown and OCR paths retry once on CPU and recover the layout — either way surfacing a ProcessingWarning (recovered-on-CPU, or lost entirely) instead of empty processing_warnings.
  • #1350 — The Markdown hierarchy no longer merges a distant header and footer into one block.
  • #1353 — The install script copies nested runtime library directories (e.g. lib/libheif) with cp -R instead of failing on Linux musl installs.

Changed

  • Raw println!/eprintln!/print!/eprint!/dbg! are now denied in production code across the whole workspace (clippy print_stdout/print_stderr/dbg_macro); tracing is the sole diagnostic surface. The CLI's machine-readable stdout output opts back in per call site, and the regenerated bindings route FFI-bridge diagnostics through tracing.

Fixed

  • #1344: Unified layout acceleration fallback across the markdown and OCR paths — proactive auto→CPU for RT-DETR on macOS, retry-on-CPU for explicit accelerated failures, and a caller-visible ProcessingWarning whether the layout was recovered on CPU or lost.
  • #1345: Sparse native two-column PDFs preserve column-block reading order instead of interleaving text lines across the gutter.
  • #1346: PaddleOCR emits a ProcessingWarning when requested languages are not covered by the selected recognition model, and OCR metadata reports the recognition model actually used.
  • #1349: Successful TATR table reconstruction no longer writes source cell content and coordinates to stderr.
  • #1350: Paragraph continuation rejects merges across a large vertical baseline gap and recomputes the merged block's bounding box, so distant header/footer blocks are no longer merged.
  • #1351: The published Node package ships the alef-generated index.d.ts rather than raw napi build output that referenced undefined Js* types.
  • #1353: The install script copies nested runtime library directories with cp -R instead of failing with cp: -r not specified; omitting directory on Linux musl installs.
  • xberg-libwpd Windows build: the WordPerfect extractor compiles and links on x86_64-pc-windows-msvc — zlib is built from source via libz-sys on Windows, and a narrowing make_shared<WP6SubDocument> call is cast to (unsigned) for the newest MSVC toolchain.
2 days ago
kreuzberg

v1.0.4

xberg v1.0.4

Patch release: five bug fixes across the PDF/OCR pipeline and archive extraction, full adoption of the rmcp 3.0 MCP feature set, and routine dependency bumps. No breaking API changes.

Highlights

  • #1338 — Scanned / text-layer-less PDFs now OCR automatically under the default OcrStrategy::Auto, instead of returning empty content. Explicit OCR disablement stays authoritative.
  • #1341 — Synthesized VLM fallback OCR runs for mixed native/OCR PDFs, preserves per-stage diagnostics, and keeps the last non-empty fallback rather than reverting to weaker classical text.
  • #1340 — PDF images and generated captions render at their bounding-box-aware reading-order position (in the correct layout column) instead of at the end of the document, and stay consistent through chunking, translation, and redaction.
  • #1342 — Sparse numeric tables with a few inferred columns are retained as tables instead of being flattened to prose.
  • #1343 — Archive extraction no longer emits macOS/tooling metadata (__MACOSX/, AppleDouble ._*, .DS_Store, Thumbs.db, desktop.ini, __pycache__/, .pyc/.pyo) as text/plain children.
  • MCP (rmcp 3.0)extract, extract_batch, and cache_warm can run as cancellable SEP-2663 tasks; cache_clear/cache_warm now return typed structured output.

Added

  • MCP clients can run extract, extract_batch, and cache_warm as cancellable SEP-2663 tasks when they advertise task support; synchronous clients remain compatible.
  • MCP cache_clear and cache_warm return typed structured results with cleared-file totals and model availability separated from confirmed cache-hit and download status.

Changed

  • Dependency bumps: crawlberg 1.0.11, tree-sitter-language-pack 1.13.6, base64 0.23 (xberg-jni).

Fixed

  • #1338: Default OcrStrategy::Auto extraction OCRs scanned PDFs with no native text layer instead of returning empty content; explicit OCR disablement remains authoritative.
  • #1341: Synthesized VLM fallback pipelines run for mixed native/OCR PDFs, preserve skipped and failed-stage diagnostics, and retain the last non-empty fallback when every stage scores below threshold.
  • #1340: PDF images and generated captions render at bounding-box-aware reading-order positions, remain within the correct layout column, preserve source order, and stay consistent through chunking, translation, and redaction.
  • #1343: Archive extraction skips macOS/tooling metadata entries (__MACOSX/, AppleDouble ._*, .DS_Store, Thumbs.db, desktop.ini, __pycache__/, .pyc/.pyo) instead of emitting them as text/plain children, and unsniffable extensionless members default to application/octet-stream; a single aggregated warning records what was filtered.
  • #1342: PDF table reconstruction retains short numeric grids when a small number of inferred columns make the principal data row nearly complete instead of fully populated.
  • Per-file OCR language overrides now also apply to explicit Tesseract pipeline stages, preserving override precedence.
  • PDF plain-text extraction repairs detached subscripts, phone suffixes, and final glyphs while preserving RTL, rotated, vertical-writing, and mathematical span order.
  • PDF Markdown atomically replaces adjacent native side-by-side table cohorts with validated layout table cohorts, avoiding mixed grids and dropped financial-table structure.
  • OCR Markdown applies layout hints to line-local geometry while preserving soft-wrapped body paragraphs and merging multi-line headings, code, pictures, and wrapped list items by hint.
  • Tesseract OCR Markdown aligns layout hints and table-cell matching with DPI-normalized and auto-rotated image coordinates, restoring semantic structure on scanned PDFs.
  • OCR Markdown recovers missing ordered-list successors only when an existing numeric list item anchors a complete, bounded three-item sequence across pages.
  • PDF Markdown preserves strong native headings when a lower-confidence layout Code hint lacks structured code evidence.
  • OCR Markdown recovers a title from a guarded first-block logo/title pattern when the layout model emits no semantic heading region.
  • PDF Markdown preserves native heading, list, code, and formula semantics while using layout geometry for reading order, grouping, and tables, tolerates minor crop jitter in side-by-side cohorts, merges sparse currency-affix columns without dropping markers, and folds wrapped financial-table lines into logical records; table-dominant pages also discard bbox-confirmed crop spill while retaining surrounding prose and annotations.
  • PDF Markdown reconstructs paired wrapped financial tables as semantic three-column grids and repairs consistently merged numeric columns from native PDF table detection.
  • PDF Markdown recognizes repeated large-font heading tiers across sparse multi-page documents while retaining the single-page sparse-document safeguard against display-text false positives.
  • Wide PDF numeric tables retain validated three-row headers while preserving the compact prose and caption safeguards used by smaller grids.

Full changelog: https://github.com/xberg-io/xberg/blob/v1.0.4/CHANGELOG.md

2 days ago
kreuzberg

Benchmark Results 2026-07-30 (ea28a7a)

Comparative benchmark results from workflow run 30543780333.

Commit: ea28a7af7998bc6e7157b727aefb83c3ede20db0 Date: 2026-07-30

2 days ago
kreuzberg

v1.0.3

Patch release. Completes the 1.0.2 rollout (core registry packages never published under 1.0.2) and lands a set of OCR/PDF extraction fixes plus the rmcp 3.0 upgrade.

Fixed

  • VLM OCR now honors XBERG_LLM_* env credentials when a custom base_url is set, and vlm_fallback on_low_quality fires for bare images; per-stage OCR pipeline failures surface as processing warnings (#1339).
  • Tesseract no longer creates cache directories when caching is disabled (#1336).
  • Light-text-on-dark-background scans are auto-inverted before OCR, and the invert_colors config is honored as an explicit override (#1337).
  • NER and summarization processors are now compiled into container builds; whole-document text failures route to OCR under ScannedPages (#1338, partial — the Auto-strategy case still needs a repro).
  • Sparse continuation rows no longer flatten numeric line-item tables (#1333).
  • Linux builds without CUDA or TensorRT no longer fail under strict warnings on an unused ONNX Runtime execution-provider trait import.
  • Label-heavy financial tables are recovered and stitched without merging independent aligned tables.
  • PDF/OCR Markdown: explicit word boundaries and changelog heading hierarchy preserved; validated semantic layout hints preferred over broad text regions at comparable overlap.

Changed

  • Upgrade rmcp to 3.0.0; the MCP server is migrated to the 3.0 API (response enums, schema_for_output, list-result cache/TTL fields).
  • OCR emits tracing logs when it materializes a Tesseract language pack at runtime.
  • Dependency bumps: liter-llm 1.11.4, toml 1.1.4.

Added

  • PDF benchmark fixtures can pin Tesseract OCR languages, with pack validation before timed extraction.
2 days ago
kreuzberg

v1.0.2

Release v1.0.2

3 days ago
kreuzberg

v1.0.2

xberg 1.0.2 is a packaging release. It completes the 1.0.1 rollout — the PHP/Packagist binding failed to build for 1.0.1 — and adds a first-party coding-agent plugin. No core extraction behavior changed; upgrading from 1.0.1 needs no code changes.

Added

  • Coding-agent plugin. A first-party xberg plugin for Claude Code, Codex, Cursor, and OpenCode, with a Hermes variant, ships extraction skills — batch extraction, chunking, OCR, tables, keyword extraction, and format selection — that drive xberg through its MCP/CLI surface. Published as @xberg-io/opencode-xberg on npm and xberg-hermes-plugin on PyPI.

Fixed

  • PHP binding builds again. ort 2.0.0-rc.13 moved the CoreML/CUDA/TensorRT execution-provider types behind matching Cargo features, so a fresh dependency resolution (as on the PHP build) picked up rc.13 and failed to compile — which is why 1.0.1 never reached Packagist. Those EP features are now enabled unconditionally (a compile-time #[cfg] unlock only, with no SDK dependency or runtime change).

Packaging

  • Dropped the phantom @xberg-io/xberg-win32-arm64-msvc node sub-package. It was declared as an optional platform dependency but never built — no xberg binding targets Windows on ARM64 — leaving an unresolvable optional dependency. It is removed from the package manifest and loader for parity with the other bindings.
  • Republishes every binding at 1.0.2 to close the 1.0.1 gaps, notably PHP/Packagist.

Full changelog: https://github.com/xberg-io/xberg/blob/main/CHANGELOG.md

Zig

Add to your build.zig.zon:

.dependencies = .{
    .xberg-zig = .{\n        .url = \"https://github.com/xberg-io/xberg/releases/download/v1.0.2/xberg-zig-v1.0.2.tar.gz\",\n        .hash = \"xberg-1.0.2-iV1Gro5mjhQYW3vtS3w8sTy-S2bYVIZPt5NRR_qD8Dse\",\n    },\n},\n```\n