<

8 Best Unstructured.io Alternatives for Document Parsing in 2026

Moving an Unstructured prototype to production often means replacing the parser, the chunker, the connectors, or all three. This guide compares 8 alternatives, including Foxit PDF Services API, LlamaParse, Reducto, and Docling, by cost, table handling, chunking, and file coverage. You also get the element mappings, billing math, and test plan you need before you switch.
Developer at three monitors showing parsed JSON, a PDF to OCR to parser pipeline, and an invoice data comparison table

If your prototype uses the unstructured library, moving to production raises a practical question: what needs to change? Unstructured describes the library in its own docs as “Not designed for production scenarios.” Costs on long reports or table errors in a RAG index may also prompt a switch from the library or Transform API.

Those are the 3 moments that send engineers looking. In Moda’s 6 Sep 2026 run of Unstructured OSS 0.27.5 on a 48-page NIST AI RMF PDF, the library kept 36 of 40 checked statements and missed 4 table-row continuations. One document, one run, but it illustrates the failure mode.

“Unstructured” now names several products. The open-source unstructured library partitions and chunks on your machines. The Transform API parses single documents via POST. Pipelines connects sources, partitions, chunks, embeds, and writes to destinations. Business adds dedicated infrastructure. Replacing Unstructured can mean replacing the parser, the chunker, the connectors, or all three.

In this article, we compare 8 alternatives (our PDF Services API, LlamaParse, Reducto, Docling, Marker and Datalab, Mistral OCR, Azure Document Intelligence, and Google Document AI Layout Parser) by what they replace, their capabilities and costs, and the work involved in switching.

What Unstructured gives you today

What does unstructured.io do? Its parsing layer produces typed elements such as Title, NarrativeText, ListItem, Table, and Image, with metadata including page numbers, coordinates, parent_id, and text_as_html for tables. Unstructured Pipelines adds the managed workflow for chunking, enrichment, embedding, and delivery to a destination.

Unstructured home page with the headline We structure your unstructured data and a Support for 65+ File Types badge

Unstructured’s home page.

Is unstructured.io free? The open-source library is free under Apache-2.0. The Transform API includes 10,000 pages once per account, then costs $0.015 a page, and Transform requests fail after the free pages until you upgrade to pay as you go.

Unstructured product

What it does

Price

Limits

Open-source library (unstructured, Apache-2.0)

Partitions documents into elements and chunks them on your own machines

Free. You run the dependencies (Poppler, Tesseract) and models

Intended for quick prototyping and “Not designed for production scenarios.” No VLM, no fine-tuned OCR, no by-page or by-similarity chunking, no embeddings in the core library

Transform API (POST /api/v2/parse)

Returns Markdown or elements, with optional schema extraction

10,000 pages free once per account, then $0.015 a page

9 extensions (.bmp, .docx, .heic, .jpeg, .jpg, .pdf, .png, .pptx, .tiff), 100 MB, 1 document per request, balanced or best profile only, rate limits not published

Transform MCP server

Partitions, enriches, chunks, and embeds files from an AI tool

Same per-page rate

49 extensions, including .eml, .msg, .html and .xlsx; 50 MB per file

Pipelines

Connects sources, partitions with Auto, VLM, High Res or Fast, then chunks, enriches, embeds, and writes to destinations

Pay as you go at the same per-page rate

Workflows and jobs; 40+ connectors

Business

Dedicated instance, in-VPC on AWS, Azure or GCP, or bare metal

Custom

Multi-user workspaces

Under Transform billing, each PDF page, PPTX slide, or TIFF image counts as 1 page. DOCX files use page metadata when available, otherwise file size divided by 100 KB, and most other files count 1 page per 100 KB.

The library is deprioritized, not discontinued. Unstructured no longer actively recommends or promotes the library, Ingest, the JavaScript SDK, and the partition endpoint. The library still ships on PyPI (0.27.36 on 30 Oct 2026, after 6 releases between 19 and 27 Oct) and no end-of-life date is published.

File-type coverage depends on which product you call. The Transform API accepts 9 extensions, the Transform MCP server accepts 49, and the open-source library 27. The Transform API also documents an Extract endpoint for schema-based extraction.

The strengths are real. Pipelines brings 40+ connectors with change detection and incremental processing, chunking by character, title, page, or similarity plus contextual chunking, and embeddings from providers such as OpenAI, Bedrock, VoyageAI, and IBM. Compliance coverage includes SOC 2 Type 2, ISO 27001, and HIPAA, listed in its trust center, plus FedRAMP High, authorized 12 Dec 2025.

Before you compare anything, list what your pipeline actually uses today, including connectors, chunking strategy, element metadata, file types, and embeddings. That list decides which alternative can replace it.

Grid showing which Unstructured pipeline stages each of 8 Unstructured.io alternatives replaces, from connect to persist

Each alternative replaces a different slice of Unstructured’s pipeline. Only the partition stage is covered by every tool.

Our top picks by reason for switching

The right alternative depends on which part of Unstructured you’re replacing (the parser, the chunker, or the connectors) and where your documents can be processed. 

For financial PDFs with broken tables, shortlist parsers that return table structure as cell grids or HTML tables with spans, such as Reducto r-1, LlamaParse on Cost-effective or higher, Azure Document Intelligence Layout, our PDF Structural Extraction, and Docling’s TableFormer, then test on your own worst pages.

If you’re leaving Unstructured because…

Pick

Why it fits

Per-page fees add up on long PDFs

Foxit PDF Services API

1 credit per successful request regardless of page count within supported limits; PDF to Markdown, PDF Structural Extraction (Trial) and OCR on a single credit pool

You want a managed ingestion service with connectors

LlamaParse

130+ formats, 4 parse tiers from $1.25 to $31.25 per 1,000 pages on Pro, Google Drive, SharePoint, S3 and Confluence connectors on paid plans, 10,000 free credits a month

Complex tables, and chunks straight from the parser

Reducto

r-1 Parse at $10 per 1,000 pages (r-1 mini at $1), 6 chunk modes and embedding-optimized table summaries

You want an open-source library you run yourself

Docling

MIT-licensed, reads PDF, Office, HTML and .eml or .msg email, HybridChunker, Docling Serve REST API with chunk endpoints

Local Markdown conversion with a hosted fallback

Marker and Datalab

Marker code is Apache-2.0 with separately licensed weights. Hosted Convert from $0.50 (lite) to $10 (accurate) per 1,000 pages, with chunks output

Low-cost Markdown with layout blocks at volume

Mistral OCR

OCR 4.1 at $4 per 1,000 pages, or $2 with the Batch API. Per-page Markdown with blocks, boxes and confidence

Your stack runs on Azure

Azure Document Intelligence

