Most OCR APIs hand you a wall of text and wish you luck with chunking.
Mistral OCR 4 , released June 23, 2026, does something more useful for production pipelines: it returns a map of the document. Every block gets a bounding box, a type label, a confidence score, and reading-order placement.
On human evaluations across 600+ real-world documents, Mistral reports a 72% blind-test win rate against leading OCR systems. I treat vendor win rates as marketing until I run my own contracts and intake forms through the API. The structural output is the part I would pay for regardless of the headline number.
Segmentation beats transcription for RAG
RAG quality often dies in the parser, not the embedding model.
When a PDF becomes one long string:
- Tables collapse into nonsense tokens
- Headers lose hierarchy
- Footnotes pollute retrieval chunks
- Agents cite the wrong paragraph because nothing is localized
Mistral OCR 4 returns typed blocks in reading order:
| Block type | What it captures |
|---|---|
title | Document or section headings |
text | Body paragraphs |
table | Table regions with table_id cross-refs |
equation | Math blocks |
signature | Signature regions |
list | Bulleted or numbered lists |
code | Code blocks |
header / footer | Page chrome |
caption | Figure or table captions |
image | Image regions with image_id |
references | Bibliography sections |
aside_text | Marginal callouts |
Bounding boxes localize each region on the page. Confidence scores flag blocks that need human review before they enter a compliance workflow.
That is the difference between "we OCR'd it" and "we can ground an agent answer to a rectangle on page 4."

API shape I would actually wire
Endpoint: POST https://api.mistral.ai/v1/ocr
import os from mistralai import Mistral client = Mistral(api_key=os.environ["MISTRAL_API_KEY"]) response = client.ocr.process( model="mistral-ocr-latest", document={ "type": "document_url", "document_url": "https://example.com/contract.pdf", }, include_blocks=True, confidence_scores_granularity="block", ) for page in response.pages: for block in page.blocks: print(block.type, block.content[:80], block.top_left_x, block.top_left_y)
Mistral OCR processor docs
document the full block schema. Block extraction requires OCR 4 or newer; older models accept include_blocks but return empty arrays.
For structured extraction without a second LLM pass, use document_annotation_format with a JSON schema. Invoice fields, clause types, and form keys can come back typed in one call.
Pricing and deployment options
| Surface | Price | Notes |
|---|---|---|
| OCR API | $4 / 1,000 pages | Text + tables |
| Batch API | $2 / 1,000 pages | 50% batch discount |
| Document AI (Studio) | $5 / 1,000 pages | No-code app path |
| Self-host | Contact sales | Single-container option |
Availability includes Mistral Studio, Amazon SageMaker, and Microsoft Foundry.
For teams that cannot let documents leave the VPC, self-hosting is the enterprise checkbox. Mistral markets a single container deployment for OCR 4, which is the right framing for air-gapped legal and clinical workflows.
Where this fits next to Surya and Textract
I already run Surya OCR 2 locally when clients need Apache-friendly weights on a GPU they control. Surya wins on sub-3B parameter efficiency and olmOCR-bench scores at 650M scale.
Mistral OCR 4 wins when you want:
- Managed API with block geometry and confidence in one response
- 170-language coverage with gains on rare scripts
- DOC/PPT ingestion without a conversion step
- Agent workflows that highlight source regions in the UI
| Need | Lean toward |
|---|---|
| On-device / open weights | Surya 2, local vLLM |
| Hosted blocks + confidence | Mistral OCR 4 |
| AWS-native forms + tables legacy | Textract (often more expensive, more calls) |
Do not assume one OCR tool wins every doc type. Run your worst PDFs: scanned leases, handwritten intake, multi-column SEC filings, and phone photos of whiteboards.
Production checklist
- Chunk on block types, not fixed token windows. Titles and tables should not share embedding space with body text.
- Route low-confidence blocks to human review queues before they enter retrieval indexes.
- Store bounding boxes in your metadata even if the UI does not use them yet. Compliance teams will ask for highlight overlays eventually.
- Batch overnight at $2/1k pages when latency allows.
- Compare citation accuracy on agent answers before and after block-aware chunking. That is the metric that pays for the upgrade.
If you are rebuilding a document RAG pipeline and want help choosing between local OCR, Mistral blocks, and embedding strategy, book a free discovery call.

