$ ocr --extract --por
Text and filesImage OCR
Extract text from photos, scans and screenshots — in Portuguese, with the model downloaded only on first use. No upload: the OCR runs inside the browser.
- no upload
- PT-BR
- free
When OCR works — and when it does not
OCR (optical character recognition) is the path when you have an image and need the text from it in editable form: a photo of a book page, a scanned contract, a screenshot of a document, an image of a label with text. OCR copies the visible text and returns it as plain text — to edit, search, translate, attach.
It is not magic, however. It works on sharp, printed, high-contrast text. On handwriting, blurred photos, low resolution, noisy backgrounds or decorative fonts, accuracy drops from 90% to 60% or less. The closer to crisp black-on-white, the better the result — a rule that tesseract (the engine we use) has followed since always.
Why "no upload" changes everything
Practically every online OCR service — CamScanner, Adobe Scan, FineScanner — uploads the image to a server, processes and returns. That is the only way to run a heavy OCR model on their side. Here we use tesseract.js, which runs the same OCR engine inside your browser, in a web worker. The trained model (~10 MB) is downloaded from a public CDN the first time, then cached in the IndexedDB; on subsequent uses, no network call.
For a tax receipt with an address, a contract with third-party names, a photo of a medical report, a document under NDA — none of it leaves your machine.
Portuguese model: download once
The trained OCR model (the "traineddata" for tesseract) is around 10 MB. The first time you click "Extract text", the browser downloads it from a public CDN (jsdelivr/unpkg) and caches it in the IndexedDB. On subsequent uses — even across tool sessions — the model is already there; no network call. That matters on mobile connections and keeps the "free" honest: this is not "limited-free-on-server", because there is no server.
How to improve accuracy
- Higher resolution — a 300 DPI A4 photo produces OCR far better than the same photo at 72 DPI. If your source is a PDF, convert it via PDF to JPG at 300 DPI first.
- High contrast — black text on white. Photos of yellowed book pages still work, but if the page lives halfway into grey, tesseract stumbles.
- Aligned — OCR handles rotation up to ~10° without getting lost; more than that, rotate the image first.
- The right language — use "Portuguese + English" on mixed documents. The combined model uses more memory but cuts errors on foreign words.
Why the text is an estimate
Tesseract is today the most mature open-source OCR engine. Google Lens, Apple Live Text and the like use proprietary models trained on billions of images — better quality, but they run in the cloud or on a phone chip. Tesseract runs in any browser; the cost is slightly lower accuracy. The page is honest about the trade-off: average confidence is shown per image, and the extracted text is editable in a textarea, ready for you to review before using.
Before you laugh at the result, read it again: tesseract copied 90% of the text from a photo of a scanned PDF, with no server, on your own machine. In 1995, that was science fiction.
## faq
Frequently asked questions
Is the image uploaded to a server?
No. The image stays on your machine; the OCR runs in a web worker inside your browser. The trained model (~10 MB) is downloaded from a public CDN the first time and cached in the browser IndexedDB — on subsequent runs there is no download. No text leaves your machine.
How accurate is the OCR?
On sharp printed text with good contrast (a photo of a book page, a scanned contract, a screenshot of a document) we expect 85-92% accuracy — enough to locate and re-use the text. On handwriting, blurred photos, low resolution or noisy backgrounds, it drops a lot. No OCR is magic: review the extracted text before trusting it.
Which languages are supported?
Portuguese (default), English, or both together (Portuguese + English). The combined model is useful for mixed documents — bilingual manuals, academic articles or screenshots of interfaces in Portuguese with English buttons. The cost is a larger model (~20 MB instead of 10 MB).
Does it work on a PDF?
Not directly — only on an image (JPG, PNG, WebP). For OCR of a PDF, first convert the PDF into images with our PDF to JPG tool, then bring the images here. That path gives you DPI control and lets you pick which pages to process, and keeps the OCR isolated to one image at a time — better for memory.
Is there a size or quantity limit?
No limit imposed, because there is no server. The ceiling is your browser memory. For multiple images the OCR is run in series (one at a time), in a web worker — the UI stays responsive while it extracts. Each sharp A4-page image typically takes 5-10 seconds on desktop, 10-30 on a phone.
Can I edit the extracted text?
Yes — the text appears in a textarea below the image, ready to copy, download as .txt or edit before you use it. That is the recommended flow: OCR extracts, you review.
The OCR got a character wrong — how do I improve it?
On low-resolution documents, raising the DPI of the source (via PDF to JPG at 300 DPI, or a re-shoot with better lighting) usually fixes it. Tesseract handles decorative fonts and low-contrast text poorly — the closer to crisp black-on-white, the better the result.
## other tools