OCR: Image & Scanned PDF to Text (Tesseract, 40 languages) avatar

OCR: Image & Scanned PDF to Text (Tesseract, 40 languages)

Pricing

Pay per event

Go to Apify Store
OCR: Image & Scanned PDF to Text (Tesseract, 40 languages)

OCR: Image & Scanned PDF to Text (Tesseract, 40 languages)

Bulk OCR for images and scanned PDFs: image to text and scanned PDF to text in 40 languages with Tesseract 5. Per-page text, confidence score, optional word bounding boxes and hOCR. Auto-rotation, smart PDF text-layer mode. Blank pages and errors are free.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Cesar Rodriguez

Cesar Rodriguez

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Security

Limited permissions

Share

Extract text from images and scanned PDFs in bulk. Give it a list of URLs (PNG, JPEG, TIFF, WEBP, GIF, BMP or PDF) and get back one clean result per page: the recognised text, a confidence score, and optionally every word with its bounding box or the page as hOCR.

Image to text, scanned PDF to text, photo to text, multi-page TIFF to text – runs on the open-source Tesseract 5 OCR engine inside your Apify run. No third-party AI API is called, and no API key is needed.

Why use it

  • Low price per page and blank pages, failed downloads and unreadable files are free (see Pricing).
  • Smart PDF mode: pages that already contain selectable text are extracted directly (exact and cheaper); only real scans are OCR'd.
  • 40 languages, mixable in one run: English, Spanish, German, French, Italian, Portuguese, Dutch, Polish, Czech, Slovak, Romanian, Hungarian, Turkish, Swedish, Danish, Norwegian, Finnish, Catalan, Galician, Basque, Greek, Russian, Ukrainian, Bulgarian, Croatian, Serbian (Latin), Slovenian, Lithuanian, Latvian, Estonian, Arabic, Hebrew, Hindi, Vietnamese, Indonesian, Thai, Chinese (Simplified and Traditional), Japanese and Korean.
  • Quality signals you can act on: meanConfidence per page and lowConfidenceWords so you know which pages need a human look.
  • Auto-rotation of pages scanned sideways or upside down, and automatic upscaling of small images (screenshots, thumbnails).
  • Clear per-file errors (404, not an image/PDF, too large, password-protected) – one bad link never breaks the run.
  • Limits you control: max files, max pages per file, max pages per run, max file size.

Typical uses

Digitising archives and old documents · scanned invoices, contracts and letters to text · feeding scanned documents into search, RAG and LLM pipelines · extracting text from screenshots and product images · checking which documents in a batch are scans.

Input

{
"sources": [
{ "url": "https://raw.githubusercontent.com/tesseract-ocr/test/main/testing/phototest.tif" },
{ "url": "https://github.com/ocrmypdf/OCRmyPDF/raw/main/tests/resources/linn.pdf" }
],
"languages": ["eng"],
"pdfMode": "auto",
"includeWords": false,
"includeHocr": false,
"maxPagesPerFile": 50
}
  • languages – put the main language first and only add languages that really appear: each extra language is slower and can reduce accuracy. Example for a Spanish document with English terms: ["spa", "eng"].
  • pdfMode – auto (default) uses the existing text layer when a PDF page has one; ocr forces OCR on every page.
  • pageSegmentation – auto for documents, sparse-text for photos, receipts and screenshots, single-line for one-line crops.
  • keyValueStoreKeys + keyValueStoreId – OCR files saved in an Apify key-value store (e.g. by another Actor) instead of URLs.

Output (one dataset item per page, shortened)

{
"fileName": "linn.pdf",
"fileType": "pdf",
"page": 1,
"pageCount": 1,
"status": "ok",
"method": "ocr",
"languages": "eng",
"text": "The LinnSequencer\n32 Track MIDI Sequence Recorder\n\nThe LinnSequencer is a state-of-the-art composition and performance tool ...",
"meanConfidence": 95.5,
"wordCount": 728,
"lowConfidenceWords": 2,
"rotationApplied": 0,
"words": [{ "text": "The", "confidence": 93.1, "bbox": [882, 132, 1036, 202], "block": 1, "line": 1 }]
}

status is ok (charged), empty (no text on the page – not charged) or error (with a readable error message – not charged). Download the dataset as JSON, CSV, Excel or HTML from the run page or the API, or join text by fileName to get whole documents.

Pricing

Pay per event (see the Pricing tab): a small fee per run start, a fee per OCR'd page, and a lower fee per PDF page that already had a text layer. Blank pages, failed downloads, unsupported files and pages over your limits are not charged. Set Max total charge on your run to cap spending.

Speed tip: OCR is CPU-bound. The default 2 GB memory handles typical batches; give the run 4–8 GB for large batches (more CPU = more pages processed in parallel).

Accuracy and honest limits

  • Tesseract is excellent on printed text (books, letters, reports, forms, screenshots) – typically 90+ mean confidence on clean scans at 300 DPI. It is not built for handwriting and struggles with heavy decorative fonts, very low-resolution photos and complex layouts.
  • Tables are returned as text lines, not as structured tables. For digital PDFs with tables, see our PDF Table Extractor.
  • Only public http(s) URLs (or files in your key-value store). You are responsible for having the right to process the documents you submit.

Use with AI agents / MCP

Works through the Apify MCP server: an agent passes image or PDF URLs and reads back page text with confidence scores, ready for summarisation, extraction or RAG.

FAQ

Are my files sent to a third party? No. Files are downloaded inside your Apify run and processed with Tesseract (Apache-2.0) and PDFium. Results stay in your run storages.

Why is a page empty? No text was found (blank page, photo without text). It is not charged. If you expected text, try pageSegmentation: "sparse-text", a higher pdfDpi, or check the language selection.

Can I get searchable PDFs? Not yet – use includeHocr to get text with coordinates. Missing a feature? Open an issue in the Issues tab.