Layout returns Markdown with HTML tables at $10 per 1,000 pages, reads PDF, images, DOCX, XLSX, PPTX and HTML, and offers Read and Layout containers

You want chunking inside the parser on Google Cloud

Google Document AI Layout Parser

$10 per 1,000 pages including initial chunking, with chunk size in tokens and ancestor headings

These are starting points, not exclusive use cases. The feature tables show what each tool covers, and the “Moving from Unstructured” rows explain the output mappings and integration changes to plan for.

Create a free Foxit developer account and turn your first PDF into Markdown or structured JSON with the PDF Services API.

Foxit PDF Services API

Foxit PDF Services API product page with the headline Cloud-Native PDF Control, Built for Scale and a Start for Free button

Our PDF Services API product page.

Our PDF Services API handles the PDF parsing step, with Markdown, plain text, and typed JSON through PDF Structural Extraction (Trial). Parsing shares a credit pool with conversion, OCR, redaction, and other PDF operations.

Feature

Details

Covers

Parsing step for PDFs, including PDF to Markdown, PDF Structural Extraction (Trial) for typed JSON, PDF to Text, and an OCR endpoint for scans. No chunking, embeddings, or connectors.

Inputs

Parsing endpoints take PDFs. Word (.doc, .docx), Excel, PowerPoint (.ppt, .pptx), images (JPEG, PNG, TIFF, BMP, GIF), text, HTML, web pages by URL, and Markdown convert to PDF first on the same account. Uploads up to 100 MB. No email route.

Outputs

PDF to Markdown with tables as Markdown pipes (default) or HTML tables, and page headers and footers only when requested. Structural Extraction returns a ZIP with JSON (schema v1.0.7), extracted images and table renditions, 12 element types with reading order, bounding boxes and table cell relationships.

Scans and tables

The OCR endpoint takes language codes and makes scanned PDFs searchable. Structural Extraction returns no text on image-only PDFs, so OCR them first. Tables keep cell structure in Structural Extraction.

Chunking

The API includes no chunking. Title, head, and paragraph elements arrive in reading order, so split on them in your own code or framework.

Pricing

1 credit per successful request, regardless of file size or page count within supported limits. Startup costs $1,750 a year for 5,000 credits; Business costs $4,500 a year for 15,000. The free Developer plan includes 500 credits a year. Uploads, task polling, and downloads use no credits, and failed requests are not billed.

Limits and deployment

Asynchronous: submit, poll the task, download. 15 requests a minute per application in sandbox, 100 in production. Cloud only. A delete endpoint permanently removes uploaded and generated files, and no retention period is published. Our cloud-hosted PDF APIs are covered by SOC 2 Type II audits, and we support HIPAA BAAs.

Moving from Unstructured

title and head replace Title, paragraph replaces NarrativeText, table replaces Table, and headerFooter covers Header, Footer, and page numbers. The 12 documented types include no list-item type. Non-PDF files need a convert call first, and scans need an OCR call first. See the element-mapping table later in this article.

Where our PDF Services API stands out. 

A successful parsing call costs 1 credit for either a 200-page annual report or a 2-page invoice, within supported limits. 

Whether that costs less than a per-page API depends on the competing tier and how much of your annual credit pool you use. Conversion, OCR, and redaction use the same pool, but each processing call consumes a separate credit.

Our PDF Structural Extraction API is currently in trial and uses schema version v1.0.7. The API may change, so validate responses against the schema your application expects. Structural Extraction returns a ZIP archive containing JSON, extracted images, and table renditions, so your pipeline needs an unzip step before parsing the JSON.

Prerequisites. To run the example below, you need:

Create a working folder for the script’s temporary files and output:

mkdir foxit-parse && cd foxit-parse

If jq --version fails, install jq first. On macOS with Homebrew, run this command:

brew install jq

On Debian or Ubuntu, run this one instead:

sudo apt-get install -y jq

Create your account. Enter your email on the sign-up page to activate the free Developer plan, which needs no credit card.

Foxit sign-up form for the free Developer plan, listing live API credentials, a working cURL, and 500 free credits a year

Our sign-up form activates the free Developer plan.

Get your credentials. After you sign up, open the console and copy the client ID and client secret from the Make your first call panel. The script reads both from environment variables.

Foxit developer console dashboard with the Make your first call panel showing client ID and client secret fields

The console after sign-up, with credentials pre-filled for a first call.

What a run looks like. Every parsing call follows the same asynchronous pattern, so you can see it end to end with curl and jq. This block sets your credentials, defines 3 small helpers, and converts our sample invoice PDF to Markdown.

Run this command from your terminal:

export FOXIT_CLIENT_ID="your_client_id"
export FOXIT_CLIENT_SECRET="your_client_secret"
API=https://na1.fusion.foxit.com/pdf-services/api

foxit() { curl -s -H "client_id: $FOXIT_CLIENT_ID" -H "client_secret: $FOXIT_CLIENT_SECRET" "$@"; }

submit() {
  foxit -w "\nHTTP %{http_code}\n" -H "Content-Type: application/json" -d "$2" "$API/documents/$1" > submit.txt
  cat submit.txt
  TASK=$(head -1 submit.txt | jq -r '.taskId // empty' 2>/dev/null)
  [ -n "$TASK" ] || { echo "Submit failed. Check your credentials and credit balance."; return 1; }
  while true; do
    foxit "$API/tasks/$TASK" > task.json && jq -c . task.json
    STATUS=$(jq -r '.status // "ERROR"' task.json 2>/dev/null || echo ERROR)
    case "$STATUS" in
      COMPLETED) return 0 ;;
      FAILED|ERROR) echo "Task did not complete."; return 1 ;;
    esac
    sleep 5
  done
}

download() { foxit -o "$1" "$API/documents/$(jq -r .resultDocumentId task.json)/download"; }

curl -sL -o invoice.pdf https://github.com/lucienchemaly/foxit-demo-templates/raw/main/invoice_table_test.pdf
UPLOAD=$(foxit -F "[email protected]" "$API/documents/upload")
DOC=$(echo "$UPLOAD" | jq -r '.documentId // empty' 2>/dev/null)
[ -n "$DOC" ] && echo "documentId: $DOC" || echo "Upload failed: $UPLOAD"
[ -n "$DOC" ] && submit convert/pdf-to-markdown "{\"documentId\": \"$DOC\"}" && download invoice.md

The foxit helper sends your credentials as headers. submit posts the operation, prints its response and HTTP status, then polls GET /tasks/{taskId} every 5 seconds until COMPLETED. 

It stops if no taskId is returned, the task reports FAILED, or a poll response has no status. The script uploads the sample PDF, submits pdf-to-markdown, then downloads the result using resultDocumentId. 

