MIST-Extract 1.0: document extraction built for African documents

Two open models that turn receipts, mobile-money messages, bills and letters into clean JSON, in English and African languages, with a confidence score on every field.
A lot of the paperwork that runs African businesses never touches a PDF. It arrives as a mobile-money SMS, a photo of a market receipt in naira, a screenshot of a bank alert, or a tenancy notice in Pidgin or Hausa. Pulling the amount, the date and the name out of that by hand is slow, and general-purpose extraction models were trained mostly on Western invoices.
Today we’re releasing MIST-Extract 1.0, built for exactly these documents.
What it does
Give it a JSON template and a document. The document can be text, a photo or scan, or a screenshot. It fills in the template:
template = {"recipient": "verbatim-string", "amount": "number",
"fee": "number", "reference": "verbatim-string", "date": "date"}
"Your MTN MoMo transfer of GHS 250.00 to KOFI MENSAH was successful.
Fee GHS 2.50. Ref 88213374. 14/10/2025"
→ {"recipient": "KOFI MENSAH", "amount": 250, "fee": 2.5,
"reference": "88213374", "date": "2025-10-14"}
Every field comes back with a calibrated confidence, so you can accept the fields it’s sure of and send the rest to a person.
Two sizes
- MIST-Extract-1.0, 4B parameters: the most accurate.
- MIST-Extract-Flash-1.0, 2B parameters: about 10 documents a second on a single RTX A6000.
Both are full fine-tunes of Qwen3.5, released under Apache-2.0, and use the same template format as NuExtract, so existing templates work unchanged.
How it does
We tested both models against NuExtract3 (4B), the untuned Qwen3.5-4B, LiquidAI’s LFM2 Extract models and GLiNER2.5, on the same 2,016 held-out documents in 32 languages. Every model got the same input and the same scoring rules.
| Field accuracy | MIST 4B | Flash 2B | NuExtract3 | Qwen3.5-4B |
|---|---|---|---|---|
| All held-out documents | 0.898 | 0.879 | 0.801 | 0.762 |
| Receipt photos | 1.000 | 0.999 | 0.925 | 0.738 |
| African documents | 0.931 | 0.912 | 0.919 | 0.890 |
| Named entities, 21 African languages | 0.728 | 0.701 | 0.393 | 0.432 |
The fields that matter most in these documents are dates, amounts and currencies:
| Field type | MIST 4B | Flash 2B | NuExtract3 |
|---|---|---|---|
| Dates | 0.979 | 0.975 | 0.884 |
| Amounts | 0.984 | 0.970 | 0.964 |
| Currency | 0.975 | 0.975 | 0.966 |
On English documents of these kinds, MIST-Extract gets 91.8% of documents completely right, against 67.9% for NuExtract3. The gap is widest in languages that rarely appear in training data: in chiShona, Luo and isiXhosa, MIST-Extract-1.0 is 40 to 55 points ahead.
Confidence you can act on
A score is only useful if it means something. When MIST-Extract-1.0 says 0.66, it is right about 66% of the time; across held-out fields its calibration error is 0.008. On one receipt photo it misread the shop name, and told us so:
merchant: "GL HANDICRAFT & TAIL CHINGS" 0.50
date: "2018-03-27" 0.95
total: 130 0.94
Set a threshold, say 0.95: fields above it go straight through, and fields below it go to review.
Use it
vllm serve olaverse/MIST-Extract-1.0 \
--limit-mm-per-prompt '{"image": 1, "video": 0}' \
--chat-template-content-format openai \
--max-model-len 131072
Then call it with any OpenAI client, passing your template as chat_template_kwargs. The model cards have full examples for text, images, instructions and per-field confidence.
MIST-Extract is built for African and English everyday documents. For general Western invoices and multi-page PDFs, a general-purpose extractor such as NuExtract3 is the better fit.
Get the models
Building with these documents, or want to use MIST-Extract in production? Get in touch at olaverselab.com.
Enjoyed this? Every model we write about is open weight and free to download.

