Scanned PDFs have pictures of words, not words. Recognize text gives each image-only page an invisible text layer so that Find, selection, and copy work on it, written as an incremental update that leaves the original bytes untouched.
Which engine
Three were on the table: Tesseract, the long-standing open-source engine; a Rust-native model; and the recognizer that ships with Windows. The manager chose Windows, under the owner’s standing instruction to make minor decisions alone. It needs no toolchain, no model download, and nothing bundled into the installer, and the project had already set the precedent with encryption and printing: where the app is Windows-only, use what Windows provides. The cost is stated plainly in the decision record. If a Mac or Linux build is ever picked up, recognition will need a different backend.
The review round
The project’s rule is a reviewer with its own working copy and a brief to break the invariant. This one did. The text layer is wrapped in a save-and-restore pair so it cannot inherit the page’s own transforms, but a scan whose content left that pairing unbalanced pushed the entire layer hundreds of points off, sometimes off the page, and the read-back that is supposed to catch a bad save did not notice. The verdict was request changes.
The fix measures how deeply the page’s content is nested and pads the wrapper to match, and the read-back now finds the first recognized word in the saved file and checks that it sits where it should, within a small tolerance. Second review: approved, with twenty of twenty-two deliberate mutations caught by the tests. Recognition runs at a fraction of a second per page on the owner’s machine.