Model chooser / Read PDFs, contracts and scanned documents / Recurring
Invoices, forms and filings at volume need a parser, not a chatbot: structured output, bounding boxes, confidence scores and a price per page. Mistral OCR 4 is built for exactly that, with a batch mode and a self-host option.
Why Mistral OCR 4
How to use it
Mistral API, Python
Edit the parts in capitals, then run it.
import os
from mistralai import Mistral
client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])
result = client.ocr.process(
model="mistral-ocr-latest", # alias for the newest OCR 4 release
document={"type": "document_url", "document_url": "https://YOUR-BUCKET/invoice.pdf"},
table_format="markdown",
confidence_scores_granularity="word",
)
for page in result.pages:
print(page.markdown)
Alternatives that also work
Pick it when you must self-host with a clean commercial license. Apache 2.0, 1B parameters, and 96.3 on OmniDocBench v1.6, the top clearly-licensed open model.
Pick it when you want an MIT-licensed model small enough for any GPU. It reports 94.62 on OmniDocBench v1.5.
Pick it when each document needs reasoning, not just extraction, such as deciding whether an invoice matches a purchase order.
Watch out for
Sources
Checked . Models change monthly; we re-check this page when they do.
Wiring it into a workflow that runs every week, with evals, fallbacks and a cost you can predict, is the work. Fifteen minutes, no deck.