pdftoolskit.org
PDF (Portable Document Format) utilities, in the browser
Say hi →

OCR PDF — Text from Scans, in Your Browser

Tesseract.js · WASM · runs locally · no upload

Drop a scanned PDF and Tesseract runs entirely in your browser to recognise the text on each page. Choose plain text output, or a "searchable PDF" where the original page image stays visible but selectable text sits behind it. OCR is slow — expect tens of seconds per page on a laptop.

Drop your scanned PDF here

Multiple files allowed · OCR runs locally (Tesseract.js)

    no files
    Ready.

    No scan handy? The scanned sample is 3 image-only pages made for exactly this. More free sample files.

    When to use this tool

    Anything whose "text" is actually pixels: scanned receipts and invoices, a contract that only exists on paper, pages photographed with a phone, a fax, an old book, a form someone printed, signed and scanned back. Open one of these and Ctrl-F finds nothing, selecting text selects nothing, and copying gives you nothing — because as far as the file is concerned each page is one photograph.

    OCR reads the shapes and writes back real characters. In searchable PDF mode the page still looks exactly as it did — the scan is what you see — but an invisible text layer sits behind it, so search, selection and copying work, and so do accessibility tools and screen readers. In plain text mode you just get the words, which is what you want when the destination is a spreadsheet, a script or a search index rather than a document.

    Why this one runs on your machine

    Every fast OCR service uploads your document. That is the trade: their servers are far quicker than your laptop, and in exchange your scan — which is very often a bank statement, a passport page, a medical letter or a signed contract, because those are precisely the things that arrive as scans — is copied to a machine you do not control and sits in a processing queue.

    Here Tesseract is compiled to WebAssembly and runs in a Web Worker inside your own tab. The only thing fetched from the network is the language model, once. Your PDF never moves. The honest cost is speed: expect roughly ten to sixty seconds per page depending on your machine, the DPI and the language. Start it and go and do something else.

    Getting accuracy that is actually usable

    OCR quality is decided almost entirely before it runs, by the scan. A few things move the needle much more than any setting on this page:

    On a clean 300 DPI scan of ordinary printed text, expect the high nineties per cent. On a phone photo of a crumpled receipt under a desk lamp, expect to retype it. Handwriting is not supported at all by this engine — Tesseract recognises print, not cursive.

    How to OCR a scanned PDF

    1. Check that OCR is what you need. Try selecting text in the PDF first — if it selects, the file already has a text layer and PDF to text will extract it in a second instead of minutes.
    2. Straighten and crop the scan if it is visibly skewed or has scanner borders. Ten seconds here buys more accuracy than any option below.
    3. Drop the PDFs. Each page is rasterised and then recognised.
    4. Choose the output — plain text for data, searchable PDF to keep the document looking untouched, or both.
    5. Choose the language of the document, and the OCR DPI: 200 is a good balance, 300 is more accurate and slower.
    6. Click Run OCR & download and leave it. The status line reports the page it is on; a long document is a coffee break, not a click.
    7. Spot-check the result — search the searchable PDF for a word you can see on page 1. If it is not found, the scan quality is the problem, not the setting.

    FAQ

    Why so slow?

    OCR is genuinely expensive computationally, and we run it locally in WebAssembly so your files stay private. Server-side OCR services are faster but require uploading your PDF.

    How accurate is it?

    Good for clean 300 dpi scans (95%+). Poor for low-resolution, handwritten, or skewed input. For best results, OCR clean scans at 200–300 dpi.

    Are my files uploaded?

    Never — Tesseract.js runs in a Web Worker inside your tab. The model data is fetched once from a CDN; your PDF stays local. See the privacy policy.

    How do I make a scanned PDF searchable?

    Choose "Searchable PDF" as the output. The page image is kept exactly as it is and the recognised text is written behind it as an invisible layer, so the document looks identical but Ctrl-F, text selection and screen readers all work.

    Can it read handwriting?

    No. Tesseract recognises printed type; handwriting recognition is a different class of model and is not available here. Neat block capitals sometimes partly work, cursive never does.

    Which languages are supported?

    The dropdown covers Latin-script European languages, Cyrillic, Chinese (simplified and traditional), Japanese, Korean, Arabic, Hebrew, Persian, Hindi, Thai and Indonesian. The model for the language you pick is downloaded once, then cached by the browser.

    Is there a page limit or a file-size limit?

    No limit imposed by us — there is no server and no quota, unlike the free tiers of upload-based OCR services, which typically cap you at a handful of pages a day. The real limit is patience and your tab's memory.

    Can I OCR just a few pages of a long document?

    Yes, and you should. Pull them out first with Extract pages and OCR the small file — OCR-ing 400 pages to read three is a very long wait for nothing.