Only the processing call uses a credit. This example has no overall polling timeout, so add one before using it in an unattended pipeline.

The expected output should look like the following:

documentId: 6aecea9c9036bb553d572b55
{"taskId":"6aecea9d4c382b4f0d060b10"}
HTTP 202
{"taskId":"6aecea9d4c382b4f0d060b10","status":"COMPLETED","progress":100,"resultDocumentId":"6aecea9ec07a611874a472e8"}

The script prints the documentId from the upload, the submit response with its HTTP 202 status, and each poll result until the task reports COMPLETED with a resultDocumentId. Your IDs will differ, and a slower task prints one or more IN_PROGRESS lines before the final one.

The default output renders tables as Markdown pipes. The downloaded invoice.md should look like the following:

# INVOICE

Foxit DocGen API Sample Template

Bill To: Meridian Financial Group
Invoice Number: INV-00471
Invoice Date: 01/15/2024

| # | Description | Qty | Unit Price | Line Total |
| --- | --- | --- | --- | --- |
| 1 | API Integration Consulting | 10 | $ 150.00 | $1,500.00 |
| 2 | Compliance  Review | 5 | $ 200.00 | $1,000.00 |
|  |  |  | Subtotal: | $2,500.00 |

## Total Due: $2,500.00

Thank you for your business. Payment is due within 30 days of the invoice date.

Common mistakes. These are the failures a first run most often hits:

  • Wrong client ID or secret : The upload returns "allow":false with a reason such as Invalid credentials, and the script prints Upload failed and stops. Copy both values again from the console, without surrounding spaces or quotes, and re-run the export lines.
  • No credits left: If the sample upload returns "allow":false, the script prints Upload failed and stops. Check Credits Remaining in the dashboard. Credit-consuming processing calls pause when the balance reaches 0; restore credits through an upgrade, a purchased top-up, or the annual reset. Error responses can differ by endpoint.
  • jq not installed : The script prints Upload failed: followed by a response that contains a documentId, then stops. The upload worked, but the script can’t read the JSON without jq. Run jq --version, and install jq from the Prerequisites if it fails.

What to consider. There is no chunking, embedding, or connector layer in the API. Office files and scans each take 2 API calls (convert or OCR, then parse). Credits are sold as a yearly pool rather than pay as you go, so unused credits raise your effective per-request cost. Email is not supported. The 15 requests-per-minute sandbox rate limit will constrain bulk testing.

Best for. PDF-heavy pipelines with long documents that also convert, OCR, or redact files, and where per-request billing improves the economics over per-page pricing.

Getting started. Create a free Foxit developer account and turn your first PDF into Markdown or structured JSON with the PDF Services API. The free Developer plan includes 500 credits a year, no credit card required. See our PDF Structural Extraction tutorial and invoice extraction guide to get started.

LlamaParse

LlamaParse product page showing a complex document with tables and charts converted into clean Markdown output

LlamaParse’s product page on the LlamaIndex site.

LlamaParse (by LlamaIndex, formerly LlamaCloud) is a managed parsing service with 130+ supported formats, 4 price tiers, and source connectors on paid plans. 

It covers more of Unstructured’s pipeline than a parser-only API, including an optional managed Index that chunks and embeds.

Feature

Details

Covers

Parsing (plus Extract, Classify, and Split), a managed Index that chunks and embeds, and connectors on paid plans.

Inputs

130+ formats, including PDF, DOCX, PPTX, XLSX, HTML, images, and audio. No email format is documented.

Outputs

Per-page and full-document Markdown and text, plus a typed items tree (text, heading with level, table, image, list, code, link, header, footer) with bounding boxes in page points. Tables are available as HTML with merged cells, CSV, or Markdown, and an XLSX of all tables.

Scans and tables

OCR runs automatically on pages without a text layer, with more than 80 language codes. Tables keep cell structure, with an option to merge tables that continue across pages. The Fast tier runs no AI model.

Chunking

Parse includes no chunking. Index v2 chunks and embeds for you with fixed settings (sentence-based, 1,024 tokens, 200-token overlap) and cannot write to your own vector store.

Pricing

$1.50 per 1,000 credits on pay as you go and $1.25 on Pro. Parse tiers: Fast 1, Cost-effective 3, Agentic 10, and Agentic Plus 25 credits a page, or about $1.25, $3.75, $12.50, and $31.25 per 1,000 pages at the Pro rate. Pro costs $500 a month for 400,000 credits. Free: 10,000 credits a month. Enriched forms output (Beta) adds 10 credits per page containing a form on Cost-effective, is included in the page price on Agentic and Agentic Plus, and is unavailable on Fast.

Limits and deployment

Parse takes 512 MB and 10,000 pages per job by default. Concurrent jobs: 5 on pay as you go, 20 on Pro, 100 on Enterprise. SaaS in AWS us-east-1 and eu-central-1. BYOC and self-hosted on Enterprise. Source files and the parse cache are kept 48 hours. SOC 2 Type II and HIPAA compliant, with a BAA on Enterprise.

Moving from Unstructured

heading maps to Title, text to NarrativeText, list to ListItem, and table HTML to text_as_html. Pin a tier and a dated version on every request, and use the llama-cloud 2.x SDK (llama-parse is deprecated). Google Drive, SharePoint, S3, and Confluence connectors replace some Pipelines sources.

Where LlamaParse stands out. Tiers let you route easy pages down a cheap path (Fast at $1.25 per 1,000 on Pro) and complex pages up an expensive one (Agentic Plus at $31.25 per 1,000 on Pro), which can reduce cost on mixed corpora. Connectors plus the managed Index cover more of Unstructured’s pipeline than any parser-only API in this list. LlamaIndex launched its own OCRia-1 model on 22 Oct 2026, and it now runs Cost-effective and Agentic jobs at the same prices.

What to consider. The Fast tier runs no AI model and returns raw text or layout-preserving spatial text, so pick Cost-effective or higher when you need clean Markdown. Index v2 chunking cannot be configured or pointed at your own vector store. Email formats are not documented. The HIPAA BAA scope is Enterprise only, so teams with PHI must confirm the plan level before sending protected documents.

Best for. Teams that want a managed service to replace parsing and part of the ingestion plumbing, especially with Google Drive or SharePoint sources.

Getting started. LlamaParse pricing and sign-up. The free plan includes 10,000 credits a month.

Reducto

Reducto home page with the headline Turn documents into data and a Try for free button

Reducto’s home page.

Reducto is a parsing API with built-in chunking and an r-1 model for complex documents. Parse, Extract, Split, Classify, and Edit all sit behind one API and one authentication credential.

Feature

Details

Covers

