Make a PDF Searchable
Drop a scanned PDF. The original page images stay exactly where they are. Underneath them, we put down an invisible layer of OCR'd text. The file looks the same, but suddenly Cmd-F works, highlighting works, and copy-paste pulls out real words instead of nothing. Nothing leaves your computer.
Drop your scanned PDF here
or click to browse
Accepts: .pdf
What changes when you add a text layer
Suddenly the file behaves like a normal PDF. Cmd-F finds quotes. Spotlight and Windows Search return it when you forget what you named it. Screen readers can read it out loud instead of describing it as a 412-page image. Google can index it if it's on the web. And you can finally pull a paragraph out as a quote without retyping the whole thing.
What the tool does, step by step
pdf.js draws each page of your source PDF onto an off-screen canvas. Tesseract.js reads that canvas and returns the words it finds plus where on the page they sit. Then pdf-lib builds a fresh PDF the same dimensions as the original: it places the page as a JPEG, then writes every OCR'd word at its measured position with opacity zero. You can't see the text. The PDF reader can.
Every part of that happens in the tab you're in. The only network traffic is the one-time download of the libraries (about 14 MB) and they're cached afterwards.
What the file size will look like
Pages get re-encoded as JPEG at 80% quality. For a color archive scan, the output is often 20-40% smaller than the input. For a black-and-white scan that was already heavily compressed, the output might grow a few percent. The hidden text layer is around 1-3 KB per page, which is rounding error on the page images.
Which render scale to pick
- 1.5x is fast and works fine if your source was scanned at 300 DPI or better.
- 2x is the default, and the right answer for almost any document where you're not sure.
- 3x is slow but worth it for faint photocopies, low-resolution faxes, and anything where 2x produces visible errors.
Where this gets a bit fuzzy
- Highlighting follows Tesseract's word boxes. Selecting a whole sentence works cleanly. Trying to grab half a word is hit or miss.
- The hidden text uses Helvetica metrics for positioning. Letters that aren't in Helvetica (rare in English) get dropped silently.
- Two-column papers can confuse the reading order. If you select across columns, the order you get out may not match what you'd expect.
- Handwriting isn't supported. Tesseract is a printed-text model.
Other options
If you don't care about keeping the original page images and just want the words out, Scanned PDF to Text is faster and produces a small .txt. If your source is a single image (a photo, a screenshot), Image to Text takes images directly without the PDF middle step.
A few things people ask
What if my PDF already has selectable text?
Then you don't need this tool. Running it anyway would replace the existing (good) text with OCR text, which is almost always a downgrade.
What about password-protected PDFs?
You'd have to remove the password first. The browser needs to be able to open the PDF for pdf.js to render it.
Can I run this on my phone?
Yes, but it's slow: 20-40 seconds per page on most phones. For anything over about 20 pages, do it on a laptop.
Cmd-F finds one word but not the next one. Why?
OCR misread it. If your input is a marginal scan, bump the render scale to 3x and it usually clears up.