Image to Text OCR
Pricing
from $1.75 / 1,000 images
Image to Text OCR
Read the text in images from their web addresses with the Tesseract OCR engine. For each image you get the text, a confidence score, line and word counts and, if you want, every word with its position. 35 languages. Receipts, screenshots, scans and labels.
Pricing
from $1.75 / 1,000 images
Rating
0.0
(0)
Developer
Sanira Botheju
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
What does Image to Text OCR do?
Image to Text OCR reads the text in pictures. Give it the web addresses of your images and you get, for each one, the text, a confidence score, the number of lines and words and, if you ask for it, every word with its position in the image. Results are ready to export to Excel, CSV or JSON, or to send on to another app.
It uses Tesseract, a well-known open-source OCR engine, and runs it inside the tool, so nothing is sent to a third-party OCR service.
- Reads PNG, JPEG, GIF, BMP, TIFF, WebP and PBM/PGM/PPM images
- 35 languages, and more than one at a time for mixed text (for example English and German)
- Four page layouts: automatic, one block of text, one line, or scattered text
- Turns phone photos upright using the orientation stored in the JPEG file
- Many images per run, read in parallel when you give the run more memory
- Every image gets a row, and a problem (broken link, unsupported file, too large) is reported in that row instead of stopping the run
What data do you get?
| Field | Example |
|---|---|
| Image address | https://www.example.com/receipt.jpg |
| Text | CORNER MARKET LTD\nMilk 1L 1.20\nTOTAL 14.55 |
| Confidence | 95.1 (average over the words, 0 to 100) |
| Lines and words | 8 lines, 58 words |
| Languages | ["eng"] |
| Image size | 1486 x 668 pixels, format png |
| Words (optional) | {"text": "TOTAL", "confidence": 96.8, "bbox": {"x0": 36, "y0": 92, "x1": 96, "y1": 116}} |
| Error | null, or a code such as HTTP_ERROR with a message |
How to extract text from images
- Under Image addresses, paste your list with Bulk edit, add addresses one by one, or link a text file (a Google Sheet published as CSV works too).
- Pick the Languages of the text. English is the default.
- Press Start.
- Open the Text from images table, sort it by confidence or place in list, and export it.
How much does it cost to extract text from images?
You pay for results, not for time: $2.50 per 1,000 images. Apify subscribers on the Silver plan pay $2.10 and on the Gold plan $1.75 per 1,000 images. Each run also has a start fee of $0.00005 per GB of memory; a run with the default 2 GB pays $0.0001.
| Images read | Cost |
|---|---|
| 100 | $0.25 |
| 1,000 | $2.50 |
| 10,000 | $25.00 |
| 100,000 | $250.00 |
Every address in your list gets one row, and each row is one result, including a row that reports an error (a broken link, a file that is not an image). Duplicate addresses are read and paid once. Apify's free plan includes $5 of credit each month, which covers about 2,000 images. Set a maximum cost for the run in Apify Console, or Maximum number of images in the input, and the tool stops there and keeps what it has read.
Input
The only required field is Image addresses. The other options:
- Languages: pick up to 5. English is built in; any other language is downloaded at the start of the run, which takes a few seconds each. Pick only the languages that really occur in your images: in a test with five languages at once the reading took about 30% longer and a few results changed.
- Page layout: Automatic for pages, columns and screenshots; One block of text for a paragraph or a label; One line of text for a cropped line; Scattered text for photos, packaging and diagrams where text is spread around.
- Include words with confidence and position: adds a
wordslist to each result. It makes the results larger. - Maximum number of images: the first images of your list up to this number are read, the rest are skipped and not charged.
- Maximum image file size (default 20 MB, up to 50 MB), Time limit per download and User-Agent under More options. Pictures with more than 50 megapixels are never read, whatever their file size.
Output example
{"url": "https://tesseract.projectnaptha.com/img/eng_bw.png","position": 1,"finalUrl": null,"httpStatus": 200,"text": "Mild Splendour of the various-vested Night!\nMother of wildly-working visions! hail!\nI watch thy gliding, while with watery light\nThy weak eye glimmers through a fleecy veil;\nAnd when thou lovest thy pale orb to shroud\nBehind the gather’d blackness lost on high;\nAnd when thou dartest from the wind-rent cloud\nThy placid lightning o’er the awaken’d sky.","meanConfidence": 95.1,"lineCount": 8,"wordCount": 58,"languages": ["eng"],"imageFormat": "png","imageWidth": 1486,"imageHeight": 668,"imageBytes": 26854,"ocrTimeMs": 276,"processedAt": "2026-10-16T07:28:35.501Z","error": null}
An image without any text is a normal result: text is empty, wordCount is 0 and meanConfidence is null. When an image cannot be read, text is null and error holds a code and a message:
HTTP_ERROR: the server answered with an error such as 404 or 403.UNSUPPORTED_FORMAT: the file is not a format the tool reads, for example a PDF, an SVG, an AVIF or HEIC photo, an animated WebP, or a web page.IMAGE_UNREADABLE: the file is empty, cut off or damaged.FILE_TOO_LARGE: the file is larger than Maximum image file size.IMAGE_TOO_LARGE: the picture has more than 50 megapixels.OCR_TIMEOUT: reading the picture took longer than two minutes.DNS_NOT_FOUND,TIMEOUT,CONNECTION_REFUSED,TLS_CERTIFICATE_EXPIREDand other network errors: the image could not be downloaded.BLOCKED_ADDRESS: the address points to a private or local network, which the tool never fetches.INVALID_INPUT: the entry is not a web address.
What can you use it for?
- Receipts and invoices: turn photos or scans into text you can search, or feed into bookkeeping and expense tools
- Screenshots: pull error messages, chat text, tables and UI labels out of screenshots
- Scanned pages: make scans of letters, forms and printed documents searchable
- Product labels and packaging: read ingredient lists, weights, dates and batch codes from product photos
- Archives and catalogues: add text to large image collections so they can be searched
- Highlighting and checks: use the word boxes to mark text in an image or to flag words the reader is unsure about
Use it from the API
curl -X POST "https://api.apify.com/v2/acts/cyber1nj3ct0r~image-to-text-ocr/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"imageUrls": [{"url": "https://www.example.com/receipt.jpg"}], "languages": ["eng"], "includeWords": false}'
The same works from Python, JavaScript, Make, Zapier and n8n through Apify's integrations.
FAQ
How accurate is it?
It depends on the image, and the tool makes no promise of a percentage. Tesseract works best on clean, upright, printed text with good contrast and letters at least about 20 pixels high. It reads poorly or not at all on handwriting, very small or blurry text, low-resolution images, text on busy backgrounds, decorative fonts and strongly curved or skewed text. The confidence is the engine's own estimate for each word: use it to find results that deserve a second look, not as proof that a text is right.
Does it read handwriting?
No. Tesseract is built for printed text. Handwriting usually comes out wrong.
What if my image is rotated?
The tool does not detect the direction of the text. Photos from phones and cameras are turned upright using the orientation stored in the JPEG file, but a scan saved sideways or upside down is read as it is, and the result is usually garbage with a low confidence. Rotate such images before you send them.
Which images does it read?
PNG, JPEG, GIF (the first frame), BMP, TIFF (uncompressed, LZW, PackBits or CCITT; the first page), WebP (not animated) and PBM/PGM/PPM. It does not read PDF, SVG, AVIF, HEIC, JPEG 2000, ICO or TIFF files compressed with ZIP or JPEG; those results carry an UNSUPPORTED_FORMAT error. For PDFs, convert the pages to PNG or JPEG first.
How long does it take?
Small images such as labels, receipts and screenshots take from a fraction of a second to a couple of seconds each; a full page of dense text can take several seconds. A run reads about one image at a time for every 4 GB of memory, so for long lists give the run more memory (up to 16 GB) to read several images at once. The cost per image stays the same.
How are the languages loaded?
English is part of the tool. For any other language the tool downloads the language file from the Tesseract project's public files (the "tessdata_fast" set on GitHub, through the jsDelivr network) when the run starts. That takes a few seconds per language. If a language file cannot be downloaded, the run stops with a message before reading anything, and nothing is charged.
Does it read robots.txt?
It downloads only the image addresses you give it, once each, and follows no links, so it does not crawl and does not read robots.txt.
A site blocks the tool. What can I do?
The tool identifies itself honestly in its User-Agent, downloads straight from Apify's servers and does not use proxies or try to get round blocks. If the images are on your own site, allow the User-Agent in your firewall, or set your own under More options. Otherwise download the images yourself and host them where the tool can reach them.
Can I use it to solve CAPTCHAs?
No. The tool is not built or tuned for CAPTCHAs, and using it to get round a site's protections is not allowed.
Is it allowed to read images?
The tool makes one request per address, like a visitor opening the image. It does not crawl or scrape: it fetches only the image files you list. You are responsible for having the right to download and process those images, and for what you do with the text, including any personal data in it. Do not use it to collect personal data, for example from ID cards, passports or photos of people, without a legal basis for doing so.
Something does not work
Open an issue on the Issues tab with an image address that shows the problem. Every report is read and answered.