Parse with built-in chunking, plus Extract, Split, Classify, and Edit on the same API. No connectors.

Inputs

30+ file types, including PDF, DOCX, DOC, TXT, XLSX, XLS, CSV, PPTX, PPT, HTML, and common image formats. Email (.eml and .msg) is documented for on-premises deployments only.

Outputs

Chunks with Markdown content, an embedding-optimized version, and blocks (Title, Section Header, Header, Footer, Text, Table, Figure, Key Value, List Item, Checkbox) with boxes normalized to 0 to 1 and a confidence value. Tables are available as dynamic (Markdown or HTML), HTML, Markdown, JSON, or CSV.

Scans and tables

r-1 targets scans, handwriting, merged cells, and nested headers. Legacy Parse’s standard OCR engine lists 60+ languages, while r-1 publishes no language count.

Chunking

6 modes: disabled (default), variable (recommended for RAG, where a chunk_size of 1000 yields 750 to 1,250 characters), section, page, page_sections, and block, with optional overlap and embedding-optimized table summaries.

Pricing

Per 1,000 pages: r-1 Parse $10 with OCR data and citations included, and r-1 mini Parse $1 (OCR data and citations add $1). Legacy Parse $15 standard and $30 complex (2x in agentic modes), with OCR included. Extract $20 including parsing (over 100 fields per page may incur a surcharge), and the batch queue takes 20% off Parse and Extract. Prompted blocks and custom regions on r-1 and r-1 mini cost $5 per 1,000 blocks. Free: $150 of usage on the Standard plan.

Limits and deployment

100 MB direct upload, 5 GB with a presigned upload. No page limit on Standard. Up to 1,000 requests a second per key (300 for job-status polling). Synchronous calls time out at 15 minutes, and results are generally available for 12 hours. SaaS on AWS. EU residency from Growth. Hybrid VPC, full VPC, and on-premises on Enterprise. SOC 2 Type II and HIPAA compliant on all tiers, with a BAA and no training on customer data from Growth up.

Moving from Unstructured

Chunks replace chunk-by-title output, and blocks replace elements (Section Header for Title, Text for NarrativeText, List Item for ListItem). Coordinates become normalized boxes rather than pixel points. No LangChain or LlamaIndex loader is documented, so call the Python, Node.js, or Go SDK (the /pipeline endpoint is deprecated).

Where Reducto stands out. Chunks and embedding-ready table summaries come back from the parse call itself, removing a separate chunking step. The r-1 model targets complex layouts including handwriting, merged cells, and nested headers, and r-1 mini offers a lower-cost path at $1 per 1,000 pages. Qualified new customers moving from another provider can apply to Reducto for up to $5,000 in migration credits.

What to consider. When settings.model is unset, Parse runs legacy Parse until 7 Dec 2026 and r-1 after that, so set settings.model to "legacy" if you need the old pipeline’s output to stay stable. No managed source-sync connectors or LangChain/LlamaIndex loaders are documented.

Best for. RAG pipelines with complex PDFs that want chunks and embedding-optimized table summaries returned from the parser itself.

Getting started. Sign up on the Reducto site. The free grant covers your first documents, and Reducto’s docs cover the r-1 model and chunking methods.

Docling

Docling documentation home page with a diagram converting PDF, DOCX, PPTX, and HTML files into JSON, Markdown, and chunks

Docling’s documentation home page.

Docling, an LF AI and Data project started at IBM Research, is an open-source option for replacing the unstructured library. 

Docling Serve adds a REST API with chunk endpoints. Check the release history when choosing a version to pin.

Feature

Details

Covers

Open-source replacement for the unstructured library, covering conversion, layout, tables, OCR, and chunking, with Docling Serve as a REST API. Connectors available through Docling Jobkit.

Inputs

PDF, DOCX, XLSX, and PPTX (legacy DOC, XLS, PPT, and RTF need LibreOffice), HTML and MHTML, .eml and .msg email, EPUB, Markdown, AsciiDoc, LaTeX, CSV, images, audio and video (with the asr extra), and XML formats such as USPTO and JATS.

Outputs

Markdown, HTML, text, DocTags, lossless JSON (DoclingDocument) with bounding boxes and provenance, and chunks as JSONL. Labels include title, section_header, text, list_item, table, picture, caption, formula, code, page_header, page_footer, and checkbox states.

Scans and tables

Pluggable OCR engines (RapidOCR, EasyOCR, Tesseract, macOS Vision, and others); TableFormer in accurate (default) or fast mode; an optional VLM pipeline with GraniteDocling and other presets. Remote services run only with enable_remote_services=True.

Chunking

HybridChunker (token-aware, on top of hierarchical chunking, repeats table headers), HierarchicalChunker (one chunk per element, merging list items by default), and LineBasedTokenChunker; Docling Serve exposes hybrid and hierarchical chunk endpoints.

Pricing

Free under the MIT license, with model licenses kept separate (Heron and GraniteDocling Apache-2.0, TableFormer CDLA-Permissive-2.0). Docling for IBM watsonx, a managed service, starts at $4 per 1,000 pages pay as you go.

Limits and deployment

Python 3.10 or later on macOS, Linux, and Windows. Docling Serve ships CPU and CUDA images with async endpoints and no default file-size or page cap. Runs air-gapped with prefetched models. The IBM service caps files at 500 MB.

Moving from Unstructured

LangChain’s DoclingLoader and LlamaIndex’s Docling Reader and Node Parser replace Unstructured’s loaders. Labels and the document tree differ (body vs. furniture, groups), and tables arrive as cell grids rather than text_as_html.

Where Docling stands out. Its support for .eml and .msg email, EPUB, and legacy Office files with LibreOffice is useful for mixed-format corpora. Documents stay on your infrastructure when you use local models. LangChain and LlamaIndex integrations provide a starting point for replacing your loader, but you still need to adapt the output schema.

What to consider. You run and scale it. Legacy Office formats (.doc, .xls, .ppt, .rtf) need LibreOffice installed alongside. Default settings may need tuning for scans and charts; in Moda’s 6 Sep 2026 untuned run on its synthetic test set, Docling missed some chart labels. Pin versions, since that release pace can change output between upgrades.

Best for. Teams leaving the unstructured library that want to keep document processing on their own machines, especially with email or legacy Office formats.

Getting started. Docling on GitHub and the Docling Serve docs. Free and MIT-licensed; install with pip install docling.

Marker and Datalab

Datalab home page showing a parsed 10-K page with detected headings and tables outlined in labeled boxes

Datalab’s home page, with a parsed sample document.

Marker is an open-source document converter with Apache-2.0 code and separately licensed model weights. 

Datalab provides a hosted Convert API using Chandra and other models. Chandra 2.6 runs the hosted fast, balanced, and accurate modes; lite is a separate lower-cost mode at $0.50 per 1,000 pages.

