AWS Textract Alternatives: 5 Tools Compared for Document-to-Markdown Conversion
AWS Textract Alternatives: 5 Tools Compared
Amazon Textract is AWS's machine learning service for pulling text, tables, and form data out of scanned documents, and it's a solid choice if you're already deep in the AWS ecosystem. But if your actual goal is clean Markdown for a RAG pipeline or an LLM prompt, Textract leaves you with a lot of glue code to write. This guide covers five real alternatives, what each does better, and when reaching for file2markdown saves you from standing up any infrastructure at all.
Why Look Beyond AWS Textract?
Textract is a capable OCR engine, but people go looking for alternatives when they run into:
- No native Markdown output. The API returns a
Blocksarray ofLINE,WORD, and table-cell objects with geometry coordinates. Turning that into headings, lists, and Markdown tables takes another layer: code you write and maintain yourself, or AWS's open-source Textractor library, which can linearize a response to Markdown withto_markdown(). - Synchronous calls are single-page only. Per AWS's own documentation (checked 2026-11-07), the synchronous operations such as
DetectDocumentTextandAnalyzeDocumentwork on single-page documents. A multi-page PDF needs the asynchronous API: the file has to sit in an S3 bucket, you callStartDocumentTextDetection, and in AWS's documented flow the completion status goes to an SNS topic that you read through an SQS queue or a Lambda function before you fetch the results. - Per-feature pricing adds up. As of 2026-11-07, Amazon's pricing page lists $0.0015 per page for Detect Document Text, $0.015 per page for Tables, and $0.05 per page for Forms (all first-1M-page rates, US West Oregon). Combine Tables and Forms on the same page and you pay both rates: a 20-page form-heavy contract processed with Tables + Forms runs about $1.30 before you've written a line of parsing code. The free tier only lasts three months, and only new AWS customers get it.
- AWS account overhead. IAM roles, S3 buckets for async jobs, and SDK credentials are setup you don't need if all you want is a
.mdfile.
The right alternative depends on which of these is actually your bottleneck.
The Alternatives at a Glance
| Tool | Best for | OCR for scans | Output | Setup |
|---|---|---|---|---|
| Docling | Complex PDF layouts, local-only | Yes, built in | Markdown, JSON | Python library |
| Unstructured | Broad format coverage, typed elements | Yes, ocr_only and hi_res strategies | Typed elements; Markdown via elements_to_md() | Python library / hosted API |
| MarkItDown | Simple Office docs, minimal setup | Yes, via optional markitdown-ocr plugin | Markdown | Python library |
| Marker | Fast, high-fidelity PDF batches | Yes, via Surya VLM | Markdown, JSON | Python library / CLI |
| file2markdown | No install, browser or MCP | Scanned PDFs on Pro | Markdown | Web / MCP |
Docling: Best for Complex PDF Layouts, Fully Local
Docling, started at IBM Research, ships with, per its own documentation (checked 2026-11-07), "extensive OCR support for scanned PDFs and images" and runs entirely locally, which matters if documents can't leave your infrastructure. It outputs a single clean Markdown or JSON document rather than Textract's raw block array.
from docling.document_converter import DocumentConverter
converter = DocumentConverter()
result = converter.convert("contract.pdf")
print(result.document.export_to_markdown())
Trade-off: you're installing and maintaining a Python library and its model weights instead of calling a managed API. See Docling vs Unstructured for a deeper comparison.
Unstructured: Best for Broad Format Coverage
Unstructured also does OCR on scans: its open-source library has an OCR-based ocr_only strategy and a layout-model hi_res strategy for image-based files (per its partitioning docs, checked 2026-11-07). Unlike Textract, it handles email, HTML, and a wider document-type range than just scanned images and PDFs. The catch: partition() returns typed elements (Title, NarrativeText, Table), not a finished document. Its elements_to_md() helper renders them as Markdown, but every title comes out as a # heading and tables come out as HTML, so expect some cleanup.
MarkItDown: Best for Simple Office Documents, Now With Optional OCR
Microsoft's MarkItDown is the lightest dependency of the group. As of 2026-11-07, its GitHub README documents OCR support through an optional markitdown-ocr plugin that extracts text from embedded images using LLM vision, and lists Azure Content Understanding as a cloud option for scanned PDFs. Without the plugin or an Azure service, MarkItDown's PDF handling stays text-layer-only: fine for born-digital files, not for scans.
Marker: Best for Fast, High-Fidelity PDF Batches
Marker runs its own local inference server (vLLM on NVIDIA GPUs, llama.cpp on CPU or Apple Silicon) and, per its GitHub documentation (checked 2026-11-07), OCRs "garbled or scanned pages" through its Surya vision-language model. It outputs Markdown by default, with tables, equations, and code blocks included, which skips the block-to-Markdown translation step Textract requires.
file2markdown: No AWS Account, Browser or MCP
The open-source tools above are libraries you install and maintain (Unstructured also offers a hosted API). file2markdown.ai skips that: drop a file in the browser, or connect the MCP server to Claude, Cursor, or another agent, and get Markdown back directly, with no IAM roles, no S3 buckets, and no polling loop for multi-page PDFs. What it doesn't have is a REST API or SDK: the MCP server is its only programmatic interface, and it's built for AI clients, so a backend service that calls Textract today is better served by one of the libraries above.
Free use gets 5 conversions a day with no account, or 15 a day with a free account (25MB per file, no scanned-PDF OCR). Pro ($15/month or $108/year) adds unlimited conversions, 100MB files, OCR for scanned PDFs (up to 50 pages per file, using Claude's vision model), image OCR over MCP, and up to 10 files at once in the web app. Image OCR on web uploads is free.
Try it directly at /convert/pdf-to-markdown or /convert/image-to-markdown. Both hand back clean Markdown instead of a Blocks array; scanned PDFs need Pro, while JPG and PNG images are OCR'd for free.
How to Choose
- Need Textract's forms/ID/invoice-specific parsers → stay on Textract. None of these alternatives replicate
AnalyzeExpenseorAnalyzeIDexactly. - Complex PDFs, must stay local → Docling. Layout-aware parsing (reading order, tables) without an API call.
- Mixed formats (email, HTML, PDF) in one pipeline → Unstructured.
- Mostly clean Office files, light scanning needs → MarkItDown.
- High-volume PDF batches, need speed → Marker.
- Don't want to install or maintain anything, and you convert files by hand or from an AI client → file2markdown.ai.
For the step after conversion, see the guide on chunking Markdown for vector databases or the full RAG document prep pipeline.
Frequently Asked Questions
Is there a free alternative to AWS Textract?
Yes. Docling (MIT), Unstructured (Apache 2.0), and MarkItDown (MIT) are free and open source, with no per-page fee when you run them yourself. Marker's code is Apache 2.0, but its model weights are free only for research, personal use, and startups under $5M in funding or revenue; commercial use beyond that needs a licence from its maker, Datalab. file2markdown's web converter is also free for up to 15 conversions a day with a free account, though scanned-PDF OCR specifically requires Pro.
Does AWS Textract have a free tier?
Yes. As of 2026-11-07, AWS's free tier gives new AWS customers three months of free usage with monthly caps that vary by operation, for example 1,000 pages for Detect Document Text, but only 100 pages for Forms, Tables, or Layout analysis. After three months, or past those caps, standard per-page pricing applies.
Can AWS Textract output Markdown directly?
No. The Textract API returns a structured JSON Blocks array (lines, words, table cells, geometry), not Markdown; AWS's open-source Textractor library can turn that response into Markdown with to_markdown(). Docling, MarkItDown, Marker, and file2markdown output Markdown directly. Unstructured returns typed elements, which its elements_to_md() helper can render as Markdown.
Which Textract alternative is best for a RAG pipeline?
If your documents stay in your own infrastructure, Docling and Marker both parse layout locally, without an external API. If you want to skip installing anything, file2markdown's MCP server converts documents to Markdown mid-conversation in Claude, Cursor, or another MCP client; it isn't a REST API, so for an unattended ingestion job one of the libraries is the better fit. For the full pipeline from source document to vector-ready chunks, see RAG document prep: PDF to Markdown to chunks.
The Markdown Memo
A fortnightly note for lawyers, researchers, accountants, and anyone else drowning in PDFs, scans, and decks. No spam.