github yfedoseev/pdf_oxide v0.3.67
v0.3.67 | Reading-order quality release for untagged scientific papers — manuscript-line-number rails lifted out of the body, dense two-column bodies kept apart at a measured gutter, comma-bearing statistic subscripts rejoined, repeated journal pagination footers suppressed, whole-page placed-PDF article bodies recovered, and single-column pages protected from false column detection.

latest releases: v0.3.77, go/v0.3.77, v0.3.76...
one month ago

Fixed

  • Whole-page placed-PDF article bodies are no longer dropped — when a publisher places an entire typeset article body inside one Adobe InDesign /PlacedPDF marked-content region (e.g. MATEC Web of Conferences), its text is now extracted instead of suppressed. The placed-figure suppression — which removes a decorative draft-galley overlay whose glyphs duplicate logical text living outside the region — is now coverage-aware: a cheap content-stream pre-scan keeps the placed text when it dominates the page and the non-placed text is negligible (the placed region is the content), and suppresses it only when it is a minority overlay. This matches pymupdf/pdftotext, recovers the full body on whole-body-placed pages, and preserves the de-duplication win on decorative-overlay pages.
  • Single-column pages are no longer scrambled by false column detection — the topological block-reordering pass now requires each side-by-side column to span at least four text rows. A single-column page whose few body lines happen to have a wide mid-line word gap (a sentence space after a period) was previously split into two phantom columns and read out of order; it now stays on the row-aware path and reads correctly.
  • Marginalia line-number rails no longer interleave into the body — a narrow, sparse, body-aligned left-margin rail of numerals (manuscript line numbers 118 119 120 …, a folio rail) is now lifted out before geometric column ordering and re-appended at the end of the reading order, instead of being woven into the prose by a flat row-aware sort. Tightly gated (narrow outer band, sparse, ≥3 lines, predominantly numeric, a clear detached gutter, running alongside the body) so genuine narrow first columns, table label columns, and ordinary pages are unaffected.
  • Dense two-column bodies are kept apart at a measured gutter — the multi-region block builder now refuses to join two spans that straddle the page's measured central gutter, even when a tight-leading over-wide advance makes the cross-gutter gap look like a normal word space. This stops the two columns from fusing into one block (which previously left the page on a row-major interleave) on dense, tightly-led academic two-column pages. Purely subtractive — single-column, grid, and off-centre pages are unchanged.
  • Comma-bearing statistic subscripts rejoin to their base — an F-statistic's degrees of freedom (4,176 in F4,176) or a multi-affiliation marker (1,2), which the producer set as a single comma-joined subscript, is now merged back into its base instead of being stranded as separate F / 4 / 176 tokens.
  • Repeated journal pagination footers are suppressed — a constant-text running citation/pagination line (a DOI, a journal Volume … | Article … reference, or a journal URL host with a digit) that recurs in the top/bottom margin on a strong majority of pages is now treated as furniture and excluded from the body, matching how reference extractors handle running heads and folios (ISO 32000-1 §14.8.2.2). The shape gate is deliberately narrow — government-form control numbers such as OMB No. 1545-0115 are kept.

Installation

Rust (crates.io)

cargo add pdf_oxide

Python (PyPI)

pip install pdf_oxide

JavaScript/WASM (npm)

npm install pdf-oxide-wasm

CLI (Homebrew)

brew install yfedoseev/tap/pdf-oxide

CLI (Scoop — Windows)

scoop bucket add pdf-oxide https://github.com/yfedoseev/scoop-pdf-oxide
scoop install pdf-oxide

CLI (Shell installer)

curl -fsSL https://raw.githubusercontent.com/yfedoseev/pdf_oxide/main/install.sh | sh

CLI (cargo-binstall)

cargo binstall pdf_oxide_cli

MCP Server (for AI assistants)

cargo install pdf_oxide_mcp

Pre-built Binaries
Download archives for Linux, macOS, and Windows from the assets below. Each archive includes both pdf-oxide (CLI) and pdf-oxide-mcp (MCP server).

Platform Support

Platform Architecture Archive
Linux x86_64 (glibc) pdf_oxide-linux-x86_64-*.tar.gz
Linux x86_64 (musl) pdf_oxide-linux-x86_64-musl-*.tar.gz
Linux ARM64 pdf_oxide-linux-aarch64-*.tar.gz
macOS x86_64 (Intel) pdf_oxide-macos-x86_64-*.tar.gz
macOS ARM64 (Apple Silicon) pdf_oxide-macos-aarch64-*.tar.gz
Windows x86_64 pdf_oxide-windows-x86_64-*.zip

Changelog

See CHANGELOG.md for full details.

Don't miss a new pdf_oxide release

NewReleases is sending notifications on new releases.