PDF Text Extractor & OCR - Bulk PDF and Image to Text
Pricing
from $1.20 / 1,000 pdf extracteds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
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
automode, 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 clearerroron 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
- Paste PDF or image URLs, one per line (direct links that download the file).
- 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.
- 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}
| Setting | Default | Notes |
|---|---|---|
| fileUrls | — | Direct links to PDFs or images; duplicates removed |
| datasetId / urlField | — | Read links from another run's dataset |
| ocrMode | auto | auto = OCR only pages without text; always; never (no OCR charges) |
| languages | eng | eng, deu, fra, spa, ita, por, nld, pol (pick only what you need) |
| ocrDpi | 200 | Render resolution for scanned pages; 300 for tiny print |
| includePages | false | Adds per-page text array |
| keepLayout | false | Keep columns/tables aligned with spaces |
| maxPagesPerFile | 100 | First N pages per PDF (up to 5,000) |
| maxFileSizeMb | 50 | Bigger files are skipped (free) |
| maxFiles | 1000 | Unique 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:
| Event | Price | When |
|---|---|---|
| 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 | $0 | Dead 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.
Related actors
- Sitemap Scraper — list every URL of a site, then filter the PDF links and feed them here.
- TED EU Tenders Scraper — EU public tenders; extract the text of tender documents with this Actor.
- Bulk Website Screenshot — full-page screenshots of many URLs.
- SEO On-Page Audit — titles, meta, headings and structured data of web pages.