Image to Text OCR: Images & Scanned PDFs, 24 Languages avatar

Image to Text OCR: Images & Scanned PDFs, 24 Languages

Pricing

from $1.05 / 1,000 page with texts

Go to Apify Store
Image to Text OCR: Images & Scanned PDFs, 24 Languages

Image to Text OCR: Images & Scanned PDFs, 24 Languages

Extract text from image URLs (PNG, JPG, WebP, TIFF, GIF) and scanned PDFs with open-source Tesseract OCR. 24 languages incl. Korean, Japanese, Chinese. Confidence, word boxes, dataset input. Blank pages and failed files are free.

Pricing

from $1.05 / 1,000 page with texts

Rating

0.0

(0)

Developer

Ctrio Lab

Ctrio Lab

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 days ago

Last modified

Security

Limited permissions

Share

Extract text from images and scanned PDFs with open-source Tesseract OCR. Give direct file URLs, files in an Apify key-value store, or a dataset from another Actor, and get one clean row per file: the text, an average confidence score, per-page results and, if you want, every word with its bounding box.

  • Inputs: PNG, JPG, WebP, TIFF (every page), GIF and BMP (first frame), scanned PDFs (every page, or a page range). Direct URLs, an Apify key-value store, or a dataset from another Actor.
  • 24 languages: English, Korean, Japanese, Chinese (Simplified and Traditional), Spanish, German, French, Portuguese, Italian, Dutch, Polish, Russian, Ukrainian, Turkish, Arabic, Hindi, Vietnamese, Indonesian, Thai, Swedish, Czech, Greek, Hebrew. Mix several for multilingual documents.
  • Preprocessing: grayscale, automatic 2x upscaling of small images, optional deskew (straightens scans tilted up to 10 degrees), transparent PNGs put on white, phone photo rotation (EXIF) fixed.
  • Fair billing: you pay per page that actually contains text. Blank pages, broken links, web pages and unreadable files are free and listed with a reason.
  • Private: nothing is sent to Google, OpenAI or any other service. OCR runs inside the Actor's container.

How to use it

  1. Paste image or PDF links into Image or PDF URLs (or pick a key-value store, or a dataset and the name of its URL field).
  2. Choose the languages of the text. English is the default.
  3. Click Start. Each file becomes one row in the dataset. Export it as JSON, CSV, Excel or read it by API.

Leave the input empty to try it on a built-in public domain book page.

Output

{
"url": "https://example.com/scan.pdf",
"fileName": "scan.pdf",
"status": "ok",
"fileType": "pdf",
"languages": "eng",
"text": "FEDERAL BUREAU OF INVESTIGATION\nMemorandum ...",
"confidence": 91.4,
"wordCount": 612,
"characterCount": 3861,
"totalPages": 3,
"pageCount": 3,
"billedPages": 3,
"pages": [
{ "page": 1, "text": "...", "confidence": 92.1, "wordCount": 230, "width": 2550, "height": 3300 }
],
"processingSeconds": 6.2,
"processedAt": "2026-10-29T05:00:00+00:00"
}
  • status: ok (text found), blank (no text, not charged) or failed (with error, not charged).
  • confidence: Tesseract's average word confidence, 0 to 100. Below about 60 usually means a poor scan or the wrong language.
  • With Include word boxes each page gets words: [{ text, confidence, left, top, width, height, line }] in original image pixels.
  • The run's key-value store has a SUMMARY record with billed pages, blank pages and failed files.

Read URLs from another Actor's dataset

Pick the dataset in Or read URLs from a dataset and set URL field (dotted paths such as images.0.url work). Every column of the source row is copied into the result row, so you can join the text back to your products, listings or documents. If a source column has the same name as one of ours, it is kept as source_<name>. Rows whose link fails still appear with status: "failed" so nothing goes missing.

In an integration after another Actor, use {{resource.defaultDatasetId}} as the dataset.

Scheduled runs: only new files

Turn on Only new files and give a Monitor name. URLs read in earlier runs with the same name are skipped (not charged), so a daily schedule over a growing list only pays for new images.

Tips for better results

  • Use Sparse text layout for receipts, signs, photos and tables, Single block for screenshots and cropped text.
  • Pick the right language. Korean, Japanese and Chinese text needs its language selected.
  • For crooked phone scans, turn on deskew.
  • PDFs that already contain a text layer (not scanned) are read faster and cheaper by our PDF Text Extractor.

Pricing

Pay per event: $0.0015 per page with text ($1.50 per 1,000 pages) on the Free plan, down to $0.00105 on Gold and higher plans, plus a tiny Actor start fee ($0.00005 per GB of memory). Platform usage (compute) is paid by you; in our tests it was about $0.0004 per scanned PDF page and about $0.0005 for a one-image run at the default 2 GB memory. Blank pages and failed files are never charged. You can cap the cost of a run with the maximum cost per run setting; the Actor stops cleanly when it is reached.

FAQ

Does it handle handwriting? Tesseract is made for printed text. Neat block letters often work, cursive handwriting does not.

Which image size works best? Text about 20 to 40 pixels high. Small images are upscaled automatically.

Can I send a PDF with many pages? Yes. Set Max pages per file (default 50) and an optional page range like 1-10, 15.

Is my data stored? Files are deleted from the container after OCR. Results stay only in your run's storage.

Your files

Only submit files you have the right to process. This Actor does not log in anywhere, does not use proxies and does not scrape websites. It reads exactly the files you link.

Licenses

Tesseract OCR and its trained data are Apache-2.0. PDF rendering uses PDFium (BSD-3) through pypdfium2. The sample page is public domain (Biodiversity Heritage Library, Wikimedia Commons).

Questions or a feature request: help@ctriolab.com. Made by Ctrio Lab.