Extract text from any image — even photos and scans
OCR (Optical Character Recognition) is one of those technologies that used to require expensive desktop software (FineReader, OmniPage) or paid online services that uploaded your documents to their servers. Now, thanks to Tesseract.js — a JavaScript port of Google's open-source Tesseract OCR engine — it runs entirely in your browser. Drop an image, get text back, no upload required.
What kinds of images work
- Screenshots — code, error messages, tweets, blog posts. Tesseract handles screen-rendered text very accurately because it's pixel-perfect.
- Photos of documents — receipts, invoices, business cards, signs. Best results when the camera is parallel to the page and lighting is even.
- Scanned pages — flatbed scans at 300 DPI or above give the best results.
- Handwritten text — works for printed handwriting in some cases, but cursive and complex handwriting will fail. Tesseract is optimized for printed text.
Languages supported
Tesseract supports 100+ languages with separate trained data files. We've enabled the most-requested ones in the dropdown above (English, Hindi, Tamil, Telugu, Arabic, Chinese, French, German, Spanish, Russian, Japanese). The first time you pick a language, your browser downloads the data file (~5–15 MB) and caches it. Switching languages later is instant.
Tips for better accuracy
- Use the highest-resolution source you have — OCR accuracy drops sharply below 150 DPI.
- Crop the image to just the text region before extracting. Tesseract handles small ROIs faster and more accurately than full-page images with mixed content.
- For tilted photos, straighten the image first (use Toolvana's rotate tool).
- For very low-contrast images, increase contrast in our image filter tool first.
Privacy comparison
Most "free online OCR" sites upload your image to their server, run cloud-OCR (often calling Google Vision or AWS Textract under the hood), and return the text. Your image sits on their disk indefinitely, often used to train their models. Toolvana runs Tesseract.js in your browser — your image never goes anywhere. Verify in DevTools.
FAQ
Is OCR accurate?
For printed text in good-quality images: 95–99% character accuracy. For phone photos of receipts: typically 85–95%. For handwriting: 30–80% depending on style.
Why is it slow on my phone?
The first run downloads ~5–15 MB of language data. After that, recognition typically takes 2–10 seconds depending on image size and phone CPU.
Can it handle multiple languages in one image?
Tesseract.js can be loaded with multiple language packs simultaneously. We use a single language at a time here for performance; pick the dominant language in your image.
Does it preserve formatting?
Basic layout (line breaks, paragraphs) is preserved. Tables and complex layouts are flattened into linear text.
What about PDFs?
Use our PDF to text tool — it extracts the text layer directly and falls back to OCR for scanned PDFs automatically.