PDF Text & Table Extractor: OCR, DOCX, PPTX to Data, RAG Chunks
Pricing
Pay per event
PDF Text & Table Extractor: OCR, DOCX, PPTX to Data, RAG Chunks
Extract text from PDF, DOCX, PPTX, HTML, TXT, MD and EML by URL. One document in, hundreds of rows out: typed elements (titles, paragraphs, lists, tables), RAG-ready chunks and a per-document summary. Unofficial wrapper around unstructured (Apache-2.0).
Pricing
Pay per event
Rating
0.0
(0)
Developer
daehwan kim
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
PDF Text Extractor — OCR, PDF, DOCX & PPTX to Structured Data + RAG Chunks
Turn any document URL into clean, structured data. Give this Actor one or more public document URLs — PDF, DOCX, PPTX, HTML, TXT, Markdown, EML, or PNG/JPG/TIFF/BMP images — and it returns a flat dataset of typed elements (titles, paragraphs, list items, tables), RAG-ready text chunks and one summary row per document. Scanned PDFs are OCR'd automatically (Tesseract) when no text layer is found, and image URLs are read with OCR directly. No manual copy-paste, no file uploads: paste URLs, get rows.
Powered by unstructured (Apache-2.0), the open-source document-parsing engine with 15,000+ GitHub stars that backs many production RAG pipelines. This is an unofficial wrapper; see the disclaimer below.
What does PDF Text Extractor do?
For every document URL you provide, three kinds of rows are produced:
| Row type | What it is | Typical volume |
|---|---|---|
document-summary | One row per document: page count, element counts by type, table count, languages, total characters | 1 per document |
chunk | Section-aware text chunks (chunk-by-title) sized for embedding into a vector DB — RAG-ready | 10–60 per document |
element | Optional (off by default): one row per structural element — Title, NarrativeText, ListItem, Table (with HTML), page number, hierarchy (parentId) | 100–600 per document |
By default a 15-page research paper yields ~30 rows (1 summary + ~29 chunks); with includeElements on it yields 400+ rows. Tables keep their structure as textAsHtml.
Why use it?
- RAG pipelines — skip the preprocessing step: URLs in, embedding-ready chunks out, on a schedule, via API.
- Research & analysis — batch-convert reports, papers and filings into rows you can filter in Excel or a database.
- Content workflows — pull structured text out of decks (PPTX), articles (HTML) and docs (DOCX) with one tool instead of five.
- Apify platform — run on a schedule, call via API, pipe results into any integration, download as JSON/CSV/Excel.
How to use it
- Open the Input tab.
- Paste one or more document URLs (up to 50 per run).
- Optionally toggle element rows / chunk rows and set the chunk size.
- Click Start. Download the dataset as JSON, CSV, Excel or HTML, or read it via the API.
Input example
{"documentUrls": ["https://arxiv.org/pdf/1706.03762","https://example.com/report.docx"],"includeChunks": true,"chunkMaxChars": 1800,"maxResults": 500}
Output example
{"rowType": "element","sourceUrl": "https://arxiv.org/pdf/1706.03762","fileType": "pdf","elementIndex": 12,"elementType": "NarrativeText","text": "The dominant sequence transduction models are based on complex recurrent...","textLength": 312,"pageNumber": 1,"elementId": "8c2035…","parentId": "1b6f4a…","languages": ["eng"]}
Pricing
Four charge events:
| Event | When it is charged |
|---|---|
| Run start | Once per run, when the run starts |
| Document summary | Per delivered document-summary row (one per parsed document) |
| RAG chunk | Per delivered chunk row |
| Structured element | Per delivered element row (only when includeElements is on) |
Typical run cost (measured on a 15-page research paper):
| Scenario | Rows | What you pay |
|---|---|---|
| 1 paper, default settings (summary + chunks) | ~30 | ≈ $0.32 (1 start + 1 summary + 29 chunks) |
1 paper with includeElements on | ~423 | ≈ $0.52 (adds 393 element rows) |
Control your spend with:
maxResults— a hard cost ceiling per run (default 500 rows),includeElements/includeChunks— pick the row types you need,- the run's maximum charge limit in Run options.
Fetch status and quality information (HTTP status, page counts, truncation flags) are provided as data fields so you can judge every row yourself.
Free plan: runs parse up to 3 documents and return up to 25 rows per run — prioritised so you get the document summaries and RAG chunks first, then sample elements.
OCR (scanned PDFs & images)
- Scanned/image-only PDFs: when a PDF has no text layer, the Actor automatically re-reads it with OCR (Tesseract, built into the image — nothing downloads at runtime). The document's summary row carries
"ocrApplied": trueso you can tell OCR'd text apart. - Image URLs (PNG, JPG, TIFF, BMP) are always read with OCR — paste a receipt or screenshot URL and get its text as rows.
- Languages: English (
eng, default) and Korean (kor) — set"ocrLanguages": ["eng", "kor"]. Other codes are ignored. - Turn OCR off entirely with
"enableOcr": false. - OCR rows are ordinary result rows — they are charged under the same events as any other row (no OCR surcharge).
Limitations
- OCR accuracy depends on scan quality; OCR output has no styling-based structure, so most OCR'd text arrives as paragraph elements.
- Legacy binary formats (
.doc,.ppt) are not supported — convert them to DOCX/PPTX first. - Files are fetched by URL (up to 50 MB each); there is no direct file upload.
- Only publicly accessible URLs — documents behind logins cannot be fetched.
FAQ & disclaimers
Is this the official unstructured Actor? No. This is an unofficial wrapper around the open-source unstructured library (Apache-2.0). This Actor is not affiliated with, endorsed by, or sponsored by Unstructured Technologies, Inc. All trademarks belong to their respective owners.
Legal — you are responsible for having the right to access and process the documents you submit, for complying with each source's Terms of Service and applicable copyright law, and you act as the data controller for any personal data contained in the documents you process.
Found a bug or need a feature? Open an issue on the Issues tab — it is checked regularly.