PDF to Text & Markdown OCR — Scanned PDF, DOCX, PPTX to Text
Pricing
Pay per event
PDF to Text & Markdown OCR — Scanned PDF, DOCX, PPTX to Text
PDF to text and PDF to Markdown converter with OCR for scanned PDFs (27 languages). Also DOCX, PPTX, XLSX, EPUB and images to text. LLM-ready. $0.003/document + $0.0003/text page (first 30 only) or $0.002/OCR page. Input: {"url":"https://arxiv.org/pdf/1706.03762"}.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Isaac
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Security
Limited permissionsShare
PDF to Text & PDF to Markdown Converter with OCR (Scanned PDF, DOCX, PPTX)
Convert PDFs, Word (DOCX), PowerPoint (PPTX), Excel (XLSX), EPUB e-books, HTML files and images into clean plain text and LLM-ready Markdown, in bulk, with automatic OCR for scanned pages. Paste a list of document URLs and get back one tidy result per document (or per page): full text, Markdown with headings and lists, page counts, OCR stats and document metadata. Built for RAG pipelines, vector databases, AI agents, search indexing, data extraction and archiving.
- 📄 PDF to text and PDF to Markdown: keeps reading order on multi-column layouts (research papers, reports, newsletters)
- 🔍 Automatic OCR of scanned or image-only pages, and of pages whose fonts produce garbled text. 27 OCR languages
- 📝 DOCX to Markdown (Word) and image to text (PNG, JPEG, TIFF incl. multi-page, WebP, BMP, GIF)
- 📊 PowerPoint (PPTX) to Markdown with slide markers, Excel (XLSX) to Markdown tables (one section per sheet), EPUB e-books and HTML files to clean Markdown (powered by the open-source MIT-licensed markitdown library)
- 🧩 One result per page option, so you can chunk and cite page numbers in RAG
- 🧹 Strips repeating headers, footers and page numbers; joins hyphenated words; turns dot leaders into clean tables of contents
- 🏷️ Metadata: title, author, subject, keywords, creator, producer, creation/modification dates, PDF version, page size, encryption
- 🔗 Works with direct links, Google Drive and Dropbox share links. Handles redirects, slow servers and retries
- 💸 Pay only for what converts. Broken links, web pages, unsupported or oversized files cost nothing. No monthly fee, no start fee
What can I use it for?
- Feed documents to ChatGPT, Claude, LangChain, LlamaIndex or a vector database. Markdown output keeps structure, which makes embeddings and answers better than raw text.
- Digitise scanned archives, such as old contracts, government releases, invoices, forms and books, into searchable text.
- Monitor and index reports, like annual reports, central-bank statements, tenders and research papers, alongside a scraper.
- Bulk-extract text from thousands of PDFs found by another Apify Actor (pass its dataset URLs straight in).
How to use it
- Add one or more document URLs to Document URLs (the form is prefilled with a working example).
- Pick Markdown + plain text, Markdown only or Plain text only.
- Leave OCR = Auto (recommended). Pages that already contain text are read directly; only scanned pages are OCRed.
- Click Start. Results appear in the Output tab, and you can export them as JSON, CSV, Excel or HTML, or read them through the API.
Input example
{"urls": ["https://arxiv.org/pdf/1706.03762","https://github.com/tesseract-ocr/test/raw/main/testing/phototest.tif"],"outputFormat": "both","outputMode": "document","ocrMode": "auto","ocrLanguages": ["eng"]}
Output example (one document)
{"url": "https://arxiv.org/pdf/1706.03762","success": true,"fileType": "pdf","pageCount": 15,"textPages": 15,"ocrPages": 0,"words": 6280,"markdown": "### Attention Is All You Need\n\nAshish Vaswani ...\n\n#### Abstract\n\nThe dominant sequence transduction models ...","text": "Attention Is All You Need\n\nAshish Vaswani ...","metadata": { "title": null, "producer": "pdfTeX-1.40.25", "pdfVersion": "1.5", "encrypted": false, "pageFormat": "letter" },"durationMs": 312}
In page mode you get one item per page with page, ocr, ocrConfidence, text and markdown. Turn on Also save .md / .txt files to get downloadable files in the key-value store. Very large documents are always saved as files, and their dataset text is shortened.
Use in ChatGPT or Claude
Add this tool to your AI assistant as a custom connector (MCP server) with this URL:
https://mcp.apify.com?tools=poised_beardlichen/pdf-to-text-markdown-ocr
- ChatGPT: Settings → Apps & Connectors → Create (needs Developer mode), paste the URL, choose OAuth and sign in to Apify.
- Claude: Settings → Connectors → Add custom connector, paste the URL, then click Connect.
Runs go on your own Apify account at the same per-event prices, so the free plan's monthly credit applies.
Try it free
Apify's free plan includes $5 of usage every month, no credit card. That covers roughly 1,500 one-page PDFs or about 2,000 scanned (OCR) pages a month on this Actor, so you can test it on your real documents before paying anything.
Pricing
Pay-per-event, no subscription and no start fee:
| Event | Price |
|---|---|
| Document converted | $0.003 |
| Text page (from the PDF's own text layer; per Word page; per PowerPoint slide; per Excel sheet; per ~3,000 characters of EPUB/HTML), first 30 text pages per document only | $0.0003 |
| OCR page (scanned page or image that produced text) | $0.002 |
Long digital documents are capped. You pay for at most 30 text pages per document, so a 500-page book costs the same as a 30-page report.
Examples:
- 10-page digital PDF: $0.006
- 10-page scanned PDF: $0.023
- 500-page digital PDF: $0.012
- 20-slide PowerPoint deck: $0.009
- 3-sheet Excel workbook: $0.0039
- Full EPUB novel (~160k characters): $0.012 (text pages capped at 30)
- 1,000 single-page receipt photos: $5.00
How does the price compare?
Totals calculated from each Actor's public Apify Store pricing (free-tier prices, checked 19 October 2026):
| Actor | 10-page digital PDF | 10-page scanned PDF |
|---|---|---|
| This Actor | $0.006 | $0.023 |
| amanatools/pdf-ocr-extractor | $0.017 | $0.157 |
| ely_source/pdf-ocr | OCR only | $0.21 |
| nerolabs/bulk-ocr-image-pdf-to-text | OCR only | $0.05 |
| nidamindllc/doc-ocr | OCR only | $0.04 |
This Actor handles digital PDFs, scans, DOCX, PPTX, XLSX, EPUB, HTML and images in one run, and digital pages are capped at 30 per document.
Blank pages are not charged as OCR pages, and failed documents are free. Set Maximum cost per run in Apify and the Actor stops cleanly at your limit. It never runs over.
Tips for best results
- Use OCR languages that match the document. 1–3 languages give the best speed and accuracy.
- Raise OCR resolution to 300 DPI for tiny print, or lower it to 150 for large, clean scans.
- Use Max pages per document to sample huge files cheaply.
- Use OCR = Never for pure digital PDFs when you want the lowest price and the fastest speed.
Popular conversions
PDF to text
Extract plain text from any PDF URL, in bulk, with reading order kept on multi-column pages.
Scanned PDF to text (PDF OCR)
Image-only or scanned PDFs are OCR'd automatically in 27 languages; you only pay the OCR rate for pages that need it.
PDF to Markdown for LLMs and RAG
Headings, lists and tables come out as Markdown, ready to chunk into a vector database (Pinecone, Qdrant, pgvector) or to send to ChatGPT, Claude or a LangChain/LlamaIndex pipeline.
DOCX to Markdown, PPTX to Markdown, XLSX to Markdown
Word, PowerPoint and Excel files become clean Markdown (one section per slide or sheet).
Use it in n8n, Make or Zapier
Call the actor with the Apify node or app and pass a PDF URL (for example a Google Drive or Dropbox share link); the text comes back in the dataset.
FAQ
How do I convert a scanned PDF to text? Paste its URL. Pages without a text layer are OCR'd automatically; no settings needed.
Can it handle thousands of PDFs? Yes. Add many URLs to one run; each document is processed independently and broken links are free.
Is it an alternative to Adobe, LlamaParse or Google Document AI? For text and Markdown extraction, yes, at $0.003 per document plus a few tenths of a cent per page, with no subscription. It does not do form-field or handwriting extraction.
Does it work on scanned PDFs? Yes. Auto mode detects pages without a usable text layer and runs Tesseract 5 (LSTM) OCR on them. It also catches PDFs whose embedded fonts produce garbage characters.
Can it read tables? Table text is extracted in reading order, but it is not rebuilt as Markdown tables.
Password-protected PDFs? PDFs that open without a password (owner-password restrictions only) work. PDFs that need a password to open are reported as errors and are not charged.
Is my data stored? Files are downloaded into the run's temporary container and deleted after conversion. Results live only in your own Apify storage.
Does it convert web pages? HTML files whose URL ends in .html or .htm are converted. Other URLs that return a web page are skipped free of charge unless you turn on convertHtml, so a wrong link never costs you anything. Broken links, unsupported files and files with no text are never charged.
Can AI agents use it? Yes. It runs with limited permissions and simple pay-per-event pricing, and it works from the Apify API, MCP server and integrations (Make, Zapier, n8n, LangChain).
How much does a huge PDF cost? Text pages are capped at 30 per document, so a 500-page digital PDF costs $0.012 in total. OCR pages are always charged per page, because each one needs real compute.
What file size is supported? Up to 500 MB per file (default limit 100 MB), with thousands of pages per document.
Which languages can OCR read? English, German, French, Spanish, Italian, Portuguese, Dutch, Polish, Swedish, Danish, Norwegian, Finnish, Czech, Turkish, Russian, Ukrainian, Greek, Arabic, Hebrew, Hindi, Vietnamese, Indonesian, Thai, Chinese (Simplified and Traditional), Japanese and Korean.
Use it from the API
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("poised_beardlichen/pdf-to-text-markdown-ocr").call(run_input={"urls": ["https://arxiv.org/pdf/1706.03762"]})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["markdown"][:500])
cURL (waits for the run and returns the results)
curl -X POST "https://api.apify.com/v2/acts/poised_beardlichen~pdf-to-text-markdown-ocr/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \-H "Content-Type: application/json" \-d '{"urls": ["https://arxiv.org/pdf/1706.03762"]}'
Use with AI agents and RAG (MCP)
Give Claude, Cursor or any MCP client the ability to read PDFs through the Apify MCP server:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com/?tools=poised_beardlichen/pdf-to-text-markdown-ocr","headers": { "Authorization": "Bearer <YOUR_APIFY_TOKEN>" }}}}
For RAG, turn on page mode. Each page becomes its own item with a page number, ready to chunk, embed and cite. It also works with LangChain's ApifyWrapper, LlamaIndex, Make, Zapier and n8n.
Calling it from an AI agent or a script (async pattern)
A single text PDF usually finishes in under 30 seconds. Long scanned PDFs (OCR) take longer, roughly 1–3 seconds per page. The Apify MCP server waits only about 30–45 seconds for a run before it returns. So for batches, slow pages, or whenever a call returns before the run is done, start the run and fetch the results afterwards rather than waiting on it:
- Start the run:
POST https://api.apify.com/v2/acts/poised_beardlichen~pdf-to-text-markdown-ocr/runswith input such as{"url": "https://arxiv.org/pdf/1706.03762"}. The response containsdata.id(the run ID) anddata.defaultDatasetId. - Wait for it to finish: poll
GET https://api.apify.com/v2/actor-runs/<runId>?waitForFinish=60untilstatusisSUCCEEDED. - Fetch the results:
GET https://api.apify.com/v2/datasets/<defaultDatasetId>/items?clean=true.
Send your token as Authorization: Bearer <APIFY_TOKEN>. Through MCP, if the call returns a run ID instead of results, use the server's run-status and dataset tools (e.g. get-actor-run, then get-dataset-items) with that ID. For small, quick jobs you can use the synchronous endpoint POST /v2/acts/poised_beardlichen~pdf-to-text-markdown-ocr/run-sync-get-dataset-items instead, which waits for up to 300 seconds.
Other tools by us
- Audio & Video Transcriber (Whisper): MP3, WAV, M4A and MP4 to text, timed segments and SRT subtitles at $0.006 per audio minute.
- Bulk Email Verifier: syntax, MX, disposable and role-address checks at $0.30 per 1,000 emails.
- Website Screenshot & PDF API: bulk screenshots and PDFs of any page with cookie banners and pop-ups removed.
- Website Screenshot & PDF for AI Agents: fast single-page screenshots and PDFs for agents, from $0.0015 per screenshot.
- Image to Text OCR API: extract text from PNG, JPEG, TIFF and WebP images in 27 languages.
- Bulk PageSpeed & Lighthouse Checker: Lighthouse scores, Core Web Vitals and top fixes for many URLs.
- Website Tech Stack Detector: CMS, ecommerce, analytics, CDN and 7,600+ other technologies behind any website.
- Research Paper Search: arXiv, PubMed and Crossref papers plus legal open-access full text from $0.0015 per paper.
- SEC EDGAR Financials & Filings: US company financials, filings and 10-K sections as compact JSON.
- Website Legitimacy & Scam Check: domain age, SSL, look-alike brands, VAT and LEI signals at $0.008 per site.
- Bulk Phone Number Validator: validity, E.164 format, line type and region for any number at $0.70 per 1,000.
- Company Contact & Profile Extractor: generic emails, phones, socials and profile from any company website at $0.004 per site.
- UK & Australia Company Check: ABN, ACN, ASIC and Companies House status and red flags from $0.003 per company.
- Company Careers & Open Jobs Lookup: open jobs from Greenhouse, Lever, Ashby and more at $0.0015 per job.
- Domain Intelligence: WHOIS/RDAP, DNS, SPF/DMARC/DKIM and SSL for any domain at $0.002 per domain.
- YouTube Transcript Scraper: YouTube captions to text, timestamped segments or SRT at $0.004 per video.
Support
Found a document that doesn't convert well? Open an issue on the Actor's Issues tab with the URL. We usually fix problems within a few days.