Skip to content
epitometool

Image OCR

Image tools

Extract text from any image with tesseract.js — 14 languages, fully local.

Updated

PNG, JPG, WebP, BMP, GIF, TIFF — up to 50 MB. Image never leaves your device.

  • Vpaste image
  • Ccopy text

Quick start

How to extract text from an image

OCR an image to text using tesseract.js, entirely in your browser.

  1. Step 1
    Drop or pick an image

    Drag the image onto the drop zone, click to pick it, or paste from the clipboard. The image stays on your device.

  2. Step 2
    Pick a language

    Choose the dominant language of the text. The matching language pack (4–15 MB) is downloaded once and then cached.

  3. Step 3
    Extract and copy

    Hit Extract text. The recognised text appears in an editable textarea — copy it to the clipboard or download it as a .txt file.

In-depth guide

Image OCR in your browser — full guide

Optical Character Recognition (OCR) reads text out of an image so you can search, edit or paste it anywhere. This tool runs tesseract.js — a WebAssembly port of the Tesseract engine — entirely inside your browser. Your image never leaves the page; the only network traffic is downloading the language model file the first time you use a given language.

When to use image OCR

Common use cases:

  • Receipts and invoices — pull line items out of a photo.
  • Screenshots of text — when you've got an image but the original copy-able text is gone (a slide, a code snippet someone pasted as a picture).
  • Foreign-language signs and menus — extract the text, then paste it into a translator.
  • Scanned single pages — for multi-page PDFs use the dedicated PDF OCR tool.

If your image is a printed document scanned at 200 DPI or higher, expect 95 %+ accuracy on Latin scripts. Phone snaps of paperwork are more variable — see the troubleshooting section below.

Picking the right language pack

Tesseract uses a separate trained data file per language. Picking the wrong one can drop accuracy by 30 % or more — English digits will be recognised by every model, but a Cyrillic page run through the English model produces gibberish.

Tips:

  • Match the dominant script. For French / German / Spanish text use the matching pack — they tune for accented characters and language-specific n-grams.
  • For CJK content (Chinese, Japanese, Korean) pick the right script variant — Simplified vs Traditional Chinese are separate packs.
  • For multi-language pages there's no perfect option — pick the dominant language. Tesseract can run multiple languages at once, but quality suffers and it's not exposed in this UI.

Improving accuracy

Tesseract behaves much better with well-prepared images. Before running OCR:

  • Crop tightly to just the text region. Background clutter, watermarks and decorative borders hurt accuracy.
  • Increase resolution. Sub-150 DPI scans struggle. If you have a physical document, rescan at 300 DPI rather than upscaling a low-res image.
  • Deskew — straighten rotated photos so lines are horizontal.
  • Increase contrast. Faint pencil writing or grey-on-grey headings benefit from a quick contrast boost in any image editor before OCR.
  • Convert photos to grayscale. Coloured backgrounds confuse the binarisation step.

Known limits and honest caveats

What this tool is not good at:

  • Handwriting. Tesseract is trained on printed text. Handwritten notes come out as nonsense — use a cloud OCR service if you need this.
  • Table structure. You'll get the text inside the table cells, but not the row / column structure. Tables come out as flowing text.
  • Math, music, formulas. Specialised notations aren't reliably recognised.
  • Mixed scripts on the same page. Pick one language; the rest will be approximated by that language's character model.

For everything Tesseract is good at — printed Latin / Cyrillic / CJK text at decent resolution — accuracy is on par with the best free OCR available.

Frequently asked questions

Is my image uploaded anywhere?

No. The image stays on your device — tesseract.js runs the entire OCR pass inside your browser using WebAssembly. Open DevTools → Network while extracting and you'll see zero outbound requests for your file. The only network traffic on first use is downloading the language pack (a static .traineddata file), not your image.

Where do the language packs come from?

Each Tesseract language is a separate "traineddata" file (4–15 MB). The first time you use a language we fetch it from the default Tesseract CDN (cdn.jsdelivr.net) and your browser caches it — subsequent runs in that language are instant. You can verify in DevTools → Network: only the .traineddata file is downloaded, never your image.

Which languages are supported?

14 curated languages out of the box: English, Spanish, French, German, Portuguese, Italian, Dutch, Russian, Hindi, Arabic, Japanese, Korean, and both Simplified + Traditional Chinese. Tesseract supports 100+ but most aren't worth shipping in a dropdown — let us know if you need one we don't list.

Why is the first run slow?

The first time you use a language, your browser downloads the model file (English ≈ 4 MB, CJK languages ≈ 15 MB) and loads the tesseract.js WASM runtime (~2.5 MB). After that, the same language stays cached and subsequent extractions are 5–30× faster.

What image formats work?

PNG, JPG, WebP, BMP, GIF and TIFF — anything your browser can decode as an image. Files up to 50 MB are accepted. For best results use a sharp, high-contrast image at 200 DPI or higher.

Can I OCR a PDF here?

Not on this page — use the dedicated PDF OCR tool, which rasterises each PDF page first and then runs OCR. Same engine, same privacy guarantee.

Why is the extracted text imperfect?

Tesseract is the best free open-source OCR engine but it isn't a magic wand. Common reasons for poor results: low-resolution scan (< 150 DPI), heavy compression artefacts, skewed text, decorative or handwritten fonts, busy backgrounds. Preprocess the image (deskew, increase contrast, crop tightly to the text region) for a notable accuracy bump.

Does it handle handwriting?

Poorly. Tesseract is trained on printed text — its handwriting recognition is unreliable. For handwriting, dedicated cloud OCR (Google Document AI, Azure Read, Amazon Textract) does much better. We don't recommend depending on this tool for handwritten content.

Can I edit the extracted text before downloading?

Yes. The output text area is editable — fix any OCR mistakes, then copy or download. Your edits stay local just like the rest of the flow.

Keep exploring

More tools you'll like

Hand-picked utilities that pair well with the one you're on — all free, client-side, and zero-signup.