Initializing secure environment…
Initializing secure environment…
Put a real text layer on a scanned document. Tesseract.js runs in your browser, so the pages are recognised on your own machine and never uploaded — which is what makes it defensible on a medical record, a contract or a passport scan. Search, selection, copying and screen readers all start working, and the recognised text can be edited afterwards. The first run downloads the language model once and says so up front, because a silent 15 MB download is a worse experience than a stated one.
To OCR a PDF free, add the scanned file and Tesseract.js recognises each page in your browser, creating a searchable text layer. Nothing is uploaded. The language model is downloaded once on first use and cached for offline work afterwards.
300 DPI for printed text, 400 to 600 for small type or a document that will be re-printed, and 150 as an absolute floor. Higher than 600 gains nothing for recognition and multiplies the file size. If a scan is already below 200 DPI, re-scanning beats any amount of post-processing.
Recognition is thrown off by a few degrees of rotation and badly hurt by a shadow gradient, because the binarisation step decides what is ink. Rotate to square, crop the shadow, and re-run. Ten seconds of preparation gives a materially better result than any recogniser setting.
When the document already has a text layer and the problem is a broken one. A selectable but invisible font is a font problem, not a recognition problem. Check whether text can be selected first; if it can, extract or repair it rather than recognising pixels that were never the source of truth.
It works, and it is slow, because the model has to download and the page has to be rendered at a usable resolution within a memory budget. A phone OCR of a twenty-page document is a coffee break, not a moment. For more than a few pages, do it on a desktop — and the result is cached, so the phone route stays useful for one page at a time.
No. Tesseract.js runs in your browser as WebAssembly, and the pages are rendered and recognised on your device. The one thing downloaded is the language model, which is a few megabytes of generic character data and contains nothing about your document.
Because the recognition model is downloaded once — typically 5 to 15 MB depending on the language — and the UI tells you the size before it starts rather than surprising you halfway through. After that it is cached, and subsequent runs work offline.
Good on a clean, straight, well-lit scan at 300 DPI. It degrades with skew, shadows, handwriting, low contrast and low resolution. A 300 DPI scan of printed text is close to perfect; a phone photo taken at an angle in poor light will have errors you need to correct — which is why the text layer is editable afterwards.
No. The page image stays exactly as it was, and the recognised text is placed invisibly over it. The document looks identical, prints identically, and now has selectable text. That is also why the file grows — you are adding a text layer, not replacing the picture.
Yes, and you should. The recognised text is ordinary PDF text, so you can open the result in the editor and fix the words the recogniser got wrong. That combination — recognise, then correct — is the honest workflow for anything important.
Poorly. Printed text is what OCR is good at. Handwriting recognition is a different problem and a much less reliable one, and no honest tool will claim otherwise. For handwritten notes, Handwriting to PDF is the direction that works.
Dozens, including English and the major Indic scripts, and several at once if a document is mixed. Each additional language is another model to download, so the cost is in the download rather than the speed.
Yes. Free, no account, no watermark, and no upload. Open-source recognition running on your own machine, with the one-time model download stated in advance rather than buried.
More ai & smart tools — all free, no upload.