Text the rendered page omits

pdf.vision-divergence

A run the structural analysis already suspected, confirmed by rendering the page and finding the text is not on it — the one PDF rule that removes anything.

How the text is hidden

The page is rendered twice — once whole, once from a copy in which every run's content-stream span has been blanked by the same surgical cleaner used for output — and the two rasters are diffed into a mask of exactly the pixels the text layer put down. Each run is then judged against that mask.

Why a model still reads it

The run is in the content stream and extracts normally regardless of whether any ink reached the page. The render is the only thing that can tell the two apart.

What we do about it

pageAbsence classifies each content-bearing run against the ink mask: below limits.minDrawnRatio (scaled down for runs that are mostly whitespace, so a space-padded table of contents is not accused) it is absent, and so is a run with a contiguous uninked stretch exceeding limits.partialCoverMinShare of its width and limits.partialCoverMinEm of its own height. absentFromRender may also come from the OCR path, where isAbsentFromRender requires the page's mean OCR confidence to clear limits.minAbsenceConfidence before it will testify that anything is missing. The rule pdf-vision-divergence fires when the run is absentFromRender AND was already visible == false — geometry said concealed and the page confirmed it — at high, action strip, and appears in cleanFile.transforms.

How often it fires

11% of 400 real UK public-sector contract PDFs (Contracts Finder, 2019–2023) — Word, Adobe, Nitro, office copiers, measured 2026-08-23.

This is an alert-volume number and nothing else. It says how often the alarm sounds on documents as found — not how often it is right, and not whether what it found was harmless. Documents as found may themselves carry concealment. Read it against the population named above rather than as a property of documents in general.

next

Check your own file

Three commands: a key, credit, a verdict.

Start with the API