Image to Text OCR: Extract Text from Images & Screenshots
Pricing
from $1.60 / 1,000 images
Image to Text OCR: Extract Text from Images & Screenshots
Extract text from images, photos, scans and screenshots (PNG, JPG, WebP, GIF, BMP, AVIF) with OCR in 100+ languages. Optional lines with positions and confidence. $0.002 per image; failed images are free.
Pricing
from $1.60 / 1,000 images
Rating
0.0
(0)
Developer
Richie Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Features
Share
Turn images into text with OCR: photos of documents, scans, receipts, screenshots, slides, signs and product labels. Paste image links and get the text of each one, its OCR confidence and, optionally, every line with its position. 100+ languages, PNG, JPEG, WebP, GIF, BMP and AVIF.
⭐ Is this Actor useful to you? A short review on the Reviews tab helps other users find it, and tells us what to build next.
- 🖼️ Any common image format: PNG, JPG/JPEG, WebP, GIF, BMP and AVIF, from any direct link.
- 🌍 100+ languages: English, Spanish, French, German, Portuguese, Chinese, Japanese, Arabic, Hindi and more, or mixes such as
eng+spa. - 📐 Lines with positions: each line's text, confidence and bounding box, for highlighting, redaction or layout analysis.
- 🔍 Two layouts: document mode for pages and receipts, scattered-text mode for screenshots, labels and signs.
- 🔎 Better results on small images: screenshots and phone crops are upscaled before OCR automatically.
- 🔒 Private: images are processed in memory and never stored; only the text is saved.
- 💵 $0.002 per image (2 USD per 1,000). Failed images cost nothing.
Who uses it
- AI and RAG developers who need the text inside images and screenshots for their LLM pipelines.
- Operations and finance teams digitizing receipts, invoices and scanned forms in bulk.
- Marketers and analysts reading text from social media images, ads, banners and memes.
- E-commerce teams pulling product label and packaging text from product photos.
- Developers who want an OCR API without installing or hosting Tesseract.
How to use it
- Paste one or more image URLs (direct links to the image files).
- Set OCR languages if the text is not in English (for example
spa,deuoreng+fra). - Pick Scattered text for screenshots, signs or labels; keep Document for pages and receipts.
- Click Start. Download the results as JSON, CSV or Excel, or read them through the API.
Input fields
| Field | What it does | Default |
|---|---|---|
| Image URLs | Direct links to PNG, JPEG, WebP, GIF, BMP or AVIF files | — |
| OCR languages | Tesseract codes joined with +, e.g. eng, spa, eng+deu, chi_sim | eng |
| Text layout | Document (paragraphs, columns) or Scattered text (screenshots, signs) | Document |
| Include lines with positions | Adds each line with confidence and bounding box | off |
| Minimum confidence | Skip (and don't pay for) images read with lower confidence | 0 |
| Max file size (MB) | Larger files are skipped | 20 |
Input example
{"imageUrls": ["https://tesseract.projectnaptha.com/img/eng_bw.png"],"languages": "eng","layout": "auto","includeLines": true}
Output
One result per image:
{"url": "https://tesseract.projectnaptha.com/img/eng_bw.png","fileName": "eng_bw.png","contentType": "image/png","width": 1486,"height": 668,"languages": "eng","text": "Mild Splendour of the various-vested Night!\nMother of wildly-working visions! hail\n...","characters": 351,"words": 58,"confidence": 92,"hasText": true,"lines": [{ "text": "Mild Splendour of the various-vested Night!", "confidence": 95, "x": 38, "y": 34, "width": 1256, "height": 77 }],"extractedAt": "2026-11-08T01:00:00.000Z"}
Output fields
| Field | Meaning |
|---|---|
text | All the text found, line breaks kept |
confidence | Average OCR confidence, 0–100 (above ~80 is usually clean text) |
hasText | false when no readable text was found |
words / characters | Size of the extracted text |
lines | Each line with its confidence and box (x, y, width, height), when enabled |
width / height | Original image size in pixels |
fileName, contentType, fileSizeBytes | File details |
ocrMs | Time spent on the image |
Images that could not be read (broken links, web pages instead of images, files over the size limit) are not saved or charged; the SUMMARY record lists each one with the reason.
Pricing
$0.002 per image read, plus a tiny start fee. 1,000 images cost about $2.00. Failed images and images below your Minimum confidence cost nothing.
FAQ
Which OCR engine does it use? Tesseract, the open-source OCR engine, with its LSTM models. It works offline inside the Actor: your images are not sent to Google, OpenAI or any other third party.
Does it read handwriting? Clear block letters often work; cursive handwriting usually gives low confidence. Use Minimum confidence to drop poor results.
Can it read scanned PDFs? Use the PDF to Text & Markdown Extractor: it reads digital PDFs exactly and runs the same OCR on scanned pages.
How do I process images from my computer? Upload them anywhere that gives a direct link (for example an Apify key-value store, Google Cloud Storage, S3 or Dropbox with a direct-download link) and paste the links.
How do I get better accuracy? Set the right language, use images where letters are at least ~15 px tall, and pick Scattered text for screenshots and labels. Small images are upscaled automatically.
Is it fast? A typical image takes 1–3 seconds. For thousands of images, give the run 2–4 GB of memory.
Limitations
- Links must point to the image file itself, not to a gallery or a page that shows it.
- Tables come out as text in reading order, not as structured cells.
- Very stylized fonts, low-resolution photos and cursive handwriting give low confidence.
- TIFF and HEIC files are not supported yet; convert them to PNG or JPEG first.
Use it from your code, AI agents and automations
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("richiedc95/image-to-text-ocr").call(run_input={"imageUrls": ["https://tesseract.projectnaptha.com/img/eng_bw.png"],"languages": "eng","layout": "auto","includeLines": True})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('richiedc95/image-to-text-ocr').call({"imageUrls": ["https://tesseract.projectnaptha.com/img/eng_bw.png"],"languages": "eng","layout": "auto","includeLines": true});const { items } = await client.dataset(run.defaultDatasetId).listItems();
- 🤖 AI agents (MCP): add the Apify MCP server to Claude, ChatGPT, Cursor or any MCP client and this Actor becomes a tool your agent can call.
- 🔗 No-code (n8n, Make, Zapier): one HTTP request runs the Actor and returns the results, so any automation tool can use it. In n8n, add an HTTP Request node with method
POST, URLhttps://api.apify.com/v2/acts/richiedc95~image-to-text-ocr/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>and the JSON input above as the body, then send the items to Slack, Google Sheets, email or a CRM. Put a Schedule node in front for daily alerts. Make and Zapier have official Apify apps (Run an Actor → Get dataset items). Ready-made n8n workflows (import from URL) and a step-by-step guide: n8n / Make / Zapier examples. - 📥 Exports: download every run as JSON, CSV, Excel, XML or RSS, or read it through the Apify API.
Process new images automatically
- Click Save as a new task with your input.
- Run it on a schedule, or trigger it with an integration when another Actor finishes (for example, OCR every image a scraper just collected).
- Read the latest results from one stable URL:
https://api.apify.com/v2/actor-tasks/<TASK_ID>/runs/last/dataset/items?token=<YOUR_APIFY_TOKEN>&status=SUCCEEDED&format=json
Related Actors
- PDF to Text & Markdown Extractor: digital and scanned PDFs to text, Markdown and RAG chunks.
- Global News Scraper: worldwide news with sentiment, every 15 minutes.
Found a bug or need a feature? Open an issue on the Issues tab and we will usually answer within a day.