Feature

Details

Covers

An open-source converter (Marker) and a hosted Convert API (Datalab) that return Markdown, JSON, HTML, or chunks. Datalab Collections supports S3 sync.

Inputs

Marker reads PDF, images, PPTX, DOCX, XLSX, HTML, and EPUB (non-PDF files need the full install), and the hosted API adds ODT, ODS, ODP, XLSM, and more. No email formats.

Outputs

Markdown, a JSON block tree with block types (SectionHeader, Table, Form, Equation, PageHeader, PageFooter, Footnote, Code) and polygons, HTML, and chunks (top-level blocks per page, each with its HTML).

Scans and tables

Marker 2.0 runs layout, OCR, and tables through a surya VLM (vLLM on NVIDIA GPUs, llama.cpp elsewhere), with an optional LLM pass. Hosted fast, balanced, and accurate modes run Chandra 2.6, and hosted OCR covers 90+ languages.

Chunking

A chunks output format only, with no chunk-size settings.

Pricing

Hosted Convert per 1,000 pages: lite $0.50 (CPU OCR, added 22 Oct 2026), fast and balanced $4, accurate $10; EU processing adds 25%. Team costs $400 a month. Free usage: $20 a month on a work email or $10 on a personal email. Commercial self-hosted use requires a license above $5M in prior-year gross revenue or total funding for Marker ($2M for Chandra), or for competing products, with personal/research exceptions applying to the financial thresholds.

Limits and deployment

Hosted: 200 MB per file, 7,000 pages per request, 15,000 pages in flight per team by default, and results deleted about 1 day after processing. VPC, on-premises, and air-gapped on Enterprise. SOC 2 Type II compliant, with BAAs on Team and Enterprise.

Moving from Unstructured

Chunks replace chunk-by-title output only loosely (no size control); LlamaIndex has a PDFMarkerReader for local Marker. Basic conversion uses Convert. The custom processor endpoints were deprecated with a 31 Oct 2026 sunset, so run custom processors through /api/v1/agent.

License history. Marker 2.0.0 code is Apache-2.0, while marker-pdf 1.x on PyPI was GPL-3.0-or-later. The hosted Chandra 2.6 model differs from open-source Chandra 0.2.0, so a local test does not predict hosted output.

Where Marker and Datalab stand out. You can choose local conversion or a hosted API, with Markdown, JSON, and chunks available in both. Shared format names do not make the integrations interchangeable: check the response schema and output on your documents before switching. Lite offers a $0.50-per-1,000-page path for straightforward scans.

What to consider. The weights license thresholds and competing-product clause apply to commercial self-hosting, so review them if you run your own infrastructure at scale. Lite mode drops images and can lose complex table structure. The chunks output format has no size control.

Best for. Markdown-first conversion pipelines that need a choice between self-hosting and a hosted per-page price, especially for straightforward scanned documents.

Getting started. Sign up on the Datalab site. The free tier includes $20 a month on a work email.

Mistral OCR

Mistral OCR product page with sample tabs for contracts, tables, invoices, and handwriting

Mistral’s Document AI and OCR page.

Mistral OCR (OCR 4.1) converts documents to per-page Markdown with blocks, bounding boxes, and confidence scores. 

The Batch API halves the price for non-latency-sensitive workloads. OCR 4.0 retired on 30 Sep 2026, so pin model names.

Feature

Details

Covers

OCR and document structure to Markdown, with optional schema annotations. No chunking or connectors in the OCR API.

Inputs

PDF, DOCX, DOC, PPTX, PPT, XLSX, CSV, TXT, EPUB, RTF, ODT, and images (JPEG, PNG, AVIF, TIFF, GIF, HEIC, BMP, WebP). No HTML or email in the OCR API.

Outputs

Per-page Markdown plus images, tables, hyperlinks, header and footer; optional blocks in reading order with labels (text, title, list, table, image, equation, caption, code, header, footer, signature) and paragraph-level boxes; confidence at page, block, or word level; tables inline or separate as Markdown or HTML.

Scans and tables

OCR on scans and images. OCR 4 supports 170 languages and performs strongly in more than 40.

Chunking

The OCR API includes no chunking. Mistral’s separate Search Toolkit (beta, v0.2.0) adds Markdown and token splitters plus HTML and EML or MSG extractors.

Pricing

OCR 4.1: $4 per 1,000 pages, $2 with the Batch API, $5 per 1,000 annotated pages. OCR 3 (mistral-ocr-2512) is still GA at $2 and $3. Regional inference endpoints exclude the Batch and Files APIs. No free page allowance is published.

Limits and deployment

50 MB and 1,000 pages per document. OCR 4 is not intended for “real-time/latency-sensitive processing”. Hosted API plus Amazon SageMaker and Microsoft Foundry; self-managed deployment for enterprise customers. Uploaded files are kept 30 days unless deleted; zero data retention on the OCR endpoint excludes the Files API and batch files; Free mode may use inputs for training.

Moving from Unstructured

Per-page Markdown replaces partition output; map block labels to element types; chunk in your own code or with the Search Toolkit. Pin model names on every request since OCR 4.0 retired on 30 Sep 2026.

Where Mistral OCR stands out. One page price already includes blocks, boxes, and confidence at $4 per 1,000 pages, halved to $2 with the Batch API. That makes large batch conversions to Markdown competitive with Azure Layout and Google Layout Parser for teams that already own chunking and orchestration.

What to consider. The API includes no chunking. HTML and email are not supported as inputs. OCR 4 is not designed for latency-sensitive calls. Models retire quickly, so pin model on every request. Zero data retention requires an approved request and has scope limits. No free page allowance is published.

Best for. Large batch conversions to Markdown where you already own chunking and orchestration, and want block-level structure with confidence scores.

Getting started. Mistral API pricing and sign-up. Credits are pay as you go with no free OCR page allowance.

Azure Document Intelligence

Azure Document Intelligence in Foundry Tools product page, noting it is now part of Azure Content Understanding

Azure Document Intelligence’s product page.

Azure Document Intelligence in Foundry Tools (API v4.0, 2024-11-30), previously called Form Recognizer, is now part of Azure Content Understanding. The Layout model returns Markdown with HTML tables and is the primary pick for RAG pipelines on Azure.

Feature

Details

Covers

Layout parsing to Markdown, plus Read OCR. No chunking or connectors in the service.

Inputs

PDF, JPEG, PNG, BMP, TIFF, HEIF, DOCX, XLSX, PPTX, and HTML for Layout; Office and HTML text is extracted as is, without embedded images. No email.

Outputs

