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) 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.
Added
- 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.
Changed
- Dependency bumps:
crawlberg1.0.11,tree-sitter-language-pack1.13.6,base640.23 (xberg-jni).
Fixed
- #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
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