OCR Online - Extract Text From Images Locally
Extract text from images with OCR. Supports Norwegian and English, and recognition runs locally in your browser.
Drop an image here or click to browse
PNG, JPG, WebP …
About the OCR tool
Text recognition runs with Tesseract.js directly in your browser. Your image is never sent to a server. On first use, the language model is downloaded (~3 MB per language) from a public CDN; after that, all recognition happens locally.
For best results: use sharp images with good contrast and clear, upright text.
About this tool
The OCR tool extracts text from images using Tesseract.js, a JavaScript port of Google’s open Tesseract engine. Everything runs in your browser, no images are uploaded to any server. The first time you use a language a model (~3 MB) is fetched from CDN and cached in the browser, then the tool works offline too. Norwegian (bokmål) and English are supported, plus a combined "Norwegian + English" for mixed-language documents. Works well on printed text, screenshots, scanned documents and photos with good contrast.
How to use it
- Choose language (Norwegian, English, or both for mixed content).
- Drop an image (PNG, JPG, WebP) on the drop zone or click to pick.
- Wait while the language model downloads (first time only, ~3 MB per language).
- Copy the extracted text from the text box when processing is done.
Examples
PNG screenshot of a 300-word article in English.Plain text with roughly 297 of 300 words recognised correctly. Paragraphs, spacing and line breaks are reasonably well preserved.JPG at 200 dpi of a printout, Norwegian language selected.Text with reasonable accuracy. Norwegian æ/ø/å are handled when Norwegian is selected. Table layouts may come out distorted.Common use cases
- Extract quotes from book or magazine photographs.
- Convert scanned paper documents into searchable text.
- Copy serial numbers or account numbers from invoices.
- Turn video-meeting screenshots into searchable chat history.
- Avoid uploading to insecure free online OCR services.
Frequently asked questions
- Does it work on handwriting?
- No, not reliably. Tesseract is trained on printed text and often guesses wrong on handwriting. For handwriting you need specialised models (e.g. Google Cloud Vision, Azure Read API), but those require uploading and aren’t local.
- Why does the first run take so long?
- The first run must download the core library (~2 MB WebAssembly) and language model (~3 MB per language). After that everything is cached in the browser, so the next image with the same language starts in under a second. On slow connections the first run can take 10-30 seconds.
- Can I get tables and layout preserved?
- Partly. Tesseract tries to preserve line breaks and paragraphs, but complex layouts like tables, columns and footnotes often collapse into one continuous text stream. For structured data, try Tabula (PDF) or commercial services with layout analysis.
- What should I do if accuracy is poor?
- Check the source image: make sure it’s high resolution (at least 300 dpi when scanning, 1200 px wide for photos), well lit, without shadows and at a straight angle. Convert to black-and-white with strong contrast before OCR. Remove background noise and make sure text fills most of the image.
Technical background
Tesseract.js is a JavaScript port of Tesseract 4/5, which uses LSTM neural networks for text-line recognition. The engine is compiled to WebAssembly for browser execution. Process: image blob is read to `ImageBitmap`, `Tesseract.recognize(image, lang, { logger })` starts a Web Worker that loads `tesseract-core.wasm` from CDN and the relevant `nor.traineddata` / `eng.traineddata` files (the `nor+eng` combo loads both). The image is preprocessed (grayscale, adaptive threshold), page segmentation splits lines, each line runs through the LSTM model for character-by-character prediction. Output is a `{data: {text, confidence, lines, words}}` structure; `text` goes to the textarea and confidence shows as a progress percentage.