PDF & Image Text Extractor: Markdown, OCR, RAG Chunks avatar

PDF & Image Text Extractor: Markdown, OCR, RAG Chunks

Pricing

from $2.00 / 1,000 pdf reads

Go to Apify Store
PDF & Image Text Extractor: Markdown, OCR, RAG Chunks

PDF & Image Text Extractor: Markdown, OCR, RAG Chunks

Extract text, Markdown and metadata from PDF files and images, with OCR for scanned pages. Paste PDF links, image links or web pages: PDFs linked on a page are found for you. Page-by-page text, AI-ready chunks, page ranges. No browser.

Pricing

from $2.00 / 1,000 pdf reads

Rating

0.0

(0)

Developer

Hydro Core

Hydro Core

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 hours ago

Last modified

Share

Turn PDF files and images into clean, searchable text. Paste links to PDFs, images or web pages that link to PDFs, and get the text of every document as Markdown or plain text, plus the title, author, dates and page count. Scanned pages are read with OCR automatically, and you can split each document into AI-ready chunks with page numbers for ChatGPT, RAG pipelines and vector databases.

No browser, no proxies, no API keys. You pay only for documents that were read successfully.

What you get

For every file, one row in your dataset with:

  • Text as Markdown (headings, lists, paragraphs) or as plain text, or both
  • Metadata: title, author, subject, keywords, creator app, creation and modification dates, language, PDF version, page count, file size, and whether the PDF has a form or is encrypted
  • OCR details: how many pages were scanned images and read with OCR, and the average OCR confidence (0-100)
  • Page-by-page text (optional): the text of each page, and whether that page came from OCR
  • AI chunks (optional): pieces of about the size you choose, with overlap and the page numbers each chunk came from
  • Where it was found: when you paste a web page, every PDF row shows the page it was found on and the link text (for example "Annual Report 2025")
  • Clear errors: files that could not be read are listed with the reason (not found, too large, password needed, not a PDF). These rows are free.

How it works

  1. Normal PDFs (with a text layer) are read directly: fast and exact.
  2. Scanned pages (pages that are just a picture) are detected automatically and read with OCR. You choose the language.
  3. Images (PNG, JPG, WebP, BMP, GIF, TIFF) are read with OCR.
  4. Web pages: if a link is a web page, the actor finds every link to a .pdf file on it and reads those PDFs. You can keep only PDFs whose link contains words such as "annual report" or "2025".

Quick start

  1. Click Try for free.
  2. Under Files or pages, paste one link per line, for example:
    • https://www.irs.gov/pub/irs-pdf/fw9.pdf (a PDF)
    • https://www.irs.gov/forms-pubs/about-form-w-9 (a web page that links to PDFs)
  3. Pick Markdown or Plain text, and click Start.
  4. Open the Output tab. Download as JSON, CSV or Excel, or connect the dataset to Make, Zapier, n8n, Google Sheets or your own code via the Apify API.

Tip: to process the results of another scraper, put its dataset ID in Dataset ID and the name of its link field in URL field in dataset.

Example output

A real row from a test run (text shortened):

{
"url": "https://www.irs.gov/pub/irs-pdf/fw9.pdf",
"type": "pdf",
"status": "ok",
"fileName": "fw9.pdf",
"fileSizeBytes": 140815,
"title": "Form W-9 (Rev. March 2024)",
"subject": "Request for Taxpayer Identification Number and Certification",
"author": "SE:W:CAR:MP",
"creator": "Designer 6.5",
"creationDate": "2024-03-06T13:18:13.000Z",
"language": "en-US",
"pdfVersion": "1.7",
"hasForm": true,
"pageCount": 6,
"pagesProcessed": 6,
"ocrPages": 0,
"isScanned": false,
"wordCount": 6280,
"charCount": 37694,
"markdown": "# Form W-9\n\n(Rev. March 2024)\n\n# Request for Taxpayer Identification Number and Certification\n\nDepartment of the Treasury Internal Revenue Service Go to www.irs.gov/FormW9 for instructions and the latest information. …",
"pages": [{ "page": 1, "ocr": false, "ocrConfidence": null, "markdown": "…" }],
"chunks": [{ "index": 0, "text": "…", "pageStart": 1, "pageEnd": 1, "charCount": 1325 }],
"processedAt": "2026-11-03T02:53:06.010Z"
}

A scanned PDF row looks the same, with "ocrPages": 5, "isScanned": true and an ocrConfidence such as 58 (for an old typewritten scan).

Pricing

Pay per event. You only pay for what was actually read. Prices on the Free plan:

