PDF, Word & PowerPoint to Markdown + RAG Chunks
Pricing
from $2.00 / 1,000 page converteds
PDF, Word & PowerPoint to Markdown + RAG Chunks
Convert PDF, DOCX and PPTX to clean Markdown with headings, lists and tables, then split into token-sized, heading-aware chunks with page numbers for RAG, vector databases and LLMs. Removes repeated headers/footers. Google Drive & Dropbox links work.
Pricing
from $2.00 / 1,000 page converteds
Rating
0.0
(0)
Developer
oqen
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Security
Limited permissionsShare
Turn PDFs, Word documents and PowerPoint decks into clean Markdown that LLMs read well, and into chunks ready for a vector database: token-counted, split along headings, with the heading path and page numbers attached to every chunk.
Use it to load company documents into a RAG chatbot, feed reports to GPT/Claude, build a searchable knowledge base, or migrate documents into Notion or a wiki.
What the Markdown keeps
| DOCX | PPTX | ||
|---|---|---|---|
Headings (#, ##, ...) | from font size and bold (body text size is detected per document) | from Word heading styles + Title | one ## Slide N: title per slide |
| Tables → Markdown tables | ruled/grid tables (borderless tables stay as text in reading order) | all tables | tables, plus chart data as a table |
| Lists | bullets and numbering | bullets and numbering | bullet levels |
| Clean-up | repeated headers/footers and page numbers removed, hyphenated line breaks joined, rotated margin text and figure labels skipped, multi-column reading order | images dropped | speaker notes (optional) |
Scanned (image-only) PDF pages are detected and reported in scannedPages. They need OCR, which this Actor doesn't do, and they are not charged.
Chunks built for retrieval
- Token-sized with the OpenAI
cl100ktokenizer (chunkSizeTokens, default 500) with optional overlap - Heading-aware: a new section starts a new chunk, and each chunk is prefixed with its path, e.g.
[Annual Report > 3. Risks > Currency] - Tables are never cut mid-row. Long tables are split between rows and the header row is repeated in every piece.
pageStart/pageEndon each chunk for citations ("see page 7")- Stable
chunkId(<documentId>-0003) so re-runs can upsert into Pinecone, Qdrant, Weaviate, pgvector...
Input
{ "documents": [{ "url": "https://arxiv.org/pdf/1706.03762" }, { "url": "https://drive.google.com/file/d/<id>/view" }],"chunkSizeTokens": 500, "chunkOverlapTokens": 50, "outputMode": "chunks" }
Google Drive, Google Docs/Slides (exported as DOCX/PPTX) and Dropbox share links are converted to direct downloads. The file must be shared as "anyone with the link".
Output (chunk mode)
{ "fileName": "report.pdf", "documentId": "3ab677dde1ab", "title": "Quarterly Report", "status": "ok","chunkId": "3ab677dde1ab-0002", "chunkIndex": 2, "chunkCount": 7, "tokens": 276,"headingPath": "Quarterly Report 2026 > 1. Summary > 1.1 Regional breakdown", "pageStart": 1, "pageEnd": 1,"text": "[Quarterly Report 2026 > 1. Summary > 1.1 Regional breakdown]\n\n| Region | Q1 | Q2 | Q3 | Change % |\n|---|---|---|---|---|\n| South 0 | 8,233 | ...","markdownUrl": "https://api.apify.com/v2/key-value-stores/.../records/0001-report.md" }
In documents mode you get one item per file with the whole markdown string. Either way, the full .md file and a .meta.json (pages, tables, scanned pages) are in the key-value store.
Tested on
Our test corpus checks: a Word report and the same report exported to PDF (3 tables, 100% of table cells reproduced exactly in both), a two-column arXiv paper (correct section headings, side stamp removed), the IRS W-9 form, a PPTX with nested bullets, a table and speaker notes, and a scanned PDF (correctly flagged). Bad links, HTML pages instead of files, 404s and password-protected PDFs return clear errors.
Pricing
Pay per event: page-converted, one per PDF page with text, per slide, or per 500 words of DOCX/Markdown. Scanned pages, failed downloads and unsupported files are free. Use maxPagesPerDocument and Max cost per run to cap spend.