PDF Text, Tables & OCR Extractor (Markdown output) avatar

PDF Text, Tables & OCR Extractor (Markdown output)

Pricing

from $3.00 / 1,000 pdf processeds

Go to Apify Store
PDF Text, Tables & OCR Extractor (Markdown output)

PDF Text, Tables & OCR Extractor (Markdown output)

Turn PDFs into usable data: per-page text, tables as JSON, document metadata and a Markdown version with headings, plus OCR only where a page has no text layer. Handles page ranges, size caps and encrypted files gracefully. Built for RAG pipelines and document processing.

Pricing

from $3.00 / 1,000 pdf processeds

Rating

0.0

(0)

Developer

Paul Vasquez

Paul Vasquez

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

25 days ago

Last modified

Share

PDF to Text, Markdown & Tables Extractor with OCR

Convert PDFs to clean text, Markdown and table JSON for RAG pipelines, search indexes and research. Scanned pages get OCR automatically; pages with a text layer don't. About $3 per 1,000 PDFs plus $0.50 per 1,000 text pages; OCR pages cost $8 per 1,000.

Give it a list of PDF links. For each PDF you get one dataset row with page-by-page text, document metadata and counts, plus three files you can download: the full text, a Markdown version with headings, and every table as JSON.

What data you get

One row per PDF:

FieldWhat it holds
source, fileName, fileSizeBytesThe PDF link, its file name and size in bytes
pageCount, pagesProcessedTotal pages in the PDF, and how many you selected and processed
textPages, ocrPagesPages that had text in the PDF itself, and pages read with OCR
tablesNumber of tables found
metadataTitle, author, subject, creator, producer, created and modified dates (as stored in the PDF; empty values are null)
fullTextThe document text, up to the first 50,000 characters
pagesFor each page: page number, character count, whether OCR was used, and the first 2,000 characters
textKey, markdownKey, tablesKeyNames of the three downloadable files for this PDF
warnings, errorProblems on single pages, or why the whole PDF failed

Three files per PDF, saved in the run's key-value store (open the run's Storage tab, then Key-value store):

  • TEXT-….txt: the complete text, with no length cap.
  • MARKDOWN-….md: the text as Markdown, one ### Page N section per page, with # and ## headings guessed from font sizes.
  • TABLES-….json: every table as {page, index, rows}, where rows is a list of rows of cells.

A SUMMARY record in the same store lists totals and the time taken per PDF.

How much does it cost?

You pay per event:

EventPriceWhen it is charged
PDF file$0.003 ($3 per 1,000)Once for each PDF that opens and has at least one selected page
Text page$0.0005 ($0.50 per 1,000)Once for each selected page that has text in the PDF itself
OCR page$0.008 ($8 per 1,000)Once for each selected page read with OCR

Examples for PDFs of 10 pages each:

PDFs10 text pages each10 scanned (OCR) pages each
100100 x $0.003 + 1,000 x $0.0005 = $0.80100 x $0.003 + 1,000 x $0.008 = $8.30
1,000$8.00$83.00
10,000$80.00$830.00

Worked example (the prefilled input). The arXiv paper 1706.03762 has 15 pages, all with a text layer, so no OCR runs: 1 PDF file + 15 text pages = $0.003 + $0.0075 = $0.0105.

What is free: PDFs that fail to download, broken or password-protected (encrypted) PDFs, PDFs over your page or size limit, OCR attempts that fail, and a page selection that matches no pages. These produce a row with an error or warning and no charge.

Keep the bill predictable: set a maximum charge per run in the run options. The actor checks the budget before each PDF and stops before charging for a PDF that would go over it. To save money on long documents, use pages to process only the pages you need.

How to use it

  1. Paste one or more PDF links into the pdfUrls field. Links must be public; no login.
  2. Optional: set pages (for example 1-5,8), turn tables or Markdown off, or change ocrMode.
  3. Click Start.
  4. Read the rows in the Output tab, or download the TEXT, MARKDOWN and TABLES files from the run's key-value store. You can also call the actor from the Apify API, a schedule or an integration.

Input example

This is the prefilled input. Every other option keeps its default.

{
"pdfUrls": ["https://arxiv.org/pdf/1706.03762"]
}

Main options:

