v1.23.0
hasaneyldrm/exercises-datasetv1.23.0Sep 22, 2026by abimaelmartell
Upgrading?
AI Summary
Improves extraction of text from complex PDFs with invisible layers, right-to-left text, and malformed forms.
Key Highlights
- Read invisible text layers under images as scans
- Read right-to-left text in visual order
- Handle malformed Form XObjects with saturated BBox numerals
- Interpolate single-glyph gaps in ToUnicode CMaps
Breaking Changes
- New API field: `cmap_gaps`
New Features
- Invisible text layer detection
- Right-to-left visual order support
- Form XObject handling
- ToUnicode interpolation
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
f.k.a. Awesome ChatGPT Prompts. Share, discover, and collect prompts from the community. Free and open source — self-host for your organization with complete privacy.
Open-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 🚀
A complete web-based remote monitoring and management web site. Once setup you can install agents and perform remote desktop session to devices on the local network or over the Internet.
A general purpose HTTP reverse proxy and forwarding tool. Now written in Go!
Human: AI-powered 3D Face Detection & Rotation Tracking, Face Description & Recognition, Body Pose Tracking, 3D Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction, Gaze Tracking, Gesture Recognition