v1.23.0
ChatbotXIO/ChatbotXv1.23.0Sep 22, 2026by abimaelmartell
Upgrading?
Release notes summary
This release focuses on text-layer repairs, including Form XObject BBox handling, right-to-left reading order, stale ToUnicode CMaps, spacing accents, and invisible text layers. It also adds CMap gap reporting and improves CLI argument handling and built-in CMap packaging.
Key Highlights
- Form XObjects with oversized BBox numerals are saturated so their text can be extracted instead of producing an empty page.
- Right-to-left runs painted forwards now vote for visual storage, fixing word-mirrored pages while preserving logical order for invisible text layers.
- Re-encoded simple fonts with stale ToUnicode CMaps are read via Differences names, and detached spacing accents are composed with their base letters.
- Pages with invisible text layers under covering images are classified as scans with the invisible_text_layer OCR reason.
- PdfProcessResult gains cmap_gaps, and pdf2md/detect-pdf now accept the PDF path as the first non-option argument with flags before or after it.
New Features
- PdfProcessResult cmap_gaps API for per-font CMap coverage
- invisible_text_layer OCR reason
- CLI support for PDF path as first non-option argument with flexible flag placement
- Built-in CMaps compiled into the binary for cargo install binaries and published wheels
Full Release Notes
Changes since 1.22.1: - Read a Form XObject whose `/BBox` numerals are too large for any parser: such numerals are saturated in place before the document is read, so the form's text is extracted and the OCR pipeline renders it instead of an empty page (#560). - Read right-to-left runs shown in reading order forwards: a visible run of right-to-left letters painted forwards now votes for visual storage, so pages that came out word-mirrored read correctly; the logical-order reading is kept for invisible text layers (#561). - Read a re-encoded simple font by its `/Differences` names when it kept a stale ToUnicode CMap, and keep one glyph's characters together through the visual-order read-back (#562). - Compose a detached spacing accent with the letter it is painted over instead of leaving a stray accent a word on (#563). - Treat a return from a zero-advance dependent sign placed behind the pen as no word gap, so scripts that attach signs by stepping the pen back keep their words whole (#564). - Classify a page whose text layer is drawn invisibly under a covering image as a scan with the OCR reason `invisible_text_layer`, following the text rendering mode, the transformation, the graphics state stack and image draws through form content within a per-page budget (#566). - Interpolate single-glyph gaps in a ToUnicode CMap when the neighbouring codes make the reading unambiguous, mark the rest as U+FFFD instead of dropping them, and report each font's coverage (#568). - A ToUnicode entry whose destination is a control character is a miss, not text: the marker replaces it and the font program, the declared encoding or a blank glyph's advance recovers the letter where it can (#567). - `pdf2md` and `detect-pdf` take the PDF path as the first non-option argument, so flags may come before or after it, and a missing input names the path that could not be opened; the built-in CMaps are compiled into the binary instead of being read from the crate checkout at run time, so `cargo install` binaries and published wheels find them (`PDF_INSPECTOR_BCMAPS_DIR` still overrides) (#570). API: `PdfProcessResult::cmap_gaps` (Node `cmapGaps`, Python `cmap_gaps`, WebAssembly `cmapGaps`, and the `pdf2md --json` / `detect-pdf --analyze --json` field) lists, per font with gaps among the two-byte codes shown, the codes shown, interpolated and left unmapped (#568). The detector's `invisible_text_layer` OCR reason is new (#566). Release preparation: #571. [Full changelog](https://github.com/firecrawl/pdf-inspector/compare/v1.22.1...v1.23.0)
Related Repositories
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
Reverse engineer anything with agents, from app behavior down to native binaries.
Interactive roadmaps, guides and other educational content to help developers grow in their careers.
The open source coding agent.
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.