v1.23.0
m-bain/whisperXv1.23.0Sep 22, 2026by abimaelmartell
Upgrading?
AI Summary
Improves text-layer repairs including handling of right-to-left text, spacing accents, and ToUnicode CMap interpolation.
Key Highlights
- Reads Form XObjects with large BBox numerals
- Handles right-to-left runs visually to fix word mirroring
- Composes detached spacing accents with their base letters
- Interpolates single-glyph gaps in ToUnicode CMaps
New Features
- cmap_gaps field in PdfProcessResult
- invisible_text_layer OCR reason
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,211
A collective list of free APIs
NousResearch/hermes-agent★ 256,078
The agent that grows with you
yt-dlp/yt-dlp★ 200,249
A feature-rich command-line audio/video downloader
microsoft/markitdown★ 191,556
Python tool for converting files and office documents to Markdown.
Significant-Gravitas/AutoGPT★ 187,699
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.