OptionDefaultWhat it does
pdfUrlsnonePublic PDF links (HTTP or HTTPS)
pagesall pagesOne-based page ranges, for example 1-5,8
extractTexttrueExtract text (turning it off also turns OCR off)
extractTablestrueExtract tables that are drawn in the PDF
ocrModeautoauto: OCR a page when it has fewer than 20 characters of text; always: OCR every selected page; never: no OCR
ocrLanguageengOCR language; only English is installed
outputMarkdowntrueSave the Markdown file
maxPages200Skip (free) any PDF with more pages than this
maxFileMb50Skip (free) any PDF larger than this many MB
timeoutSecs30Time limit for each download attempt and each OCR page

Output example

Real rows from a run on the Apify platform (build 0.1.1, 2026-09-26). Long text is shortened with ….

sourcepageCounttextPagesocrPagestableserror
https://arxiv.org/pdf/1706.037621515010null
https://www.census.gov/retail/mrts/www/data/pdf/ec_current.pdf3302null

The arXiv row as JSON:

{
"source": "https://arxiv.org/pdf/1706.03762",
"fileName": "1706.03762",
"fileSizeBytes": 2215244,
"pageCount": 15,
"pagesProcessed": 15,
"metadata": {
"title": null,
"author": null,
"subject": null,
"creator": "LaTeX with hyperref",
"producer": "pdfTeX-1.40.25",
"createdAt": "D:20240410211143Z",
"modifiedAt": "D:20240410211143Z"
},
"textPages": 15,
"ocrPages": 0,
"tables": 10,
"fullText": "Provided proper attribution is provided, Google hereby grants permission to …",
"textKey": "TEXT-d24af53204893ac108957023.txt",
"markdownKey": "MARKDOWN-d24af53204893ac108957023.md",
"tablesKey": "TABLES-d24af53204893ac108957023.json",
"pages": [
{ "page": 1, "chars": 4068, "ocr": false, "text": "Provided proper attribution is provided, Google hereby grants permission to …" },
{ "page": 2, "chars": 4312, "ocr": false, "text": "1 Introduction\n\nRecurrent neural networks, long short-term memory [13] and gated recurrent [7] neural networks …" }
],
"warnings": [],
"error": null
}

The start of the Census report's Markdown file:

### Page 1
FOR IMMEDIATE RELEASE
TUESDAY, AUGUST 18, 2026, AT 10:00 A.M. EDT
## QUARTERLY RETAIL E-COMMERCE SALES
## 2nd QUARTER 2026

FAQ

Does it work on scanned PDFs? Yes. In the default auto mode, a page with fewer than 20 characters of text gets OCR in English. Such a page can be charged both a text page and an OCR page if it had a few characters of text: in our platform test, a one-line PDF ("Dummy PDF file", 14 characters) counted as one text page and one OCR page.

Can OCR read other languages? Not in this build. Only the English OCR language pack is installed.

Does it find tables on scanned pages? No. Tables come only from PDFs that contain real text and table structure, not from images.

Can I process only some pages? Yes, with pages, for example 1-5,8. You are charged only for the pages you select. Pages past the end of the document are ignored.

Password-protected PDFs? Not supported. They return an error row and are not charged.

What is the maximum size? 200 pages and 50 MB by default. You can raise them to 10,000 pages and 500 MB, but large files take longer and use more memory. A PDF over the page limit is skipped whole, even if you selected only a few pages.

Why is fullText cut off? The dataset row keeps the first 50,000 characters. The TEXT file has everything.

Does it summarize or rewrite the text? No. It keeps the wording of the PDF.

Limitations

  • Reading order in multi-column layouts, math notation, merged cells and tables without borders can come out imperfect. In some PDFs, several table rows land in one cell separated by line breaks. Check tables against the original before you rely on them.
  • Markdown headings are guesses from font size. OCR pages get only a page heading.
  • OCR accuracy depends on scan quality. Only English OCR is available.
  • Links must be public HTTP or HTTPS URLs. Pages behind a login, or links that return a web page instead of a PDF, fail (free).
  • PDFs are processed one after another, so a very large batch takes a while.
  • The text is what the PDF contains. The actor does not check whether the document is accurate.

Independent tool. Not affiliated with arXiv, the U.S. Census Bureau or any PDF publisher. The examples use public documents; you are responsible for having the right to process the PDFs you submit.