WhatPrice
Run start$0.001 per GB of run memory (charged once; one charge at the default 512 MB)
PDF read (any number of text pages)$0.003 per PDF
Page or image read with OCR$0.004 per page or image
Web page scanned for PDF links$0.001 per web page
Failed, skipped or not-found filesfree

Paid Apify plans get lower prices: down to $0.002 per PDF and $0.0027 per OCR page. Images are charged only the OCR price, not the PDF price.

Examples (Free plan prices):

  • 100 normal PDFs: $0.001 + 100 × $0.003 = about $0.30
  • 1,000 normal PDFs: about $3.00
  • One 40-page scanned PDF: $0.001 + $0.003 + 40 × $0.004 = about $0.16
  • 200 receipt or screenshot images: $0.001 + 200 × $0.004 = about $0.80
  • A company "Investors" page with 12 PDF reports: $0.001 + $0.001 + 12 × $0.003 = about $0.04

To cap your spend, set Max cost per run in the run options. The actor never goes over it: it stops taking new files when the limit is reached, and if that happens in the middle of a scanned PDF, the remaining scanned pages are skipped and noted on the row. Use Pages to read or Max pages per document to read only the pages you need.

Input options

OptionWhat it does
Files or pagesPDF, image or web page links, one per line
Dataset ID / URL fieldRead links from another actor's dataset
Find PDF links on web pagesCollect the PDFs a web page links to (on by default)
Only PDFs whose link containsKeep only matching PDF links, e.g. "2025", "annual report"
Text formatMarkdown, plain text, or both
Include text page by pageAdds a pages list
AI chunk size / overlapAdds a chunks list for RAG and vector databases
Pages to reade.g. 1-3, 7, 10-
Max pages per documentRead only the first N pages
OCRAuto (only scanned pages), Always, or Off
OCR languages30 languages, including German, French, Spanish, Arabic, Hindi, Japanese, Korean and Chinese
PDF passwordFor protected PDFs
Respect robots.txtOn by default

FAQ

Do I need any coding skills? No. Paste links, click Start, and download the results as Excel, CSV or JSON.

Which files work? PDF files and images (PNG, JPG, WebP, BMP, GIF, TIFF) that are reachable by a public link. Web pages are scanned for links to PDF files.

What is the difference between Markdown and plain text? Markdown keeps the structure: headings (from larger fonts), bullet lists and paragraphs. It works well with ChatGPT, Claude and other AI tools. Plain text keeps the original line breaks of the PDF.

How does it know a page is scanned? In Auto mode, a page with almost no text layer (fewer than 25 characters, adjustable) is treated as a picture and read with OCR. Normal pages are read directly, so you only pay OCR prices for pages that need it.

How accurate is the OCR? Good on clean printed text, such as scans of letters, contracts, forms and screenshots (confidence scores of about 90-95 in our tests). It is weaker on handwriting, photos taken at an angle, and very noisy or faded scans, where some text can be missed or wrong. Each row includes an ocrConfidence score so you can spot weak pages.

Can it read tables? The text of tables is extracted, row by row, but not as a structured table. If you need cells and columns, use the text as input to a table tool or an AI model.

Why are my scanned files slow? OCR uses a lot of processing power. With the default 512 MB of memory a full scanned page usually takes 20-40 seconds (a 30-page scan took about 15 minutes in our tests). Give the run 2-4 GB of memory in the run options to read scanned pages up to 4-8 times faster. The OCR price per page stays the same; only the start fee goes up ($0.001 per GB).

Can it find PDFs on a website for me? Yes. Paste the web page (for example an "Investor relations" or "Downloads" page). Every PDF linked from that page is read, with the page and link text saved on each row. It reads links that are in the page's HTML; links added later by JavaScript or hidden behind a login are not found. It does not follow links to other pages.

Does it work with password-protected PDFs? Yes, if you know the password: enter it under PDF password.

What happens if a file fails? You get a row with status: "error" and the reason, such as "HTTP 404" or "file is over the 50 MB limit". Failed files are never charged.

What exactly am I charged for? A small start fee per run, one "PDF read" for each PDF that was read successfully (no matter how many text pages it has), one "OCR page" for each scanned page or image read with OCR (blank pages where OCR finds no text are free), and one "Web page scanned" for each web page you paste that is searched for PDF links (also when no PDFs are found on it). Error rows are free, and there is no extra charge per dataset row.

How big can files be? Up to 50 MB by default (adjustable up to 500 MB). For very large files, give the run 1 GB of memory or more.

Is it legal to extract text from PDFs? The actor only downloads files from public links, respects each site's robots.txt by default, and waits between requests to the same site. You are responsible for having the right to use the documents you process, especially copyrighted or personal data.

Support

Found a file that does not work, or need a feature? Open an issue on the Issues tab with the link (if it is public) and what you expected. Every issue is read.