v1.23.0
minitap-ai/mobile-usev1.23.0Sep 22, 2026by abimaelmartell
Upgrading?
AI Summary
This release focuses on text-layer repairs for PDF documents, addressing issues with malformed Form XObjects, right-to-left text rendering, and ToUnicode CMap interpolation.
Key Highlights
- Fixes text extraction for PDFs with large BBox numerals in Form XObjects.
- Improves right-to-left text rendering by voting for visual storage.
- Handles re-encoded fonts with stale ToUnicode CMaps.
- Composes spacing accents with the letter they are painted over.
- Adds classification support for pages with invisible text layers.
Breaking Changes
- pdf2md and detect-pdf now require the PDF path as the first non-option argument (flags may now come before or after the path).
- Built-in CMaps are compiled into the binary instead of being read from the crate checkout at runtime, which affects `cargo install` binaries.
New Features
- New API field `cmap_gaps` to list interpolated and unmapped codes per font.
- New OCR reason `invisible_text_layer` for detector classification.
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
public-apis/public-apis★ 491,131
A collective list of free APIs
NousResearch/hermes-agent★ 255,913
The agent that grows with you
yt-dlp/yt-dlp★ 200,005
A feature-rich command-line audio/video downloader
microsoft/markitdown★ 191,484
Python tool for converting files and office documents to Markdown.
Significant-Gravitas/AutoGPT★ 187,700
AutoGPT is the vision of accessible AI for everyone, to use and to build on. Our mission is to provide the tools, so that you can focus on what matters.