How to OCR a PDF and Make Scans Searchable

๐Ÿ” PDF workflowsโฑ๏ธ 7 min readFree tool included

You can search a forty-page digital PDF in a second because the words are in the file as text. A scanned PDF has none of that โ€” it's photographs of pages โ€” which is why Ctrl+F finds nothing and copy-paste gives you a screenshot. OCR (optical character recognition) is the bridge: it looks at the pixels and works out the words. Here's when you actually need it, what it can and can't read, and how to run the whole thing without handing a confidential scan to an upload-and-pray website.

Advertisement

How do you know a PDF needs OCR at all?

The one-second test: try to highlight a sentence. If the words light up as you drag, the file has a text layer โ€” copy away, search away, done; OCR would only re-type what's already there, with typos. If instead your cursor draws an empty blue rectangle, you're looking at an image of text, and that's the OCR case. Scans, photos of pages, faxes received as PDF, and anything exported "as image" all land in this bucket.

It's worth the test, because running OCR on a digital PDF is pure downside: slower than copying and strictly less accurate than the original text.

What does OCR actually do to the page?

The engine renders the page into high-resolution pixels, carves them into zones, lines, words, and characters, then matches each candidate glyph against a trained language model that also knows context โ€” English words, common layouts, how a "rn" differs from an "m". The output is plain text (plus, in fancier pipelines, coordinates for making searchable PDFs). Two open-source pieces do this well in a browser: pdf.js turns the PDF into images, and Tesseract โ€” originally built at HP, maintained as open source for decades โ€” reads them.

Why is 300 DPI the number everyone repeats?

Because resolution is the accuracy dial, and 300 DPI is where small print becomes reliably readable pixels. The arithmetic: PDF pages measure in points (72 per inch), so rendering multiplies by DPI รท 72. A US Letter page, 612 ร— 792 points, becomes:

DPILetter page becomesRelative pixelsGood for
72612 ร— 792 px1ร—Screen viewing โ€” too coarse for OCR
1501275 ร— 1650 px~4ร—Headlines, forms, large type
3002550 ร— 3300 px~17ร—Body text, contracts, receipts

Halving the DPI quarters the pixel count โ€” that's why 150 DPI runs roughly four times faster than 300, and also why its mistakes multiply on eight-point footnotes. If the source scan was captured at low resolution, re-rendering higher can't invent detail the scanner never recorded; fix it at the scanner.

What makes OCR make mistakes?

The practical review rule: proofread the things that matter and are hard โ€” numbers, names, dates, amounts. Engines rarely miss "the", often slip on "l/1" and "O/0".

What happens on the first run in a browser?

The engine arrives on demand. First press of the button fetches Tesseract's JavaScript plus its WebAssembly core (about 4.5 MB) and a language model (roughly 10 MB for standard English, about 2 MB for a fast variant) from a public CDN. Everything is cached, so subsequent pages and future visits start instantly. Your document does the opposite of traveling: it's read from disk into the tab, rendered by pdf.js, and processed by the WebAssembly engine locally. For confidential scans โ€” medical records, legal files, financial statements โ€” that's the difference between OCR and a data leak with extra steps.

Which free tool should you use?

Our OCR PDF tool runs the pipeline described above entirely in your browser: open the scan, choose language and DPI, toggle off pages you don't need, and copy or download the transcript. It's deliberately a text-out tool โ€” for images you want PDF to JPG, and if the file is digital-with-text you wanted page extraction, not OCR, all along.

OCR a scanned PDF right now

Render at 300 DPI, recognize with Tesseract, copy the text โ€” all local, all free.

OCR PDF โ†’

The bottom line

Highlight first: if text selects, you don't need OCR. If it doesn't, feed the scan as many clean pixels as you can โ€” 300 DPI when in doubt โ€” and proofread the numbers. Run it in a browser when the document is private, because a local engine reads your scan without anyone else ever seeing it.

Advertisement