Markdown output (outputContentFormat=markdown) with HTML tables for merged cells and multirow headers in v4.0; JSON with paragraphs and roles (title, sectionHeading, footnote, pageHeader, pageFooter, pageNumber), lines and words with polygons, selection marks, tables with spans, figures, and sections.

Scans and tables

OCR covers 300 printed-language/script entries and 12 handwritten languages; high-resolution, font, and formula add-ons cost $6 per 1,000 pages; tables that span pages need splitting and stitching; tables in XLSX files are not analyzed.

Chunking

The service includes no chunking. Microsoft’s RAG guide pairs AzureAIDocumentIntelligenceLoader with LangChain’s MarkdownHeaderTextSplitter.

Pricing

East US, per 1,000 pages: Layout $10 (batch costs the same), Read $1.50, then $0.60 above 1 million pages; Azure cloud commitment tiers start at $190 a month for 20,000 prebuilt pages. Free F0 tier: 500 pages a month, analyzing only the first 2 pages of each document.

Limits and deployment

S0: 500 MB and 2,000 pages per analysis; 15 analyze requests a second by default (adjustable); asynchronous. Inputs and results are deleted 24 hours after you submit the analyze request. Read and Layout v4.0 containers, including disconnected containers on commitment plans.

Moving from Unstructured

Layout Markdown replaces partition output for RAG; paragraph roles map to Title, Header, Footer, and PageNumber; chunk with MarkdownHeaderTextSplitter. Document Intelligence is now part of Azure Content Understanding, whose LLM-powered analyzers (GA API 2025-11-01) add segmentation worth evaluating alongside Layout.

Where Azure Document Intelligence stands out. Markdown with HTML tables arrives straight from the service, with no post-processing needed for merged cells and multirow headers. DOCX, XLSX, PPTX, and HTML inputs expand the file coverage beyond PDF. Read and Layout v4.0 containers let environments that cannot call a cloud API run the models on-premises.

What to consider. The service includes no chunking, and tables that span pages need stitching in post-processing. The free tier reads only the first 2 pages of each document, which limits its usefulness for testing complex layouts.

Best for. RAG pipelines on Azure that want Markdown and HTML tables without running models, and need container deployment for data-residency requirements.

Getting started. Azure Document Intelligence pricing. The free F0 tier includes 500 pages a month.

Google Document AI Layout Parser

Google Cloud Document AI product page with the headline Document AI, parse, and process documents at scale

Google Cloud’s Document AI product page.

Google Document AI Layout Parser parses documents into a layout tree and chunks them for RAG in the same call. The stable version is v1.0 (2024-06-03). 

Gemini-powered versions are available as release candidates or previews, so choose the processor version explicitly.

Feature

Details

Covers

Layout parsing with built-in chunking for RAG; Enterprise Document OCR for images and scans. No connectors.

Inputs

PDF, HTML, DOCX, PPTX, XLSX, and XLSM (GA and charged; other types are in free preview). Enterprise Document OCR takes PDF, GIF, TIFF, JPEG, PNG, BMP, and WebP. No email.

Outputs

A document layout tree and chunked_document.chunks; PDF elements are figure, paragraph, table, title, heading, page header, and page footer (HTML adds lists); optional bounding boxes and image or table annotations.

Scans and tables

Enterprise Document OCR reads printed and handwritten text in more than 200 languages; PDF tables that span pages “might be split in two tables”; nested DOCX tables are not supported.

Chunking

chunkingConfig with chunkSize in tokens and includeAncestorHeadings; chunks carry ancestor headings and table headers; re-chunking parsed documents costs $0.02 per 1,000 billable pages (up to 3,000 characters each).

Pricing

Layout Parser $10 per 1,000 pages including initial chunking, or $9 and $8 on 1- and 3-year savings plans. Enterprise Document OCR: first 1,000 pages free, then $1.50 per 1,000 up to 5 million.

Limits and deployment

Online: 20 MB and 15 pages per PDF (30 in imageless mode). Batch: 500 pages and 1 GB per PDF; jobs still running after 24 hours are canceled. US and EU multi-regions. Document AI is FedRAMP High and HIPAA compliant, and Google does not use customer content to improve its models.

Moving from Unstructured

Chunk by title maps most closely to chunkSize with includeAncestorHeadings. Only v1.0 (2024-06-03) is stable; the Gemini versions are release candidates or preview, and the v1.6 versions use a global endpoint that does not meet data-residency standards. LangChain’s DocAIParser is OCR-oriented.

Where Google Document AI Layout Parser stands out. Chunking with ancestor headings is included in the $10 per 1,000 pages parse price. That token-aware chunking with inherited heading context removes a separate chunking step for pipelines on Google Cloud.

What to consider. The Gemini processor versions are not stable. Online requests allow only 15 pages (30 in imageless mode), which rules them out for long document analysis outside batch. Layout Parser runs as a Google Cloud processor in the US and EU multi-regions, so if documents must stay on your own infrastructure, shortlist the tools with documented container or self-hosted deployment.

Best for. RAG pipelines on Google Cloud that want token-aware chunks with ancestor headings.

Getting started. Document AI Layout Parser docs and Document AI pricing. Layout Parser has no free page allowance, while Enterprise Document OCR includes the first 1,000 pages free.

What changes when you move off Unstructured

Picking a parser is the easy part. Everything downstream that expects Unstructured’s element types, chunk boundaries, file coverage, and billing math changes when you switch.

How elements and metadata map across tools

Every alternative uses different element types, different field names, and different coordinate systems. 

The mapping table below uses our PDF Structural Extraction as the worked example, because its reference documents every element type. The same mapping exercise applies to every tool in this list.

Unstructured

Foxit PDF Structural Extraction

What changes

Title, with category_depth for levels

title, and head for section headings with levels

Heading depth comes from head levels instead of category_depth

NarrativeText

paragraph

Same role; paragraphs also carry styling

ListItem

No list type among the 12 documented types

No list type among the 12 documented types. Check how lists appear in your output and add list-detection logic where needed.

Table, with metadata.text_as_html

table, with cell relationships and headers

Read the cell grid, or ask PDF to Markdown for HTML_TABLE output

Header, Footer, PageNumber

headerFooter

One type for page furniture; PDF to Markdown drops it unless includeHeaderFooter is true

Image and FigureCaption

image, with files in the ZIP

Images arrive as files referenced from the JSON

Formula

formula

Same role

FormKeysValues for form key-value pairs

form, with field types and values

Map the different form representations explicitly

metadata.coordinates (PixelSpace points)

A bounding box per element

Normalize coordinate systems before you store citations

parent_id

parenthead, level, and headOrder on head elements

Rebuild parent links from parenthead, level, and headOrder on head elements

One JSON list of elements

