Scanned PDF → selectable text, with pdf.js and Tesseract in your browser
| DPI | Scale vs. PDF pt | Letter (612×792 pt) | A4 (595×841.89 pt) | Best for |
|---|---|---|---|---|
| 72 | 1.0× | 612 × 792 px | 595 × 842 px | Screen reading only — too low for OCR |
| 150 | 2.083× | 1275 × 1650 px | 1240 × 1754 px | Headlines, forms, large clean type |
| 300 | 4.167× | 2550 × 3300 px | 2480 × 3508 px | Standard 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.
| Component | Size | When |
|---|---|---|
| pdf.js renderer | ~0.3 MB | When you open a PDF |
| tesseract.js | ~0.06 MB | On first Recognize |
| Tesseract WebAssembly core | ~4.5 MB | On first Recognize (cached after) |
| English model, standard | ~10.4 MB | First page (cached after) |
| English model, fast | ~1.9 MB | First page if you pick Fast (cached after) |
| Your document | — | Never 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.
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.
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.
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 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.
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.
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.
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.
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.
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.
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.