Image to Text OCR — Images & Scanned PDFs, 40+ Languages
Pricing
from $1.50 / 1,000 image or page read with ocrs
Image to Text OCR — Images & Scanned PDFs, 40+ Languages
Extract text from images, screenshots, photos of documents and scanned PDFs with OCR in 40+ languages. Plain text, Markdown, confidence, lines and words with boxes. PDF text layers read for less.
Pricing
from $1.50 / 1,000 image or page read with ocrs
Rating
0.0
(0)
Developer
Salih Küçükkayış
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 hours ago
Last modified
Categories
Share
Extract text from images and scanned PDFs with OCR: screenshots, photos of documents, receipts, invoices, scanned contracts, multi-page TIFFs. Give it image or PDF links, or a dataset from another Actor, and get the text of every image and page, as plain text and Markdown, with an average confidence score, and optionally every line and word with its bounding box. 40+ languages, including Turkish, Arabic, Chinese, Japanese, Korean, Hindi and Russian. PDF pages that already have a text layer are read from it instead of OCR: exact and cheaper.
$1.50 per 1,000 images or pages read with OCR. $0.50 per 1,000 PDF pages read from their text layer. Failed downloads and unreadable files are free. No subscription, no API key, no outside OCR service: Tesseract runs inside the run.
Quick start
Press Start with the example input. It reads a sample image with English, German, French, Italian, Spanish and Portuguese text:
{"imageUrls": ["https://raw.githubusercontent.com/tesseract-ocr/tessdoc/main/images/eurotext.png"],"outputDetail": "lines"}
One dataset row per image (trimmed):
{"url": "https://raw.githubusercontent.com/tesseract-ocr/tessdoc/main/images/eurotext.png","format": "png","page": 1,"method": "ocr","confidence": 91.1,"wordCount": 73,"width": 640,"height": 500,"language": "eng","text": "The (quick) [brown] {fox} jumps!\nOver the $43,456.78 <lazy> #90 dog\n& duck/goose, as 12.5% of E-mail\nfrom aspammer@website.com is spam. ...","markdown": "The (quick) [brown] {fox} jumps! Over the $43,456.78 <lazy> #90 dog & duck/goose, as 12.5% of E-mail from aspammer@website.com is spam. ...","lines": [{"text": "The (quick) [brown] {fox} jumps!", "confidence": 96.0, "x": 65, "y": 41, "w": 450, "h": 30},{"text": "Over the $43,456.78 <lazy> #90 dog", "confidence": 95.0, "x": 65, "y": 72, "w": 490, "h": 31}]}
What it does
- Images: PNG, JPEG, TIFF (every frame), WebP, GIF, BMP. Transparent images are put on white.
- Scanned PDFs: each page is rendered (300 DPI by default) and read with OCR. Pages with a text layer are read from it in Auto mode.
- Text and Markdown:
textkeeps Tesseract's line breaks;markdownjoins wrapped lines into paragraphs, keeps bullet lists and turns large text into headings. - Confidence:
confidenceis the average word confidence (0-100);lowConfidenceis true under 60, so a bad scan does not pass as a good one.minConfidencedrops uncertain words from the text. - Layout: with Layout detail = lines or words, every line or word comes with its confidence and box (
x,y,w,hin pixels of the original image). - Clean-up: small images (screenshots, thumbnails) are enlarged and contrast is stretched before OCR. Turn it off with Image clean-up = None.
- Chain with other Actors: give a
datasetIdand theurlFieldthat holds the image link (nested fields likeimage.urland lists of links work) to OCR the images another Actor found.
Input
| Field | Default | What it does |
|---|---|---|
imageUrls | Image or PDF links | |
languages | eng | One or more languages: eng+tur, "en, de", ["jpn", "eng"] |
outputDetail | text | text, lines or words |
layout | auto | auto, sparse_text (labels, signs, receipts), single_block, single_line |
minConfidence | 0 | Drop words below this confidence |
preprocess | auto | auto or none |
pdfMode | auto | auto, ocr (always), text (text layer only) |
pdfDpi | 300 | PDF render resolution for OCR |
maxPagesPerFile | 0 | Cap pages per file (0 = all) |
datasetId, urlField, maxDatasetItems | Read links from a dataset | |
requestHeaders | Headers for files behind a token (sent only to the file's own host) | |
maxFileSizeMb, maxConcurrency | 50, 2 | Limits |
Languages: eng, deu, fra, spa, ita, por, nld, tur, pol, swe, rus, ukr, ara, chi_sim, chi_tra, jpn, kor, hin, vie, ind, ces, ron, hun, dan, nor, fin, ell, heb, tha, bul, hrv, slk, slv, lit, lav, est, msa, ben, tam, fas, urd, srp, cat. Two-letter codes (tr, de, zh) and English names (Turkish) are understood.
Output
One row per image, image frame or PDF page: url, fileName, format, page, totalPages (PDFs), method (ocr or text-layer), text, markdown, confidence, lowConfidence, wordCount, chars, width, height, language, and lines / words when requested. A file that fails gives one row with error and is not charged. Export as JSON, CSV, Excel or through the API.
What it costs
| Run | Price |
|---|---|
| 1,000 screenshots | $1.50 |
| 200 scanned pages | $0.30 |
| 50 PDFs of 20 pages with a text layer | $0.50 |
A 400-page scan, capped with maxPagesPerFile: 20 | $0.03 |
You only pay for pages you get. The run stops cleanly at your spending limit and returns the pages that were paid for.
Good to know
- This is OCR, not image understanding: printed text, screenshots and clean scans read well; handwriting, very small text, heavy skew and low contrast read poorly. Check
confidence. - Set the right language: it is the biggest single factor for accuracy, especially for accented letters (Turkish ş, ğ, ı) and non-Latin scripts.
- Typical speed is under a second per image or scanned page.
- Private and internal addresses (localhost, 10.x, 192.168.x, cloud metadata) are blocked, including every redirect.
- Files behind a login are not supported: the link must download the file directly, or use a pre-signed URL or
requestHeaders. - You are responsible for reading files you have the right to use.
FAQ
Can an AI agent use it? Yes, through the Apify MCP server: the agent passes image links and gets text back.
How do I OCR files I have locally? Upload them anywhere that gives a direct download link (an Apify key-value store, S3, a public bucket) and pass the links.
I need Word, PowerPoint or Excel files too, or tables as Markdown tables. Use Document to Markdown: it converts every common document format to Markdown and uses the same OCR for scanned pages.
More from this developer
- Document to Markdown: PDF, Word, PowerPoint, Excel and scans to clean Markdown for LLMs and RAG, $2 per 1,000 pages.
- Bulk HTTP Requests: call any API once for every row of a CSV, JSON list or Apify dataset.
- Website Screenshot + Change Detection: screenshots of many URLs on desktop and mobile, with visual change detection between runs.
- Audio to Text: audio, video and podcast feeds to timestamped text, SRT/VTT subtitles and RAG chunks with Whisper.
- Video to Scenes: scene cuts, one keyframe per scene, a contact sheet and the transcript of each scene.
- Career Site Jobs: open jobs from Greenhouse, Lever, Ashby, Workable, Recruitee and Workday career sites.
- Keyword Search Volume: Google search volume, CPC and trends for a keyword list, in up to 20 countries in one run.
- Sitemap Extractor: every URL a website lists in its sitemaps, with lastmod, images and hreflang, $0.25 per 1,000 URLs.
- Tech Stack Detector: which CMS, ecommerce platform, analytics and hosting a website uses, $1.50 per 1,000 websites.
Code examples (curl, Python, Node.js, n8n) for this and the other Actors: github.com/msalihk/apify-actor-examples.
Questions or a missing feature: open an issue on the Actor page.