To recognize text in a scanned PDF without uploading it: open the file below, choose a language and DPI, and press Recognize. Each page is rendered locally by pdf.js — a Letter page at 300 DPI becomes a 2550×3300-pixel image — and read by Tesseract, the open-source OCR engine, running as WebAssembly in your tab. You get per-page text plus one combined transcript to copy or download as .txt. Free, no account, no page limit, and the document itself never leaves your machine.

1 · Open a scanned PDF

Open a PDF to begin. The file never leaves your browser.

2 · Settings

Advertisement

Render DPI — What Your Page Becomes

DPIScale vs. PDF ptLetter (612×792 pt)A4 (595×841.89 pt)Best for
721.0×612 × 792 px595 × 842 pxScreen reading only — too low for OCR
1502.083×1275 × 1650 px1240 × 1754 pxHeadlines, forms, large clean type
3004.167×2550 × 3300 px2480 × 3508 pxStandard for scans and small print

Pixels are the raw material of OCR — the engine can't read characters smaller than its segmentation can see. A 300-DPI Letter page is 8.4 million pixels; held as RGBA that's a 33.7 MB buffer your browser processes per page, which is why OCR is heavier than viewing and why DPI is the speed/accuracy dial.

What Loads When (and What Never Loads Your File)

ComponentSizeWhen
pdf.js renderer~0.3 MBWhen you open a PDF
tesseract.js~0.06 MBOn first Recognize
Tesseract WebAssembly core~4.5 MBOn first Recognize (cached after)
English model, standard~10.4 MBFirst page (cached after)
English model, fast~1.9 MBFirst page if you pick Fast (cached after)
Your documentNever uploaded — processed in the tab only

All engine code comes from a public CDN; all document data stays local. Both the WASM core and the language model are cached by the browser, so page two and your next visit skip the big downloads.

How Browser OCR Works

OCR — optical character recognition — turns pictures of text into actual text. A scanned PDF is exactly that: photographs of pages wrapped in a PDF container, with no text layer to select or search. The pipeline here has two stages. pdf.js rasterizes each page at your chosen DPI, producing the pixels an OCR engine needs. Tesseract, the engine originally developed at HP and maintained as open source, then segments those pixels into lines, words, and characters, and matches each glyph against its trained language model.

The DPI trade-off

DPI is the accuracy dial. At 300 DPI a Letter page renders at 2550×3300 pixels and characters are large enough for reliable segmentation; at 150 DPI the same page is 1275×1650 and only 25% as many pixels get processed, which is fine for big type and risky for eight-point footnotes. The math is linear in area: halving DPI quarters the pixels, so 150 DPI runs about four times lighter than 300.

How to use it

Open the scan, leave the language on English unless the document says otherwise, keep 300 DPI for anything with small print, and press Recognize. Click any page chip to toggle it off if you only need part of a long file. Results appear page by page as they finish; the combined transcript updates underneath. Copy it, or download it as a .txt next to the original.

A worked example

A 10-page scanned contract at Letter size, 300 DPI, English, standard model. Each page renders to 2550×3300 pixels — 8,415,000 pixels, 33,660,000 bytes as an RGBA buffer. Recognized in sequence, the ten pages produce one transcript; with typical scan quality expect to proofread numbers, names, and any stamped or handwritten marks, because those are where every OCR engine — not just this one — slips. Total engine download on a cold cache: about 15 MB (0.3 MB pdf.js + 0.06 MB tesseract.js + 4.5 MB WASM + 10.4 MB English model), all cached before page two starts.

If your goal is a searchable PDF rather than a transcript, pair this with PDF to JPG for images or Word to PDF when you'd rather fix the text in a document and re-export it.

Frequently Asked Questions

How do I OCR a PDF for free?

Open the scanned PDF in a browser OCR tool, pick a language and DPI, and let it run: each page is rendered to an image and read by the OCR engine, and you copy or download the text. This one uses pdf.js plus Tesseract entirely in your browser — no page limit, no account, no upload.

Is my document uploaded anywhere?

No. The PDF is read by your browser, rendered by pdf.js locally, and recognized by Tesseract running as WebAssembly on your machine. The only downloads are the engine itself from a CDN — your document's pixels and text never leave the tab.

What DPI should I use for OCR?

300 DPI is the working standard for scans: a Letter page becomes 2550×3300 pixels, which is enough resolution for Tesseract to segment characters reliably. 150 DPI (1275×1650 on Letter) runs about a quarter of the pixels and is usually fine for large, clean type like headlines or forms. Small print, faxes, and anything faint deserves 300.

Why did the OCR make mistakes on my scan?

OCR accuracy depends mostly on input quality: skew, blur, low contrast, and photocopy noise do far more damage than engine choice. Re-scan straight at 300 DPI with decent contrast, or raise DPI here to 300 if it was lower. Handwriting and heavily styled logos remain hard for all OCR engines, this one included.

Does OCR work on a PDF that already has selectable text?

Technically yes, but it's the wrong tool: if you can already select text, copy it directly — that's the original digital text with perfect accuracy. OCR is for page images (scans, photos, exports as images) where no text layer exists. Some extractors detect this and just take the embedded text instead.

How long does OCR take?

Roughly a few seconds per page on a typical laptop at 300 DPI, and it varies with page complexity, DPI, and your CPU — the engine runs locally, so there is no queue and no server speeding things up. The first run also downloads the engine (about 4.5 MB of WebAssembly) plus the language file (about 10.4 MB for standard English, 1.9 MB for the fast variant), both cached by the browser for later pages and later visits.

Advertisement