Skip to content

v1.0.4

Latest

Choose a tag to compare

@Goldziher Goldziher released this 30 Jul 06:00
ea28a7a

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

Zig

Add to your build.zig.zon:

.dependencies = .{
    .xberg-zig = .{\n        .url = \"https://github.com/xberg-io/xberg/releases/download/v1.0.4/xberg-zig-v1.0.4.tar.gz\",\n        .hash = \"xberg-1.0.4-iV1Grpf6shWCbXE8XnOvHy-1uIe2l5JOjJjgy1TaDO9-\",\n    },\n},\n```\n