PDF OCR – Scanned PDF to Searchable PDF & Text avatar

PDF OCR – Scanned PDF to Searchable PDF & Text

Pricing

from $4.50 / 1,000 scanned page ocrs

Go to Apify Store
PDF OCR – Scanned PDF to Searchable PDF & Text

PDF OCR – Scanned PDF to Searchable PDF & Text

OCR scanned PDFs and images into searchable PDFs (invisible text layer over the original pages) plus full text, per-page text and Markdown. Tesseract 5, 22 languages, only pages without a text layer are OCR'd, confidence per page. $4.50 per 1,000 OCR pages.

Pricing

from $4.50 / 1,000 scanned page ocrs

Rating

0.0

(0)

Developer

Cemal Atakli

Cemal Atakli

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Categories

Share

PDF OCR for scanned documents: give it links to scanned PDFs (or photos/scans of pages) and get back a searchable PDF — the original pages with an invisible, selectable text layer — plus the full text, per-page text, Markdown paragraphs and an OCR confidence score. Built on Tesseract 5 OCR, 22 languages, runs in bulk, pay only for the pages that were actually OCR'd.

  • 🔎 Scanned PDF → searchable PDF: Ctrl+F, copy & paste and full-text indexing work in any PDF viewer; the page image is not re-compressed or changed
  • 🧠 Smart OCR: in auto mode only pages without a text layer are OCR'd; pages that already have text are kept and cost $0.0003
  • 🖼️ Images → one searchable PDF: combine JPG, PNG, multi-page TIFF, WebP, HEIC scans into one multi-page PDF (or one PDF per image)
  • 📝 Text output: full text, text per page, Markdown with re-flowed paragraphs, word counts, OCR confidence (0–100) per page and per document
  • 📦 Files: searchable .pdf, .txt and .md saved in the key-value store with direct download links in every row
  • 💸 $4.50 per 1,000 OCR pages, errors and blank pages free

What does PDF OCR do?

  1. Downloads each PDF (Google Drive, Dropbox and GitHub share links work) or image.
  2. Checks every page: does it already have real text? If not (a scan, a photo, broken font encoding), the page is rendered at 300 DPI and read with Tesseract 5 OCR.
  3. The recognised words are placed as an invisible text layer exactly over the words on the page (correct for rotated pages and cropped pages), so the file looks the same but becomes searchable and selectable — the same technique professional "OCR PDF" tools use.
  4. Saves the searchable PDF, the text and Markdown files, and pushes one dataset row per document.

Use cases

  • Make scanned contracts, invoices, letters and archives searchable for document management systems, SharePoint, Google Drive or Dropbox search
  • OCR PDF batches before feeding them to LLMs, RAG pipelines and vector databases (text + Markdown per page)
  • Digitise old books, newspapers, typewritten records and library scans (archive.org, BHL, Wikimedia)
  • Turn phone photos of documents into one searchable PDF
  • Fix PDFs from scanners that save image-only files, or redo a bad OCR layer (force mode)
  • Legal discovery, compliance and accounting teams who need searchable scanned PDF files at scale

Input example

{
"pdfUrls": ["https://archive.org/download/IAPSOP-Plummer_to_Crowley_January_7_1914/IAPSOP-Plummer_to_Crowley_January_7_1914.pdf"],
"imageUrls": [
"https://upload.wikimedia.org/wikipedia/commons/e/e2/Typewritten_letter_from_Dr_Claude_H_Organ_Jr_MD_FACS_to_Dr_Leonidas_Berry_dated_October_5_1965.jpg",
"https://upload.wikimedia.org/wikipedia/commons/5/55/A_text-book_of_agricultural_entomology_%28Page_192%29_BHL9798403.jpg"
],
"combineImages": true,
"ocrLanguages": ["eng"],
"ocrMode": "auto",
"dpi": 300
}
FieldDefaultMeaning
pdfUrlsdemo scanScanned or mixed PDFs, one searchable PDF each
imageUrls–Page images; combined into one PDF by default (combineImages)
ocrLanguages["eng"]22 languages: English, German, French, Spanish, Italian, Portuguese, Dutch, Turkish, Polish, Russian, Ukrainian, Czech, Swedish, Romanian, Arabic, Hindi, Chinese (simplified/traditional), Japanese, Korean, Indonesian, Vietnamese
ocrModeautoauto = OCR only pages without text; force = OCR every page (replaces an existing invisible OCR layer)
dpi300OCR render resolution (100–600)
pageRangealle.g. 1-5, 1,3,10-, -3--1
saveSearchablePdf, saveTextFiles, includePageTextsonWhat to output
pdfPassword–For encrypted PDFs

Output example

One row per document (shortened, see SAMPLE_OUTPUT.json):

