PDF Text, Tables & OCR Extractor (Markdown output)
Pricing
from $3.00 / 1,000 pdf processeds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
25 days ago
Last modified
Categories
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:
| Field | What it holds |
|---|---|
source, fileName, fileSizeBytes | The PDF link, its file name and size in bytes |
pageCount, pagesProcessed | Total pages in the PDF, and how many you selected and processed |
textPages, ocrPages | Pages that had text in the PDF itself, and pages read with OCR |
tables | Number of tables found |
metadata | Title, author, subject, creator, producer, created and modified dates (as stored in the PDF; empty values are null) |
fullText | The document text, up to the first 50,000 characters |
pages | For each page: page number, character count, whether OCR was used, and the first 2,000 characters |
textKey, markdownKey, tablesKey | Names of the three downloadable files for this PDF |
warnings, error | Problems 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 Nsection per page, with#and##headings guessed from font sizes.TABLES-….json: every table as{page, index, rows}, whererowsis 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:
| Event | Price | When 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:
| PDFs | 10 text pages each | 10 scanned (OCR) pages each |
|---|---|---|
| 100 | 100 x $0.003 + 1,000 x $0.0005 = $0.80 | 100 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
- Paste one or more PDF links into the
pdfUrlsfield. Links must be public; no login. - Optional: set
pages(for example1-5,8), turn tables or Markdown off, or changeocrMode. - Click Start.
- 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:
| Option | Default | What it does |
|---|---|---|
pdfUrls | none | Public PDF links (HTTP or HTTPS) |
pages | all pages | One-based page ranges, for example 1-5,8 |
extractText | true | Extract text (turning it off also turns OCR off) |
extractTables | true | Extract tables that are drawn in the PDF |
ocrMode | auto | auto: OCR a page when it has fewer than 20 characters of text; always: OCR every selected page; never: no OCR |
ocrLanguage | eng | OCR language; only English is installed |
outputMarkdown | true | Save the Markdown file |
maxPages | 200 | Skip (free) any PDF with more pages than this |
maxFileMb | 50 | Skip (free) any PDF larger than this many MB |
timeoutSecs | 30 | Time 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 ….
| source | pageCount | textPages | ocrPages | tables | error |
|---|---|---|---|---|---|
| https://arxiv.org/pdf/1706.03762 | 15 | 15 | 0 | 10 | null |
| https://www.census.gov/retail/mrts/www/data/pdf/ec_current.pdf | 3 | 3 | 0 | 2 | null |
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 1FOR IMMEDIATE RELEASETUESDAY, 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.