PDF Text Extractor & OCR - Bulk PDF and Image to Text avatar

PDF Text Extractor & OCR - Bulk PDF and Image to Text

Pricing

from $1.20 / 1,000 pdf extracteds

Go to Apify Store
PDF Text Extractor & OCR - Bulk PDF and Image to Text

PDF Text Extractor & OCR - Bulk PDF and Image to Text

Extract text from PDFs and images in bulk: text layer read exactly, OCR (Tesseract, 8 languages) only on scanned pages. $1.50 per 1,000 PDFs + $0.002 per OCR page; failed downloads and blank pages are free.

Pricing

from $1.20 / 1,000 pdf extracteds

Rating

0.0

(0)

Developer

TinyRex

TinyRex

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

PDF Text Extractor & OCR: bulk PDF and image to text

Turn a list of PDF or image links into clean text for search, RAG, data entry or archiving — the Actor reads each PDF's own text layer exactly (fast, no OCR errors) and runs Tesseract OCR only on scanned pages and images (PNG, JPEG, TIFF, WebP, GIF, BMP), in 8 languages. You get one row per file with the full text, page counts, method used and PDF metadata. $1.50 per 1,000 PDFs + $0.002 per OCR page; failed downloads, non-PDF links, password-protected files and blank pages are free. No API key, no login, no outside OCR service: everything runs inside the Actor.

What you get from the PDF Text Extractor & OCR

  • Exact text from digital PDFs — reports, invoices, forms, manuals and 100+ page publications are read from the text layer in seconds (a 142-page IRS publication took ~5 s), in natural reading order or with the physical layout kept for tables and columns.
  • OCR only where it's needed — in auto mode, pages without a text layer (scans, faxes, photographed documents) and image files go through Tesseract OCR; mixed PDFs get both. You only pay the OCR price for pages OCR actually read.
  • Ready for AI and spreadsheets — text, words, pageCount, method (text-layer / ocr / mixed), title, author and dates per file; optional per-page text for RAG chunking and page citations; a clear error on every file that failed (free).

Sample output (JSON)

Real row from a run on a scanned (image-only) PDF:

{
"url": "https://raw.githubusercontent.com/ocrmypdf/OCRmyPDF/v16.0.0/tests/resources/ccitt.pdf",
"status": "ok",
"fileType": "pdf",
"method": "ocr",
"pageCount": 1,
"pagesProcessed": 1,
"textLayerPages": 0,
"ocrPages": 1,
"blankPages": 0,
"ocrLanguages": ["eng"],
"producer": "libtiff / tiff2pdf - 20150912",
"createdAt": "2016-01-19T12:38:47.000Z",
"chars": 4508,
"words": 728,
"text": "The LinnSequencer\n32 Track MIDI Sequence Recorder\n\nThe LinnSequencer is a state-of-the-art composition and performance tool for the professional music ...",
"textTruncated": false,
"charged": { "documents": 0, "ocrPages": 1 },
"httpStatus": 200,
"fileSizeBytes": 103856,
"extractedAt": "2026-10-19T07:28:29.277Z"
}

A digital PDF looks like "method": "text-layer", "pageCount": 6, "textLayerPages": 6, "title": "Form W-9 ...", "words": 6279, "charged": { "documents": 1, "ocrPages": 0 }. With Include per-page text on, each row also has pages: [{ "page": 1, "method": "ocr", "chars": 1110, "text": "..." }, ...].

Export as CSV, Excel, JSON or XML, or send results to Google Sheets, Make, Zapier, n8n, LangChain/LlamaIndex loaders, webhooks or the Apify API. A SUMMARY record in the key-value store has run totals.

How to configure the PDF Text Extractor & OCR

  1. Paste PDF or image URLs, one per line (direct links that download the file).
  2. Or pick a dataset from another Actor run: every link ending in .pdf/.png/.jpg/... is collected, or set URL field to the column that holds your links.
  3. Choose OCR mode and OCR languages if your scans aren't in English. Run.

Example input

{
"fileUrls": [
"https://www.irs.gov/pub/irs-pdf/fw9.pdf",
"https://raw.githubusercontent.com/ocrmypdf/OCRmyPDF/v16.0.0/tests/resources/ccitt.pdf"
],
"ocrMode": "auto",
"languages": ["eng"],
"includePages": false,
"maxPagesPerFile": 100
}
SettingDefaultNotes
fileUrls—Direct links to PDFs or images; duplicates removed
datasetId / urlField—Read links from another run's dataset
ocrModeautoauto = OCR only pages without text; always; never (no OCR charges)
languagesengeng, deu, fra, spa, ita, por, nld, pol (pick only what you need)
ocrDpi200Render resolution for scanned pages; 300 for tiny print
includePagesfalseAdds per-page text array
keepLayoutfalseKeep columns/tables aligned with spaces
maxPagesPerFile100First N pages per PDF (up to 5,000)
maxFileSizeMb50Bigger files are skipped (free)
maxFiles1000Unique URLs per run (up to 10,000)

Speed: digital PDFs take well under a second per file after download. OCR takes about 3–5 s per page at the default 4 GB memory (1 CPU core); give the run 8–16 GB to OCR several pages in parallel.

Pricing

Pay per event, with Bronze/Silver/Gold discounts:

EventPriceWhen
PDF extracted$0.0015 ($1.50 / 1,000)Once per PDF whose own text layer gave text, any page count up to your limit
OCR page$0.002 ($2 / 1,000)Per scanned page or image that OCR read text from
Free$0Dead links, HTTP errors, web pages, unsupported files, password-protected PDFs, blank pages, files over the size limit

Example: 1,000 digital PDFs = $1.50. A 10-page scanned contract = $0.02. A tiny Actor-start fee applies per run. Set a max charge per run and the Actor stops cleanly when it's reached.

FAQ

How do I extract text from a scanned PDF? Add its link and leave OCR mode on auto. Pages with no text layer are rendered to an image and read by Tesseract OCR; the row shows "method": "ocr" and ocrPages. For non-English scans, choose the language(s) under OCR languages.

How can I tell if a PDF is scanned or has selectable text? Run it once: textLayerPages counts pages with real text, ocrPages counts pages that needed OCR. method sums it up as text-layer, ocr or mixed.

Can I convert PDF to text for ChatGPT, RAG or a vector database? Yes. Use text for whole documents or turn on Include per-page text to chunk by page and cite page numbers. Very long documents keep the first 1,000,000 characters inline and store the full text in the run's key-value store (fullTextUrl).

Does it extract text from images like PNG or JPG? Yes. Image links are OCR'd as one page each (PNG, JPEG, TIFF, WebP, GIF, BMP).

Does it work with password-protected PDFs? No. Encrypted PDFs that need a password are reported with error: "password-protected PDF" and are free.

Are my documents sent to a third-party OCR API? No. Download, text extraction (poppler) and OCR (Tesseract) all happen inside the Actor's container; results stay in your own Apify storage.