{
"type": "document",
"status": "ok",
"url": "https://archive.org/download/IAPSOP-Plummer_to_Crowley_January_7_1914/IAPSOP-Plummer_to_Crowley_January_7_1914.pdf",
"fileName": "IAPSOP-Plummer_to_Crowley_January_7_1914.pdf",
"source": "pdf",
"pageCount": 2,
"ocrPages": 2,
"textPages": 0,
"emptyPages": 0,
"ocrConfidence": 70.5,
"ocrLanguages": "eng",
"wordCount": 425,
"searchablePdfUrl": "https://api.apify.com/v2/key-value-stores/<storeId>/records/0001-IAPSOP-Plummer_to_Crowley_January_7_1914-searchable.pdf",
"searchablePdfBytes": 310343,
"textFileUrl": "https://api.apify.com/v2/key-value-stores/<storeId>/records/0001-IAPSOP-Plummer_to_Crowley_January_7_1914.txt",
"markdownFileUrl": "https://api.apify.com/v2/key-value-stores/<storeId>/records/0001-IAPSOP-Plummer_to_Crowley_January_7_1914.md",
"text": "... appealed to the writer.\n\nMay I be permitted to express the hope that the ensuing year may witness a oloser relationship ...",
"pages": [
{"pageNumber": 1, "method": "ocr", "confidence": 67.3, "wordCount": 344, "textLayerAdded": true, "text": "..."},
{"pageNumber": 2, "method": "ocr", "confidence": 83.9, "wordCount": 81, "textLayerAdded": true, "text": "..."}
]
}

Failed items are separate rows with type: "error", an errorCode (http-404, not-a-pdf, password-required, invalid-pdf, invalid-image, too-large, …) and a readable message. They are free.

Pricing

Pay per event — no subscription, no compute bill on top:

EventPrice
Page read with OCR (ocr-page)$0.0045 ($4.50 / 1,000 pages)
Page that already had text (text-page)$0.0003
Actor start$0.00005
Blank pages, failed pages, errors, filesfree

How it compares (Apify Store, October 2026, published prices):

ActorOCR pageOther charges
PDF OCR (this Actor)$0.0045searchable PDF, .txt and .md included
nerolabs/bulk-ocr-image-pdf-to-text$0.005$0.01 per file export, $0.001 per text-layer page
amanatools/pdf-ocr-extractor$0.015$0.005 per document
eliai/pdf-text-extractor$0.015$0.003 per PDF
ely_source/pdf-ocr$0.02$0.01 per run
tanod/pdf-ocr–$0.03 per document

Set a maximum total charge on the run and the Actor stops cleanly when it is reached (finished pages are kept, the current PDF is marked partial).

FAQ

What is a searchable PDF? A PDF where each scanned page image has an invisible text layer on top. It looks exactly like the scan, but you can search, select and copy the text, and search engines / document systems can index it.

Does it change how my PDF looks? No. The original page content stays untouched; only invisible text is added (typically +3–10 KB per page). Images you upload as JPEG are embedded without re-compression.

What about PDFs that are already partly digital? In auto mode, pages with real text are left alone and charged $0.0003; only scanned pages are OCR'd. Use force to OCR everything — an existing invisible OCR layer is replaced, visible digital text is never covered twice.

How accurate is the OCR? Tesseract 5 (LSTM) reads clean printed text very well (the demo book page scores 94/100); ocrConfidence (0–100) per page tells you how sure it was. Typewriter scans, faded copies and handwriting give lower confidence. Handwriting is not supported.

Which languages? 22 languages, several at once (e.g. ["eng","deu"]). Pick only the languages present: each extra one slows OCR.

How fast is it? About 3–4 s per page at the default 2 GB memory. Raise memory to 8 or 16 GB to OCR 2–4 pages in parallel at the same price.

Is my data stored? Files live in your run's key-value store (your Apify account) under your data-retention settings. Nothing is sent to third-party OCR APIs — OCR runs inside the Actor.

Rotated pages? Pages rotated with the PDF /Rotate flag are handled (the text layer is aligned for 0/90/180/270°). A page scanned sideways without a rotate flag is OCR'd as it is displayed.

Use with AI agents / Apify MCP

This Actor works as a tool for AI agents through the Apify MCP server (Claude, Cursor, ChatGPT, LangChain, n8n, Make, Zapier). An agent can call gazidev/pdf-ocr with pdfUrls, read the text / pages[].text fields for reasoning, and hand the user the searchablePdfUrl. Example prompt: "OCR these scanned invoices and give me searchable PDFs and the invoice totals."

API call:

curl -X POST "https://api.apify.com/v2/acts/gazidev~pdf-ocr/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"pdfUrls": ["https://example.com/scan.pdf"], "ocrLanguages": ["eng"]}'
  • PDF to Text & Markdown (gazidev/pdf-text-extractor) — digital PDFs to Markdown with tables and RAG chunks
  • Image to Text OCR (gazidev/image-ocr) — text, words and boxes from single images

Built with Tesseract OCR (Apache-2.0) and PDFium via pypdfium2 (Apache-2.0/BSD-3).