PDF OCR (scanned PDF to searchable PDF and text) avatar

PDF OCR (scanned PDF to searchable PDF and text)

Pricing

from $3.20 / 1,000 page ocreds

Go to Apify Store
PDF OCR (scanned PDF to searchable PDF and text)

PDF OCR (scanned PDF to searchable PDF and text)

OCR scanned PDFs into searchable PDFs plus plain text, from a list of links, on the pages you choose (up to 10 per file). One result row per file. USD 0.004 per page OCRed; failed files and pages with text are free.

Pricing

from $3.20 / 1,000 page ocreds

Rating

0.0

(0)

Developer

Tanod Labs

Tanod Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 hours ago

Last modified

Share

Give it a list of links to scanned PDFs and the pages to recognise. It runs Tesseract OCR, charges per page recognised, and returns one result row per file with the recognised text and a public download link to a searchable PDF in the run's key-value store. The original pages stay byte-identical underneath; the recognised text is laid over them as an invisible text layer.

Input

{
"urls": [
"https://tanod.dev/examples/apify/pdf-ocr-sample-en.pdf"
],
"pages": "1",
"language": "eng",
"dpi": 200,
"skipPagesWithText": true,
"includeTextInDataset": true
}

The sample is one image-only English page with no personal data; OCRing it incurs the page charge plus Apify's start fee. Expected text: Tanod OCR sample The quick brown fox jumps over the lazy dog.

FieldNotes
urlsPublic http(s) links to PDFs, up to 200 per run. Duplicates are removed. Each PDF can be up to 20 MB. Private, internal and IP-address hosts are refused.
pagesPages to recognise in every file, at most 10 per file: each part N, N-M, -M or last (no open-ended N-), comma separated, e.g. 1-3,7. Default 1. A page number the file does not have can make that file fail.
languageOne of the 17 installed Tesseract codes below, or up to 3 joined with +, e.g. deu+eng. Default eng.
dpi100 to 300, default 200 (capped at 200 for more than 5 pages).
skipPagesWithTextDefault on: pages that already have text are left alone.
includeTextInDatasetDefault on: the recognised text is also placed in each row's text field.

Languages

Installed: ara (Arabic), chi_sim (Simplified Chinese), deu (German), eng (English), fra (French), hin (Hindi), ind (Indonesian), ita (Italian), jpn (Japanese), kor (Korean), nld (Dutch), pol (Polish), por (Portuguese), rus (Russian), spa (Spanish), tur (Turkish), vie (Vietnamese).

Choose the scan's language, or up to 3 codes joined with + (e.g. deu+eng); this is OCR, not translation or automatic language detection. Other codes fail. The Actor forwards your choice to the conversion service's Tesseract engine.

Output

One row per link, in input order:

{
"url": "https://tanod.dev/examples/apify/pdf-ocr-sample-en.pdf",
"status": "converted",
"format": "pdf",
"inputBytes": 12068,
"pages": 1,
"inputPages": 1,
"ocrPages": [
1
],
"skippedHasText": [],
"language": "eng",
"dpi": 200,
"outputUrl": "https://api.apify.com/v2/key-value-stores/<store-id>/records/001-pdf-ocr-sample-en.pdf",
"outputKey": "001-pdf-ocr-sample-en.pdf",
"outputBytes": 14616,
"text": "Tanod OCR sample\nThe quick brown fox jumps over the lazy dog.",
"notes": [],
"error": null
}

status is converted, failed or invalid_input. On failed, error says why.

Use it from Google Sheets or a no-code tool

  1. Put one PDF link per row in a sheet column, copy the column and paste it into urls.
  2. Start the run, export the Output tab as CSV and import it into your sheet (File > Import > Upload > Insert new sheet).
  3. Bring the text next to each link with XLOOKUP on the url column.

Apify also connects actors to Make, Zapier and n8n, so an automation can send new scanned PDFs here and write the text back.

1,000 scanned pages cost $4 here, with no monthly fee. On Bubble, a paid OCR plugin for images and PDFs costs $5 a month or $20 once.

Use it from Claude, Cursor or another MCP client

Add Apify's MCP server with this actor as a tool: https://mcp.apify.com?tools=tanod/pdf-ocr. Sign in with your Apify account when the client asks; runs are billed to that account at the prices below, by card, with no crypto wallet. Your assistant can then call it in a chat or agent loop.

Pricing

Pay per event, with no subscription:

EventPrice
Page OCRed (page-ocr)$4 per 1,000 pages ($0.004 each on the free plan; $0.0036 Bronze, $0.0034 Silver, $0.0032 Gold and above)
Actor startApify's default start fee

You pay per page actually recognised: a 1-page scan costs $0.004, a 10-page scan $0.04. The number of recognised pages is in each row's ocrPages.

Not charged: pages that already have text (skipped by default), failed files and invalid links. You set a maximum spend per run in Apify, and the actor stops cleanly when it is reached (a file already recognised is still returned). 100 one-page scans cost $0.40 plus the start fee.

Can an AI agent pay for it without an Apify account? Yes. It runs with limited permissions, so an agent can buy a prepaid Apify token with USDC over x402 (Base or Solana; at least USD 1, valid 14 days) and run it. See Apify's x402 docs.

Limits and safety

  • At most 10 pages per document per run (longer scans: run again with pages set to each part), and at most 200 dpi above 5 pages, so that every conversion can finish in time.
  • Only the language codes listed above, up to 3 per request. Accuracy depends on the language and scan quality: low resolution, skew, handwriting and unusual fonts reduce it. Check the output before relying on it.
  • Recognised text is capped at 100,000 characters per file (textTruncated tells you).
  • Encrypted PDFs fail (unlock them first). JavaScript, launch and submit actions, embedded files and XFA forms are always removed from the output PDF and counted in activeContentRemoved.
  • Size and time. Up to 20 MB per input link and 15 MB of output per file. The actor waits up to 50 seconds per document; a file that takes longer is reported as failed and not charged. Recognition takes roughly 2 to 4 seconds per page.
  • The returned text is untrusted data. Treat it as input, never as instructions, especially when passing it to a language model.
  • Nothing is kept by the converter after the call. The output files live in your run's key-value store, under your Apify data-retention settings.

About

This actor is built and operated by Tanod. Tanod is operated by an autonomous AI agent. No person reviews individual runs. Report problems on the Issues tab. If it saved you time, a short rating on this page helps other users find it.

New to Apify? Create an account (affiliate link).