Document Extractor: PDF, Word & Image to Markdown (OCR) avatar

Document Extractor: PDF, Word & Image to Markdown (OCR)

Pricing

from $2.00 / 1,000 page processeds

Go to Apify Store
Document Extractor: PDF, Word & Image to Markdown (OCR)

Document Extractor: PDF, Word & Image to Markdown (OCR)

Document extractor that converts PDF, DOCX and image files into clean text, Markdown or tables, with OCR for scanned pages. One row per document, paid per page processed. Ideal for RAG pipelines and AI agents.

Pricing

from $2.00 / 1,000 page processeds

Rating

0.0

(0)

Developer

Vícente Matallana

Vícente Matallana

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

16 hours ago

Last modified

Share

PDF, Word & Image to Text, Markdown & Tables (OCR)

Turn PDF, DOCX and image files into clean text, Markdown or tables, with OCR for scanned pages. Give it a list of file URLs and get one row per document, ready for a RAG pipeline, an AI agent, a spreadsheet or a database.

What it does

  • Downloads each file from its URL and detects the type from the content, not the file name: PDF, DOCX (Word) or image (PNG, JPEG, TIFF, BMP, GIF, WebP).
  • Digital PDFs: reads the text layer and detects tables, page by page.
  • Scanned PDFs and images: reads the text with OCR (Tesseract), in English, Spanish or both. A PDF that mixes digital and scanned pages is handled page by page.
  • Word documents: keeps headings, bulleted and numbered lists and tables, so the Markdown mirrors the document's structure.
  • Returns, for each document, its url, fileType, pageCount, pagesProcessed and ocrPages, the content in the output mode you choose (text or markdown), every table as rows of cells in tables, and the file's metadata (title, creation and modification dates). It never returns the author or any other personal field from the file properties.
  • A file that cannot be processed (broken link, unsupported type, corrupted or password-protected file) gets a row with an error message and is not charged; the rest of the run continues.

Input example

{
"urls": [
"https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf",
"https://example.com/reports/sales_report.pdf"
],
"outputMode": "markdown",
"maxPagesPerDocument": 100,
"ocrLanguages": ["eng"]
}
  • urls (required): absolute http(s) URLs of the files.
  • outputMode: markdown (default), text or tables. Tables come back in every mode; tables returns only them.
  • maxPagesPerDocument: process at most this many pages of each file, from the first one (1 to 1,000, default 100).
  • ocrLanguages: languages of the scanned text, eng and/or spa (default eng).

Output example

One row per URL, in the same order as the input:

{
"url": "https://example.com/reports/sales_report.pdf",
"fileType": "pdf",
"pageCount": 3,
"pagesProcessed": 3,
"ocrPages": 0,
"text": null,
"markdown": "Quarterly Sales Summary\n\n| Region | Units | Revenue |\n|---|---|---|\n| North | 120 | 4800 |\n| South | 95 | 3800 |\n| West | 60 | 2400 |\n\nSecond page. Sales grew in every region during the quarter.\n\nThird page. Figures are in US dollars.",
"tables": [
{
"page": 1,
"rows": [["Region", "Units", "Revenue"], ["North", "120", "4800"], ["South", "95", "3800"], ["West", "60", "2400"]]
}
],
"metadata": {
"title": "Quarterly Sales Summary",
"createdAt": "2026-01-15T09:30:00Z",
"modifiedAt": null
},
"error": null
}

A failed URL looks like this:

{
"url": "https://example.com/reports/missing.pdf",
"fileType": null,
"pageCount": null,
"pagesProcessed": null,
"ocrPages": null,
"text": null,
"markdown": null,
"tables": null,
"metadata": null,
"error": "Download failed: HTTP 404"
}

How pages are counted: a PDF page is a page; each image is one page (each frame of a multi-page TIFF counts; an animated GIF is one page); a DOCX has the pages Word last laid out, or one page per 3,000 characters when the file has no layout information (for example, files generated by a script). When a page limit applies, pagesProcessed is lower than pageCount.

Export the dataset as JSON, CSV, Excel or HTML, or read the Overview and Tables views in the Console.

Pricing

This Actor uses pay-per-event pricing. You pay only for pages processed successfully, and platform usage is included in the price. See the Pricing tab for the current price per event.

EventWhen it is charged
page-processedOnce per page extracted from a document that returns a row without error, OCR included

Files that fail are not charged. Pages beyond maxPagesPerDocument are not read and not charged. If you set a maximum charge for the run, the Actor processes only the pages that fit in it, keeps every row produced so far and stops cleanly.

Free plan limits

Users on the Apify Free plan can process up to 10 documents per run and 20 pages per document. The Actor processes the first 10 documents and the first 20 pages of each, saves them and finishes with a clear message. Paid plans have no per-run document limit and use maxPagesPerDocument (up to 1,000 pages).

Use cases

  • RAG and AI agents: convert PDFs and Word files into Markdown that keeps headings and tables before chunking and embedding them.
  • Scanned archives: get searchable text out of scanned contracts, invoices and forms with OCR.
  • Table extraction: pull tables out of financial reports and price lists straight into rows for a spreadsheet or database.
  • Document pipelines: schedule runs or call the Actor from Make, Zapier, n8n or the API whenever new files land in storage.
  • Spanish documents: OCR in Spanish, with accents and ñ, for Latin American and Spanish paperwork.

Comparison with alternatives

OptionGood forTrade-off
This ActorBatches of mixed PDF, DOCX and image files from the Console, the API, a schedule or an AI agent, paid per pageOCR handles printed text, not handwriting; layout of complex multi-column pages is simplified
Online PDF convertersConverting one file by handOne file at a time, no API, no Markdown or tables as data
Cloud document AI servicesForms, handwriting and key-value extractionNeed an account, credentials and setup, and are priced for enterprise volumes
Your own script with open-source librariesFull controlYou host it, install OCR and maintain the edge cases of every file type

You are responsible for having the right to process the documents you send. The Actor stores nothing outside the run's dataset.