v1.0.7
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.
- #1355 —
force_ocrno 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
libheifbuild 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
UnsupportedFormatfor 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).
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.
v1.0.6
Full Changelog: https://github.com/xberg-io/xberg/compare/v1.0.5...v1.0.6
Benchmark Results 2026-07-31 (9f0c318)
Comparative benchmark results from workflow run 30624463676.
Commit: 9f0c318380f30521c70bf97d0edc1a3941da14b2 Date: 2026-07-31
v1.0.5
Release v1.0.5
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.
- #1344 — Layout inference no longer silently degrades to no-layout output when a hardware execution provider fails. macOS
autoacceleration 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 aProcessingWarning(recovered-on-CPU, or lost entirely) instead of emptyprocessing_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) withcp -Rinstead of failing on Linux musl installs.
- Raw
println!/eprintln!/print!/eprint!/dbg!are now denied in production code across the whole workspace (clippyprint_stdout/print_stderr/dbg_macro);tracingis 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 throughtracing.
- #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-visibleProcessingWarningwhether 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
ProcessingWarningwhen 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.tsrather than rawnapi buildoutput that referenced undefinedJs*types. - #1353: The install script copies nested runtime library directories with
cp -Rinstead of failing withcp: -r not specified; omitting directoryon Linux musl installs. xberg-libwpdWindows build: the WordPerfect extractor compiles and links onx86_64-pc-windows-msvc— zlib is built from source vialibz-syson Windows, and a narrowingmake_shared<WP6SubDocument>call is cast to(unsigned)for the newest MSVC toolchain.
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.
- #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) astext/plainchildren. - MCP (rmcp 3.0) —
extract,extract_batch, andcache_warmcan run as cancellable SEP-2663 tasks;cache_clear/cache_warmnow return typed structured output.
- MCP clients can run
extract,extract_batch, andcache_warmas cancellable SEP-2663 tasks when they advertise task support; synchronous clients remain compatible. - MCP
cache_clearandcache_warmreturn typed structured results with cleared-file totals and model availability separated from confirmed cache-hit and download status.
- Dependency bumps:
crawlberg1.0.11,tree-sitter-language-pack1.13.6,base640.23 (xberg-jni).
- #1338: Default
OcrStrategy::Autoextraction 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 astext/plainchildren, and unsniffable extensionless members default toapplication/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
Benchmark Results 2026-07-30 (ea28a7a)
Comparative benchmark results from workflow run 30543780333.
Commit: ea28a7af7998bc6e7157b727aefb83c3ede20db0 Date: 2026-07-30
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.
- VLM OCR now honors
XBERG_LLM_*env credentials when a custombase_urlis set, andvlm_fallbackon_low_qualityfires 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_colorsconfig 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 — theAuto-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.
- Upgrade
rmcpto 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
tracinglogs when it materializes a Tesseract language pack at runtime. - Dependency bumps:
liter-llm1.11.4,toml1.1.4.
- PDF benchmark fixtures can pin Tesseract OCR languages, with pack validation before timed extraction.
v1.0.2
Release v1.0.2
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.
- 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-xbergon npm andxberg-hermes-pluginon PyPI.
- PHP binding builds again.
ort2.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).
- Dropped the phantom
@xberg-io/xberg-win32-arm64-msvcnode 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
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