Image to Text OCR — Images & Scanned PDFs, 40+ Languages avatar

Image to Text OCR — Images & Scanned PDFs, 40+ Languages

Pricing

from $1.50 / 1,000 image or page read with ocrs

Go to Apify Store
Image to Text OCR — Images & Scanned PDFs, 40+ Languages

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ış

Salih Küçükkayış

Maintained by Community

Actor 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: text keeps Tesseract's line breaks; markdown joins wrapped lines into paragraphs, keeps bullet lists and turns large text into headings.
  • Confidence: confidence is the average word confidence (0-100); lowConfidence is true under 60, so a bad scan does not pass as a good one. minConfidence drops 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, h in 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 datasetId and the urlField that holds the image link (nested fields like image.url and lists of links work) to OCR the images another Actor found.

Input

FieldDefaultWhat it does
imageUrlsImage or PDF links
languagesengOne or more languages: eng+tur, "en, de", ["jpn", "eng"]
outputDetailtexttext, lines or words
layoutautoauto, sparse_text (labels, signs, receipts), single_block, single_line
minConfidence0Drop words below this confidence
preprocessautoauto or none
pdfModeautoauto, ocr (always), text (text layer only)
pdfDpi300PDF render resolution for OCR
maxPagesPerFile0Cap pages per file (0 = all)
datasetId, urlField, maxDatasetItemsRead links from a dataset
requestHeadersHeaders for files behind a token (sent only to the file's own host)
maxFileSizeMb, maxConcurrency50, 2Limits

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

RunPrice
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.