Tools
Merge PDF Split PDF Compress PDF All PDF Tools →
Solutions
For Business For Education For Developers
Company
About Blog Press Contact
Product
Pricing Features FAQ Security
HomeToolsOCR PDF

OCR PDF

Turn a scanned PDF into a selectable, searchable document. 100% in your browser — your file never leaves your device.

Select a scanned PDF

or drop a PDF here — processed locally with Tesseract.js

100% in-browser No upload No signup

How to OCR a PDF

Three steps. Nothing uploaded.

1

Pick a scanned PDF

Open or drop your PDF. It stays in your browser.

2

Pick language + output

Select the language of the document and whether you want a searchable PDF or just the text.

3

Run & download

Tesseract.js (WebAssembly) recognises each page in your tab — then you download the result.

What is OCR — and what changes after you run it?

Optical Character Recognition (OCR) turns a picture of text into actual text characters a computer can copy, search, and index. A "scanned" PDF is really just a stack of page images glued into a PDF wrapper; the words you see are pixels, not letters. After OCR, the document either has an invisible text layer placed on top of those pixels (so it looks identical but Ctrl+F works), or you've extracted the text into a plain .txt file you can paste elsewhere. Both modes are offered above.

How OCR works on this page

We use Tesseract.js — the WebAssembly build of Google's open-source Tesseract engine — running inside your browser tab. When you click Run OCR:

  1. Each page of your PDF is rasterised to a canvas at 300 DPI using PDF.js.
  2. The canvas pixels are passed to Tesseract.js, which returns recognised text plus per-line bounding boxes.
  3. For Searchable PDF, we copy your original pages into a fresh PDF and overlay the recognised text with opacity 0 — invisible to the eye but selectable and searchable.
  4. For Text only, we concatenate the text from every page into a single .txt file.

Nothing in this pipeline calls a server: PDF.js, Tesseract.js, and pdf-lib all run client-side. The only network request related to OCR is the one-time download of the trained language model (about 5–15 MB per language), which your browser then caches for next time.

Honest expectations

  • Clean printed text at 300 DPI: usually 95–98% character accuracy. Good enough to search and to copy/paste with minor proofreading.
  • Low DPI (under 200) or photographed pages: accuracy drops sharply — Tesseract needs sharp letter edges. Re-scan at higher DPI if you can.
  • Multi-column layouts and tables: text comes back row-by-row across columns. We do not re-flow it into logical reading order. For tables consider PDF to Excel instead.
  • Handwriting: not reliably supported. Tesseract is trained on printed type; handwritten characters mostly come back as garbled.
  • Heavy mixed scripts: if a page is half Arabic and half Latin, pick whichever is dominant. Multi-script OCR is possible but slower and less accurate.

Privacy & security

OCR is a category where in-browser processing is uniquely valuable. Scanned documents are often the most sensitive things people own — passport copies, tax returns, contracts, medical records, lease agreements — and sending them to a third-party server creates an audit trail you cannot delete. Because every byte of the pipeline runs locally, there is no upload to log, no temp file to subpoena, and no retention window to trust. The OCR engine itself is open-source and inspectable.

Frequently asked questions

On a clean 300 DPI scan of a printed document in a supported language, expect roughly 95–98% character accuracy. Lower-resolution scans (under 200 DPI), faded photocopies, skewed pages, and small fonts drop accuracy noticeably. Handwriting is not reliably recognised by Tesseract — for handwritten notes you usually need a different (cloud-only) engine.

No. The recognition engine (Tesseract.js, compiled to WebAssembly) runs entirely inside your browser tab. The PDF you pick is read into memory, each page is rasterised to a canvas, and the canvas pixels are passed straight to Tesseract — no network upload of your document, no server-side step. You can confirm this in your browser's Network tab: only the language model is fetched (once, then cached).

We pre-list the 12 languages used by imisspdf.com itself: English, Spanish, French, German, Portuguese, Italian, Indonesian, Japanese, Korean, Chinese (Simplified), Arabic, and Hindi. Tesseract supports about 100 more — paste any ISO 639-3 code (like "vie" or "tha") into the language box and the matching model will be fetched on demand.

The first time you OCR in a given language, Tesseract downloads its trained model for that language (usually 5–15 MB) and the WebAssembly engine (~30 MB). After that they are cached in your browser, so subsequent runs start within a second or two. Closing the tab does not delete the cache.

Pick Searchable PDF if you want to keep the original document's appearance and just make its text selectable and Ctrl+F-searchable (the OCR text is placed invisibly on top). Pick Text only if you just need the words — for example to paste into a note app or feed into another tool.

 English
Get unlimited PDF tools + AI features
Start free trial →