What OCR can and can’t get back from a scan
OCR does not make a scan editable. It reads the pixels and lays invisible, searchable text over the page — English only, low-confidence words dropped.
OCR does not turn a scanned PDF back into an editable document. It reads the picture, works out what the words probably say, and lays that text INVISIBLY over the page so you can select and search it — the scan itself is never touched. That distinction is the whole story: the page looks byte-for-byte identical afterwards, and the new thing in the file is a transparent layer of guesses sitting on top of the pixels.
A scan is a photograph of a document, which is why you cannot select its text in the first place. Your cursor finds nothing because there is nothing there — every mark on the page is a coloured square, not a character. OCR is the tool that reads those squares and writes characters back. What it can and cannot do follows entirely from how it does that.
The recognised text is drawn at zero opacity
Our OCR tool is mutate-in-place: it opens the page, keeps the scan image exactly as it found it, and draws each recognised word on top at opacity 0. Selection and search read text operators, not pixels, so invisible text behaves like real text in every viewer — you can highlight it, copy it, and Ctrl+F it — while the page still renders the original photograph. Nothing is re-encoded, so the picture cannot get worse in the process.

To read the pixels well, the page is first rendered to a bitmap at three times its natural size — about 216 DPI — because recognition accuracy falls off fast below roughly 150 DPI. A very large sheet, an A0 plan say, is capped at 2600 pixels wide so it does not try to allocate a hundred-megapixel canvas and fall over. The engine itself is self-hosted: the worker, the WASM core and the English model live on this site (~7MB, fetched once and cached), so OCR does not phone a third-party CDN. A tool whose promise is that your file stays on your device cannot make an exception for the one step that reads your document most closely.
It recognises English, in Latin script, and nothing else
The bundled model is English only. That is a deliberate limit, and it has a second half most tools do not mention: even if the engine recognised another script, the invisible layer is drawn with a WinAnsi-encoded standard font — the same font wall that turns unsupported characters into question marks. A recognised Cyrillic or CJK word would be sanitised to "?" on the way into the layer, so rather than bury a row of question marks under your selection cursor, the tool drops any word that comes out as pure "?" and counts it. Recognising a script and being able to write it back are two different problems, and this tool solves only the first for Latin text.
Low-confidence words are thrown away on purpose
The engine scores every word it reads, and any word scoring below 30 out of 100 is dropped rather than added. This is a choice, not a shortcut. Below that line the engine is mostly guessing at noise — coffee rings, JPEG speckle, the edge of a staple — and a buried layer of wrong words is worse than a gap, because it pollutes every future search of the document with matches that are not really there. The count of dropped words is reported back to you, so a page that came out mostly blank is a fact you are told, not a mystery you discover later.

The confidence number you see per page is the engine's own, surfaced rather than invented. Accuracy is the recogniser's and it tracks scan quality closely: a crisp 300 DPI office scan reads almost perfectly, a faxed third-generation photocopy reads badly, and no setting on any page changes that — the ceiling was set the moment the paper was scanned.
Pages that already have text are skipped
If a page already carries selectable text, OCR leaves it alone and says so. Running recognition over it anyway would lay a second, slightly-wrong copy of every word beneath the real one, so a single selection would pick up both and searches would double-count. This is why a "mixed" PDF — some real pages, some scanned inserts — comes back with only the scanned pages changed, and why a document that was already fully searchable is refused outright with the honest message that there is nothing to add.

What you get, and what you do not
Sideways scans still come out with upright text
A page that went through the scanner sideways is rendered sideways, and the recogniser reads it that way — yet the invisible text still ends up aligned with the words. Each word's angle is worked out from the shape of its bounding box, and the text is laid down at that same angle, so selection tracks the line even on a rotated page. The position maths runs the page's own render transform backwards, which folds the magnification and the page's stored rotation into one step, so a scan saved at 90 degrees needs no special handling: the words land where your eye sees them, not where the raw pixels happen to sit.
One practical consequence worth planning around: OCR makes the file a little larger, because it adds a text layer that was not there before — but only a little. Invisible text is just characters and positions, a few bytes each, so a scanned report gains kilobytes rather than the megabytes its images already cost. And it all runs on your device, which for a scanned document usually means a contract, a medical record or an ID — exactly the sort of thing you would not want to hand to a server to read. The recognition happens in the tab, the file is never uploaded, and that combination of searchable output with nothing leaving your machine is the whole reason to do OCR in a browser rather than emailing the scan to an online service.
OCR PDFMake a scanned PDF selectable and searchable with recognized text.- You get a searchable, selectable PDF that looks identical to the scan — the text layer is invisible and sits on top of the original image.
- You do not get an editable document. The words are anchored to where they sit on the picture; there is no reflowing paragraph, because the page is still a photograph underneath.
- English/Latin script only, and non-Latin words are dropped rather than mangled into "?".
- Words the engine is under 30% sure of are discarded and counted, so search stays clean.
- Already-searchable pages are skipped, never double-layered.
- If you want the scan as a flat picture instead of a searchable PDF, PDF to JPG exports the rendered pages — but that is the opposite direction, and the text goes back to being unreadable to a cursor.


