How to Use Mistral OCR 4.1: Setup and Pricing (2026)

Mistral OCR 4.1 is a July 16, 2026 update to Mistral's document-extraction model that fixes bounding-box drift on busy, marked-up pages and adds block-level confidence scoring. You call it the same way you called OCR 4 — through the /v1/ocr endpoint with a Mistral API key — and the per-page price hasn't moved.

Short answer: Get a Mistral API key, install the mistralai SDK, and call client.ocr.process() with model="mistral-ocr-latest" — that alias now points to OCR 4.1. It costs $4 per 1,000 pages for plain extraction, $5 per 1,000 for annotated Document AI output, and $2 per 1,000 on the Batch API. No sign-up beyond a Mistral account is needed.

ChatGPT homepage — screenshot of chatgpt.com
ChatGPT homepage — screenshot of chatgpt.com

I've spent the past few days running scanned forms, dense technical PDFs, and multi-column reports through OCR 4.1 via the console playground and the API directly, mostly to see whether the "better bounding boxes" claim in Mistral's release notes actually shows up in output you'd trust for a pipeline. It does, on the specific problem it targets — pages with lots of overlapping elements. Below is the setup, real pricing, copy-paste request code, and where it still trips up.

What you'll need

A Mistral account and an API key from console.mistral.ai — the same key works across every Mistral model, not just OCR. You'll also want Python 3.9+ if you're using the official mistralai SDK, though a plain curl call works fine too and is what I used to sanity-check the SDK's output. No GPU, no local model weights, and no separate Document AI sign-up: annotated extraction runs through the same endpoint with a different flag. Budget a few dollars for testing — at $4 per 1,000 pages, even a heavy afternoon of experimentation costs under a dollar.

Step-by-step: how to use Mistral OCR 4.1

1. Create an API key

Log into console.mistral.ai, open the API Keys section, and generate a new key. Copy it somewhere safe — Mistral shows the full key exactly once.

2. Install the SDK

Run pip install mistralai. If you'd rather skip the SDK, plain HTTP calls to https://api.mistral.ai/v1/ocr work identically; the SDK just wraps the same REST endpoint.

3. Point the model at "mistral-ocr-latest"

As of the July 16, 2026 update, mistral-ocr-latest and the mistral-ocr-4 alias both resolve to OCR 4.1 (model ID mistral-ocr-4-1), per Mistral’s own changelog. You don't need to change any code that was already targeting OCR 4 — the upgrade is automatic on the alias.

4. Send a document

“`python import os from mistralai import Mistral

client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])

ocr_response = client.ocr.process( model="mistral-ocr-latest", document={ "type": "document_url", "document_url": "https://example.com/your-file.pdf", }, include_blocks=True, confidence_scores_granularity="block", include_image_base64=True, ) “`

include_blocks=True is what turns on the structural output — labeled blocks with bounding boxes — rather than plain markdown text.

5. Read the block-level confidence scores

confidence_scores_granularity now accepts "block" alongside the existing "page" and "word" options, an addition that shipped with 4.1. In my testing, block-level scores were the most useful of the three for flagging which specific table or paragraph needs a human to double-check, instead of a single page-wide number that hides a bad table inside an otherwise clean page.

6. Turn on Document AI annotations if you need structured fields

Add document_annotation_format (or the equivalent bounding-box-schema field for Document AI mode) to get labeled key-value pairs back — invoices, IDs, and forms — instead of raw blocks. This mode is billed at the higher $5-per-1,000-page rate.

7. Switch to the Batch API for large jobs

For anything over a few hundred pages, POST to /v1/batch instead of the synchronous endpoint. It runs the same model asynchronously at half price, which matters once you're processing thousands of pages rather than testing one PDF.

Example requests you can copy

A few request bodies that cover the situations I hit most often:

  • Plain text extraction, no structure: drop include_blocks entirely and you get clean markdown back — the fastest option when you just need the words, not the layout.
  • Dense forms with tables: set "table_format": "html" so tables come back as real <table> markup instead of markdown pipes, which held up better on merged cells in my testing.
  • Multi-column academic PDFs: include_blocks=True plus confidence_scores_granularity="block" — this is the exact combination OCR 4.1 was built to improve, and it's where I saw the clearest gain over OCR 4.0.
  • Scanned receipts or IDs: use "type": "image_url" instead of "document_url" in the document object; the endpoint accepts images directly without wrapping them in a PDF first.
  • Batch of 500+ files: build a JSONL file of requests and POST it to /v1/batch rather than looping synchronous calls — it's both cheaper and faster to let Mistral queue them.

Common mistakes to avoid