A ZIP with JSON (schema v1.0.7), images and table renditions

Unzip, then parse

The closest equivalents elsewhere are LlamaParse items (heading, text, list, table, header, footer), Reducto blocks (Section Header, Text, List Item, Table, Key Value), Docling labels (section_header, text, list_item, table, page_header), Azure paragraph roles (title, sectionHeading, pageHeader, pageFooter), Mistral block labels (title, text, list, table, header, footer), and Datalab block types (SectionHeader, Table, Form, PageHeader, PageFooter).

Moda’s 6 Sep 2026 output-contract test shows what this means in practice. On its synthetic mixed-layout page, Unstructured returned checklist lines as NarrativeText while Docling labeled them checkbox_selected or checkbox_unselected, so any code that branches on element type behaves differently after the switch.

Build an explicit type map and a table adapter before switching. A find-and-replace on field names is a rename, not a migration.

Where chunking lives in each tool

Unstructured chunks elements by character, title, page, or similarity, with contextual chunking available in Pipelines. The open-source library lacks by-page and by-similarity chunking. Each alternative puts chunking somewhere different.

Tool

Where chunking happens

Closest to chunk by title

Foxit PDF Services API

Your code or framework, on Markdown or ordered elements

Split PDF to Markdown output on headings

LlamaParse

Index v2 with fixed settings, or your code

Your code on per-page Markdown

Reducto

The parse call, using variable, section, page, page_sections, or block mode

section mode

Docling

HybridChunker, HierarchicalChunker, or LineBasedTokenChunker, also in Docling Serve

HybridChunker

Marker and Datalab

A chunks output format, no size settings

chunks output

Mistral OCR

Your code, or the Search Toolkit splitters (beta)

The toolkit’s Markdown splitter

Azure Document Intelligence

Your code; Microsoft’s guide uses MarkdownHeaderTextSplitter

MarkdownHeaderTextSplitter

Google Document AI Layout Parser

The processor: chunkSize in tokens, includeAncestorHeadings

chunkSize with ancestor headings

Sizes are measured differently across tools. Unstructured and Reducto use characters, Google uses tokens, and Docling’s HybridChunker works through a tokenizer, so the same number produces different chunks depending on the tool.

Chunk boundaries and IDs change with any parser switch, so plan a full re-index rather than mixing old and new chunks in one index.

If chunk-by-title quality is why you chose Unstructured, shortlist the tools that chunk on document structure (Reducto, Docling, Google Layout Parser), or keep your own chunker and swap only the parser.

Which file types each alternative reads

The unstructured library supports more file types than the Transform API. Before choosing, count your files by extension.

Tool

PDF and images

Word, PowerPoint, Excel

HTML

Email (.eml, .msg)

Unstructured library (baseline)

Yes

Yes, including .doc, .ppt and .xls

Yes

Yes

Unstructured Transform API (baseline)

Yes

.docx and .pptx only

No

No (the Transform MCP server accepts both)

Foxit PDF Services API

Yes; images convert to PDF first

Convert to PDF first

Convert to PDF first

No

LlamaParse

Yes

Yes

Yes

Not documented

Reducto

Yes

Yes

Yes

On-premises deployments only

Docling

Yes

Yes; legacy formats need LibreOffice

Yes

Yes

Marker and Datalab

Yes

Yes

Yes

No

Mistral OCR

Yes

Yes

No

No (Search Toolkit extractors only)

Azure Document Intelligence (Layout)

Yes

.docx, .pptx and .xlsx

Yes

No

Google Document AI Layout Parser

PDF; images through Enterprise Document OCR

.docx, .pptx, .xlsx and .xlsm

Yes

No

Our convert-then-parse route costs 2 credits per non-PDF file. Azure counts Word and HTML files at 1 page per 3,000 characters. Unstructured counts most files other than PDF, PPTX, TIFF, and DOCX with page metadata at 1 page per 100 KB, so by our calculation a 2,000 KB JPEG bills as 20 pages.

For formats the 8 tools handle poorly, 2 libraries are useful references rather than picks. Apache Tika (4.2.0, Apache-2.0) reads “over a thousand different file types,” and Microsoft MarkItDown (v0.1.9, MIT) is a lighter option to compare against.

One folder of emails or legacy Office files can decide the pick on its own.

Per page or per request

Billing units differ across every tool in this list. Per-request billing favors long PDFs and per-page billing favors short files.

Tool

Billing unit

Example list price

Free allowance

Unstructured Transform Pay-As-You-Go (baseline)

Page; most non-PDF files by 100 KB of size

$0.015 a page, or $15 per 1,000 pages

10,000 pages once per account

Foxit PDF Services API

Request (1 credit), any page count within limits

Business: $4,500 a year for 15,000 credits, or $0.30 per request when all are used

500 credits a year

LlamaParse

Credits per page by tier

Cost-effective: $3.75 per 1,000 pages on Pro

10,000 credits a month

Reducto

Pages, priced per product

r-1 Parse: $10 per 1,000 pages; r-1 mini: $1

$150 of usage

Docling

No charge when self-hosted

Your compute; IBM’s managed service $4 per 1,000 pages

Unlimited on your hardware

Marker and Datalab

Pages, priced per mode

Balanced: $4 per 1,000 pages; lite: $0.50

$20 a month on a work email

Mistral OCR

Pages

OCR 4.1: $4 per 1,000 pages, or $2 with batch

None published

Azure Document Intelligence

Pages, priced per model

Layout: $10 per 1,000 pages

500 pages a month, 2 pages per document

Google Document AI Layout Parser

Pages, priced per processor

$10 per 1,000 pages, chunking included

First 1,000 OCR pages

Worked example, long document. A 200-page PDF costs $3.00 on Unstructured Transform and 1 credit on our API, allocated at $0.30 with full use of the Business plan’s 15,000 annual credits or $0.35 on Startup. The same file costs $0.75 on LlamaParse Cost-effective at the Pro rate, $2.00 on Reducto r-1, Azure Layout, or Google Layout Parser, and $0.80 on Mistral OCR 4.1 or Datalab balanced, or $0.40 with Mistral’s Batch API. These are list-price calculations, not comparisons of equivalent output or parsing quality.

Worked example, short document. A 2-page PDF costs $0.03 on Unstructured Transform and still 1 credit on our API, against $0.0075 on LlamaParse Cost-effective, $0.008 on Mistral OCR 4.1, and $0.02 on Reducto r-1, Azure, or Google.

Where the lines cross. At $0.30 a request, our API matches Unstructured Transform at 20 pages, Reducto r-1, Azure Layout, and Google Layout Parser at 30 pages, Mistral OCR at 75 pages, and LlamaParse Cost-effective at 80 pages. We calculated these crossovers from list prices, assuming full use of the annual credit pool. Unused credits raise the effective cost.

