PDF, Image & Word to Text and Markdown (OCR)
Pricing
from $3.00 / 1,000 page extracteds
PDF, Image & Word to Text and Markdown (OCR)
Returns the text, Markdown, tables and page facts of a PDF, PNG, JPEG, TIFF or Word .docx file, one dataset row per page, plus RAG chunks with page spans. Reads the text layer, runs OCR only on scanned or unreadable pages, and flags illegible pages. Input: URL, upload or base64. First page free.
Pricing
from $3.00 / 1,000 page extracteds
Rating
0.0
(0)
Developer
Atarivo Enterprises Inc.
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
This Actor turns a PDF, a scanned page, a PNG/JPEG/TIFF image or a Word .docx file into clean text and Markdown, one result row per page, with tables, page facts and RAG-ready chunks. It reads the PDF text layer first and runs OCR only on pages that are scanned, empty or unreadable, so you pay for OCR only where it was needed. To try it, keep the sample input (a small two-page PDF with one table) and press Start; the run takes a few seconds.
What does the PDF, Image & Word to Text and Markdown extractor do?
- Returns one dataset row per page with
text,markdown,tables,facts,ocrandlegible, plus a finaldocumentrow with links to the full Markdown file and the chunks JSON. - PDF to Markdown: headings are detected from font size, paragraphs are re-joined, bullet lists are kept, and ruled tables become Markdown tables.
- OCR for scanned PDFs and images: pages without a usable text layer are rendered at
300 dpi and read with Tesseract (English). Every page gets a legibility verdict, so
"unreadable" is an explicit
legible: false, not a silent empty string. - PDF table extraction: each table comes back as a list of rows and as Markdown.
- RAG chunks: text split at paragraph and table boundaries into chunks of about
chunkCharscharacters, each with the first and last page it came from. - Page facts: size in points, rotation, fonts used, image count, character count, where the text came from (text layer, OCR, docx) and a 0–1 legibility score.
- Accepts a URL, a file upload (stored in your key-value store) or base64.
- Makes network calls only to fetch the URL you supply. It calls no AI model: the same file gives the same result every time.
How to use the PDF to text and Markdown extractor
- Paste a link to your file into Document URL or upload, or upload the file there. If the file is not online, paste it base64-encoded into Document as base64 instead.
- Optionally choose the OCR mode, Max pages, the Outputs you want and the Chunk size.
- Press Start. Open the Output tab for the page rows, or download
document.mdandchunks.jsonfrom the links in the last (document) row.
Calling it from an AI agent or the API: {"url": "https://example.com/report.pdf"} is the
whole input. The description above is also this Actor's tool description in the Apify MCP
server.
Pricing
| Event | What you pay for | Price |
|---|---|---|
page-extracted | One page delivered with text, Markdown and facts | $0.003 |
page-ocr | Add-on: a page whose text came from OCR | $0.010 |
table-extracted | Add-on: one table delivered as rows and Markdown | $0.005 |
The first page of every run is free, add-ons included. Blank pages are free. A Word .docx
file has no fixed pages, so it is billed as one page-extracted per 3,000 characters of
extracted text, rounded up, with a minimum of one (a 7,500-character document is 3 pages);
each 3,000-character part is one result row. OCR is never charged for .docx. You pay only for
results that were saved. Set Max cost per run to cap a run: the Actor stops cleanly at the
cap, says so in its status message, and marks the document row
truncated: true, reason: "budget"Input
| Field | Type | Required | Notes |
|---|---|---|---|
url | string | one of url / base64 | http(s) link or Console upload. Up to 50 MB, fetched within 60 s. Private, loopback, link-local and cloud-metadata addresses are refused, also after redirects. |
base64 | string | one of url / base64 | The file, base64-encoded. Up to 20 MB decoded. |
fileName | string | no | Used in messages and in the chunks file. The type is read from the bytes. |
ocr | auto / never / always | no | Default auto: OCR only empty or illegible pages. Images always need OCR. |
maxPages | integer | no | Default 500, minimum 1, maximum 2,000. |
outputs | list | no | Any of text, markdown, chunks, tables. Default: all. |
chunkChars | integer | no | Default 1,500, minimum 200, maximum 20,000. |
Supported files: PDF (text or scanned), PNG, JPEG, TIFF (every frame is a page) and Word .docx. Password-protected PDFs and legacy .doc files are refused with a clear message.
{ "url": "https://example.com/annual-report.pdf", "ocr": "auto", "maxPages": 500 }
Output
One row per page:
{"type": "page","page": 2,"text": "Harvest by crop\nTotals were weighed at the shed scale every Saturday morning.\n...","markdown": "### Harvest by crop\n\n...\n\n| Crop | Beds planted | Harvest (kg) |\n|---|---|---|\n| Tomato | 12 | 340 |","tables": [{"index": 0, "rows": [["Crop", "Beds planted", "Harvest (kg)"], ["Tomato", "12", "340"]], "markdown": "..."}],"facts": {"width_pt": 612.0, "height_pt": 792.0, "rotation": 0, "fonts": ["Helvetica", "Helvetica-Bold"],"images": 0, "chars": 276, "text_source": "text-layer", "legibility_score": 1.0,"legibility_reason": "", "tables": 1, "ocr_attempted": false},"ocr": false,"legible": true}
The last row is the document summary:
{"type": "document", "pages": 2, "pages_processed": 2, "tables_found": 1, "markdown_url": "...", "chunks_url": "...", "truncated": false, "reason": null, ...}document.md and the chunks as chunks.json ({"chunks": [{"index", "text", "page_start", "page_end", "chars"}]}Your document is processed inside your run only. It is never copied out of your run's storage, and its text is never logged. Run storage is kept for your plan's data-retention period (7 days for unnamed storages on most plans), then deleted by Apify. Download anything you want to keep.
Other Actors by Atarivo
Every Atarivo Actor follows the same rules: limited permissions, no "+usage" pricing, charges only after results are saved, and at least one result row per run.
FAQ, disclaimers and support
When does OCR run? With ocr: auto, only on a page whose text layer is empty or reads as
noise (too few real words). A short page of real words, such as "Appendix B", keeps its text
layer. ocr: always OCRs every PDF page; ocr: never never does.
What does legible: false mean? The page's final text failed the legibility check: it is
empty, too short, or mostly not real words. Treat that page's text with care, or review the
page by eye.
Which languages does OCR read? English. Text-layer PDFs and .docx files work in any language; the legibility verdict is tuned for English words.
Does it work with the Apify MCP server and AI agents? Yes. Pass a url (or base64) and
read the page rows or the chunks file.
Is it legal to process my documents here? Only process documents you have the right to process. Under Apify's Standard Actor Contract, Atarivo acts as a processor of the document data you supply.
Something is wrong. Open an issue on the Issues tab with the run ID. Issues are answered within 14 days.
This Actor is provided as is, under Apify's Standard Actor Contract. It is not affiliated with or endorsed by Adobe, Microsoft or the Tesseract project.