The mistake I made first was assuming mistral-ocr-latest always meant the newest model without checking what it currently points to — pin mistral-ocr-4-1 explicitly in production code if you need to control exactly when an upgrade like this one reaches your pipeline. Second, people skip include_blocks=True and then wonder why they're only getting flat markdown with no bounding boxes; the field isn't on by default. Third, don't run the synchronous /v1/ocr endpoint on a 2,000-page batch job one file at a time — I timed a handful of single calls against a batch submission on the same document set, and the batch route was both cheaper per page and easier to monitor, since it returns one job you poll instead of hundreds of open requests. Fourth, don't expect the July update to fix anything unrelated to layout precision — OCR 4.1 targets bounding-box drift and nested-image handling on cluttered pages specifically; it isn't a language-coverage or accuracy overhaul on top of OCR 4.0's underlying recognition. Fifth, if you're billing annotated Document AI output at the plain-OCR rate, check your requests — the $5-per-1,000-page tier applies the moment you turn on structured annotation, not just when you explicitly say "Document AI."

Mistral OCR 4.1 vs OCR 4.0

OCR 4.1 OCR 4.0
Released July 16, 2026 June 23, 2026
Model ID mistral-ocr-4-1 mistral-ocr-4-0
Price, plain OCR $4 / 1,000 pages $4 / 1,000 pages
Price, annotated (Document AI) $5 / 1,000 pages $5 / 1,000 pages
Price, Batch API $2 / 1,000 pages $2 / 1,000 pages
Confidence score granularity Page, word, and block Page and word only
Bounding boxes on busy/marked-up pages Tighter, less drift, no nested-image merging Present, but more prone to drift on cluttered layouts
Languages supported 170, across 10 language groups 170, across 10 language groups
Self-hosting Yes, single-container Yes, single-container

The price rows are identical on purpose — OCR 4.1 is a quality patch to the same model line, not a new pricing tier, per Mistral’s API pricing page checked August 17, 2026. The two rows that actually changed are the confidence-score granularity and how cleanly bounding boxes hold up on dense, overlapping layouts.

Tools that make this easier

If you're wiring Mistral OCR 4.1 into a larger pipeline rather than testing it standalone, my AI coding assistant primer covers the basics of pairing an OCR call with an LLM step that cleans up the extracted text. For picking the assistant that writes that glue code fastest, best AI tool for code ran the same integration brief through several tools and ranked them on real output, not marketing claims. Mistral also ships its own coding and moderation models worth knowing about if you're already inside their ecosystem — my Shieldstral 3B guide covers their open-weights moderation model, which pairs naturally with OCR output that needs a content check before it reaches a database. If budget matters more than polish for a side project, free AI tools rounds up options that don't require a card, and ChatGPT alternatives for coding is useful if Copilot or ChatGPT isn't the tool actually writing your integration code. For a wider view of where OCR-adjacent models rank against everything else on the market, best AI models is the place to start.

My take

OCR 4.1 does exactly what its release notes promise and nothing more — tighter bounding boxes and a block-level confidence option, at the same price as OCR 4.0. That's a narrow fix, and it's the right one if your pipeline chokes on dense forms or multi-column layouts specifically. If your documents are already clean single-column text, you likely won't notice the difference at all, and there's no reason to hold off using mistral-ocr-latest either way since the alias upgrades you automatically.

Frequently Asked Questions

Is Mistral OCR 4.1 free to use?

No. It's $4 per 1,000 pages for plain OCR extraction, $5 per 1,000 for annotated Document AI output, and $2 per 1,000 through the Batch API. There's no free tier, though testing a handful of documents costs well under a dollar.

How long does it take to set up Mistral OCR 4.1?

About ten minutes if you already have a Mistral account — generate an API key, pip install mistralai, and your first client.ocr.process() call can run within a few lines of code. Most of that time goes to reading your API key back into your environment correctly, not the OCR call itself.

What is the easiest way to use Mistral OCR 4.1?

Point model at "mistral-ocr-latest" rather than a pinned version string, since that alias already resolves to OCR 4.1. Set include_blocks=True if you want structure back, and skip it entirely if you just want clean markdown text.

Does Mistral OCR 4.1 cost more than OCR 4.0?

No, the per-page price is identical across both versions — $4 per 1,000 pages for plain extraction and $5 per 1,000 for annotated output. OCR 4.1 is a precision update to the same pricing tier, not a new paid tier.

Can I still use OCR 4.0 instead of 4.1?

Yes, pin the model string to mistral-ocr-4-0 explicitly if you need the older behavior for a specific pipeline. Otherwise both mistral-ocr-latest and mistral-ocr-4 now point to 4.1 by default.