How to extract text from an image
- Pick the language of the text. For a document that mixes English with Korean, Japanese or Chinese, choose the combined option.
- Choose one or more images, drop them on the box, or paste a screenshot with Ctrl+V (⌘+V on a Mac). Scanned PDFs work too: each page is read as an image.
- Reading starts on its own. The first time, the page downloads the OCR engine and language data (about 3 to 5 MB, depending on the language) from eeeasytest.com; your browser keeps them for next time.
- Check each result and fix anything that's wrong right in the text box. The confidence score shows which results deserve a closer look.
- Press Copy or Download .txt for one image, or Copy all to get every image's text at once. Turn off Keep line breaks to join the lines of each paragraph.
How it works, and where your images go
When you add an image, your browser opens it and draws it onto a canvas on this page. Any clean-up you switch on (grayscale, contrast, upscaling, straightening, rotation) happens on that canvas. The result is then handed to Tesseract, an open-source OCR engine compiled to WebAssembly by the tesseract.js project, which runs in a background worker inside the same tab.
The engine, its worker script and the language data are files on eeeasytest.com itself, not on a third-party CDN. They're downloaded the first time you use the tool, and the language data is saved in your browser's storage (IndexedDB) so it isn't downloaded again. Your images and the recognised text are never sent anywhere: there's no upload step, no account and no processing on a server. Closing the tab clears the images and text.
Like the rest of EasyTest, this page loads Google Analytics and AdSense. They never receive your images or text. Analytics only records that a copy or a download happened. To remove the saved language data, clear this site's data in your browser settings.
How OCR works
OCR (optical character recognition) turns a picture of text into text you can edit. This tool uses Tesseract, which was developed at HP between 1984 and 1994 and released as open source by HP in 2005. Ray Smith's 2007 overview describes how the original engine finds text: it traces the outlines of connected ink, groups them into lines and words, and then recognises each word.
Since version 4, Tesseract also has a neural-network engine based on an LSTM (long short-term memory) model that's focused on recognising whole lines of text, and that's the engine used here. Instead of matching one character shape at a time, it reads a line as a sequence, which helps with uneven spacing and characters that touch. The language model you pick decides which characters it can output, which is why the language setting matters so much.
The models on this page are Tesseract's official "fast" integer models, which the project describes as a compromise between speed and accuracy. Each is 1 to 2 MB compressed, small enough to download quickly and run on a phone. The confidence score next to each result is Tesseract's own estimate averaged over the words. It's a useful hint about which results to check, not a measured accuracy.
Tips for better results
- Resolution: scan at 300 dpi if you can. Tesseract's documentation says it works best on images of at least 300 dpi. For small text in a photo, move closer. Upscale small images, on by default, doubles the size of screenshots and other images up to 2,500 pixels across, which helps with small print.
- Light: use even light with no shadow across the page, and avoid glare on glossy paper. Shadows and dark corners are a common cause of missing words.
- A flat page, straight on: hold the camera parallel to the page and keep it flat. Curved book pages and photos taken at an angle bend the lines. For a slightly tilted scan, turn on Straighten; for a sideways photo, use Rotate 90°.
- Crop: crop the image to the text you need before adding it. Photos, logos and table borders next to the text can confuse the layout step.
- Faint or coloured paper: try Black and white, or Boost for a washed-out photo.
- Check numbers: small marks such as decimal points and commas are easy to lose, so check amounts, dates and phone numbers.
What it can't do well
- Handwriting: Tesseract is built for printed text. Handwritten notes and signatures usually come out wrong.
- Stylised fonts and busy backgrounds: decorative lettering, text over photos and very low-resolution images give poor results.
- Tables and columns: the output is plain text, so tables lose their structure, and Tesseract's own documentation notes it has trouble with tables. Multi-column pages can be read in the wrong order.
- Vertical text: top-to-bottom Korean, Japanese or Chinese isn't supported.
- Long PDFs: up to 30 pages per PDF are read, one page at a time, which takes a while on a phone. A PDF that already has selectable text is better copied from a PDF viewer.
Korean, Japanese and Chinese text
For Korean, choose Korean + English for most documents. Korean text usually includes English words, numbers, email addresses or web addresses, and the Korean-only model turns Latin letters into nonsense. Choose Korean only when there's no English at all.
Word spacing is the most common mistake in Korean results: Tesseract sometimes puts a space inside a word or leaves one out between words. Check the spacing before you paste the text into a form. When you join lines, Korean lines are joined with a space, because Korean text usually wraps between words; if a line was broken in the middle of a word, delete the extra space.
Japanese and Chinese are written without spaces, so the tool removes the spaces Tesseract tends to put between characters and joins wrapped lines without one. All three languages must be written horizontally.
Frequently asked questions
- Are my images uploaded to a server?
- No. Images are opened and read inside your browser tab. The OCR engine and language data are downloaded from eeeasytest.com itself and run on your device, so there's no upload step and no server-side processing. The text you get isn't sent anywhere either.
- Which languages can it read?
- English, Korean, Japanese, and Simplified and Traditional Chinese. When a document mixes scripts, pick the combined option, such as Korean + English: a single-language model turns words in the other script into nonsense. Vertical text isn't supported.
- Can it read handwriting?
- Not reliably. Tesseract is built for printed text, so handwriting, signatures and decorative fonts usually come out wrong. Clear print works best: documents, receipts, screenshots and book pages.
- Why is some of the text wrong?
- The usual causes are the wrong language setting, small or blurry text, uneven light, a tilted page and busy backgrounds. Keep Upscale on for small text, try Black and white for faint or coloured paper, and Straighten for tilted scans. Always check names, numbers and decimal points before you use the text.
- Does it keep the layout of tables?
- No. The result is plain text with line breaks. Table cells come out as words separated by spaces, and columns can be read across the page. For a table, crop and read one column at a time.
- Does it work offline?
- Once the page is open and the engine and language data have downloaded, reading images doesn't need a connection. The language data stays in your browser's storage for next time. Clearing this site's data in your browser settings removes it.
Sources
- Smith, R. (2007). An Overview of the Tesseract OCR Engine. Proc. ICDAR 2007, pp. 629–633 (history at HP and the original architecture)
- Tesseract OCR on GitHub (the LSTM engine added in version 4, focused on line recognition)
- tesseract-ocr/tessdata_fast: the fast integer language models used on this page
- Tesseract documentation: Improving the quality of the output (300 dpi, skew, tables)
- tesseract.js 7.0.0: Tesseract compiled to WebAssembly for browsers (Apache License 2.0)
Your images never leave your device. The OCR engine and language data come from eeeasytest.com and run in your browser: there's no upload, no account and no processing on a server.