Line chart comparing per-request and per-page costs by PDF length, with crossover points at 20, 30, 75, and 80 pages

List-price arithmetic for one document. The flat line assumes full use of the Business plan’s annual credits.

Our paid plans are yearly credit pools. Most per-page APIs in this list are pay as you go. If your volume is unpredictable, that commitment structure changes the economics. See Credits Explained for the precise billing rules, including which calls are not billed.

Estimate cost from your real page-count distribution.

What stays behind in Unstructured

A new parser doesn’t replace Pipelines. These are the layers you keep owning yourself, or keep paying Unstructured for, after the parser changes.

Connectors and sync. Pipelines reads from sources such as S3, SharePoint, Google Drive, and Confluence, with change detection and incremental processing. Among the picks, LlamaParse has 4 connectors that sync about once a day on paid plans, IBM’s managed Docling service lists its own connectors, Docling Jobkit supports sources, and Datalab Collections supports S3 sync. Parser-only routes need your own orchestration for everything else.

Embeddings and enrichment. Unstructured Pipelines embeds with providers such as OpenAI, Bedrock, VoyageAI, and IBM, and can describe tables and images. Most alternatives stop at parsed output. LlamaParse’s Index v2 embeds only into its own managed store.

Scheduling, retries, and monitoring. Pipelines runs workflows as jobs with built-in scheduling. With a parser-only API, your orchestrator owns retries and alerts.

Compliance scope. Unstructured’s SOC 2 Type 2, ISO 27001, HIPAA, and FedRAMP High coverage, listed earlier, may not carry over to the tool you pick. Compare each alternative’s claims for the plan you would actually buy, not the enterprise tier.

When to keep Unstructured

Keep Unstructured Pipelines if you rely on its source sync from systems such as SharePoint, Confluence, or Slack, or on its enrichment and embedding workflow and a replacement would leave those needs unmet. Check email and legacy-format support before switching, and confirm that the replacement meets your compliance requirements, including FedRAMP High where needed. Replace the layer that fails, not the pipeline that works.

Building a parsing pipeline on the PDF Services API

If the parser is the layer that fails, the PDF Services API slots in at the parsing step and leaves the rest of your pipeline in place. Each file follows the same path. 

Upload it, convert or OCR it first if it isn’t a text-layer PDF, submit PDF to Markdown or PDF Structural Extraction (Trial), poll the task, download the Markdown or ZIP, and hand the result to your chunker.

Flow diagram of a PDF moving through upload, optional convert or OCR, parse, poll, and download, with credits per step

Only the operation calls use credits. Uploads, polling, and downloads are free.

Parsing shares a credit pool with other PDF operations. Convert Office files, images, HTML, and Markdown to PDF before parsing, split long files, and redact sensitive content using text matching, rectangle regions, or form-field targeting before it reaches an index. That covers the pre-processing pipeline without switching APIs or billing systems. Our conversion walkthrough shows the DOCX-to-PDF path, and our text extraction tutorial covers the text extraction route.

The API has no chunking, embedding, or connector layer, so pair the output with your own chunker and orchestrator. Elements arrive in reading order, which means heading-based splitting on title and head elements works without reordering. Our structured JSON tutorial shows how to work with the Structural Extraction output.

Our MCP server exposes structural analysis, extraction, and OCR tools to agents. Our MCP server walkthrough covers the 30+ PDF tools it gives AI agents and the integration details.

Plans and credits. The free Developer plan needs no credit card. See Foxit API pricing for plan details, or Credits Explained for how credits are counted.

What else to know before you switch from Unstructured

This section answers 3 practical questions that come up in the transition.

UnstructuredLoader ships in the langchain-unstructured package. Docling has an official DoclingLoader for LangChain and a Docling Reader and Node Parser for LlamaIndex. Azure has AzureAIDocumentIntelligenceLoader. Google has DocAIParser, which is OCR-oriented. For LlamaParse, the documented pattern wraps each parsed page in a LangChain Document using the llama-cloud SDK.

Reducto, Datalab, and our PDF Services API have no documented LangChain or LlamaIndex loader. For those tools, and for Mistral OCR, check your framework’s integration list or call the SDK or REST API and build Document objects yourself.

You can route by file type or page complexity, sending emails and legacy Office files to Docling or Unstructured, long PDFs to a per-request API, and hard scans to a VLM tier. Normalize every output into one element schema, and chunk in one place so retrieval behaves consistently. Maintaining multiple parsers adds real cost and complexity, but so does forcing all your documents through a single parser that handles some of them poorly.

Router sending emails, long PDFs, and hard scans to different parsers, then into one schema, one chunker, and an index

One router, one element schema, and one chunker keep retrieval consistent across parsers

Published results only go so far. Moda ran 4 synthetic PDFs and the 48-page NIST AI RMF PDF on 6 Sep 2026, and Unstructured OSS 0.27.5 reached 98.3% macro literal recall on the synthetic set, alongside the NIST result described in the introduction. A March 2025 Procycons test of an older Unstructured version measured 75% cell accuracy on 1 sampled complex table. Both are single-run observations with specific dates and document sets, not general benchmarks, so build your own test set.

Keep 20 to 50 of your hardest documents, especially ones that already fail. Run them through Unstructured and 1 or 2 candidates. Compare element types, table cells, chunk boundaries, and answers to a fixed set of questions, plus cost at your real page counts. That comparison on your actual documents is more reliable than any synthetic benchmark

Explore More Blogs
Developer at three monitors showing parsed JSON, a PDF to OCR to parser pipeline, and an invoice data comparison table

8 Best Unstructured.io Alternatives for Document Parsing in 2026

Moving an Unstructured prototype to production often means replacing the parser, the chunker, the connectors, or all three. This guide compares 8 alternatives, including Foxit PDF Services API, LlamaParse, Reducto, and Docling, by cost, table handling, chunking, and file coverage. You also get the element mappings, billing math, and test plan you need before you switch.

Developer reviewing invoice data extraction to JSON beside an API pricing comparison for Amazon Textract alternatives

8 Best Amazon Textract Alternatives for Document Data Extraction

Leaving Amazon Textract? First check whether a cheaper Textract API already solves your cost problem. This guide compares 8 AWS Textract alternatives on pricing, language coverage, limits, and data terms, so you can match each API to the calls your pipeline makes.

API Webinars

Explore Real-World Use Cases, Live Demos, and Best Practices.
Our technical team walks through practical applications of Foxit APIs with live Q&A, hands-on demos, and clear integration strategies. Whether you're comparing tools or actively building, these sessions are designed to help you move faster with fewer roadblocks

What You'll Learn