PDF OCR (scanned PDF to searchable PDF and text)
Pricing
from $3.20 / 1,000 page ocreds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 hours ago
Last modified
Categories
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.
| Field | Notes |
|---|---|
urls | Public 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. |
pages | Pages 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. |
language | One of the 17 installed Tesseract codes below, or up to 3 joined with +, e.g. deu+eng. Default eng. |
dpi | 100 to 300, default 200 (capped at 200 for more than 5 pages). |
skipPagesWithText | Default on: pages that already have text are left alone. |
includeTextInDataset | Default 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
- Put one PDF link per row in a sheet column, copy the column and paste it into
urls. - Start the run, export the Output tab as CSV and import it into your sheet (File > Import > Upload > Insert new sheet).
- Bring the text next to each link with XLOOKUP on the
urlcolumn.
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:
| Event | Price |
|---|---|
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 start | Apify'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
pagesset 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 (
textTruncatedtells 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
failedand 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).