Passport & ID (MRZ)
Decode the machine-readable zone on passports and ID cards into structured, check-digit-validated fields.
Want a passport or ID card to come back as clean fields — Surname, Date of Birth, Nationality, Expiry — instead of the cryptic P<UTOERIKSSON<<ANNA… string at the bottom of the page? Set the zone over the machine-readable zone (MRZ) to type MRZ, and Scanix Desktop decodes it into structured values and validates them against the ICAO 9303 check digits. This guide walks you through it.
What the MRZ is
The MRZ is the band of <-padded uppercase text at the bottom of a passport or ID card, designed to be read by machine. Scanix reads that band with OCR, then decodes it: it splits the band into its data elements and fills in named fields rather than dumping the raw code into one box. It recognises three ICAO 9303 layouts automatically from the line structure:
| Format | Document | Layout |
|---|---|---|
| TD3 | Passports (the most common) | 2 lines × 44 characters |
| TD1 | Most national ID cards | 3 lines × 30 characters |
| TD2 | Older ID cards and some visas | 2 lines × 36 characters |
You don't pick the format by hand — Scanix detects it from the band itself.
Capture an MRZ
Draw a zone over the MRZ band
In the Template Designer, draw an extraction zone tightly around the machine-readable band at the bottom of the document. Keep the whole band inside the zone — all 2 or 3 lines — and avoid catching the photo or other card text above it.
Set the zone Type to MRZ
In the zone editor, find the Type dropdown (next to Name) and choose MRZ. That tells Scanix this zone is a machine-readable band, so it OCRs against the MRZ character set and runs the decoder instead of treating the digits as plain text.
Why the Type matters
Left as plain text, an MRZ's digit-heavy code can be misread as a phone number. Setting Type to MRZ is what unlocks decoding and check-digit validation.
Screenshot
The zone editor with the Type dropdown open and MRZ selected, the zone drawn over the passport's machine-readable band. — shot data-capture-mrz-01
Read the Decoded MRZ preview
With the zone OCR'd, the editor shows a Decoded MRZ panel breaking the band into named fields — Surname, Given Names, Date of Birth, Nationality, Expiry Date, Document Number, Issuing State, Sex, Document Type, and Personal Number where present. Dates are normalised to a calendar date rather than the raw YYMMDD code.
Alongside the heading you'll see the check-digit verdict — ✓ check digits valid when every check passed, or ✗ check digits — review when one didn't. Use it as a quick read on whether the band came through cleanly.
Screenshot
The Decoded MRZ panel showing per-field values (Surname, Date of Birth, Nationality, Expiry Date, Document Number) with the "✓ check digits valid" badge. — shot data-capture-mrz-02
Map the values to your index fields
Decoded MRZ values become capture data like any other zone, so you can route them into the index fields you export — surname into a Name column, date of birth into a DOB column, and so on. Save the template, and every passport or ID you run through it returns the same structured set.
How check digits keep the data honest
OCR on a tiny band is where data quietly goes wrong: a 0 read as O, a 5 as S, an 8 as B. The ICAO 9303 standard builds a check digit into the MRZ for each critical element — the document number, date of birth, expiry date, and the personal number — plus a composite check over the whole band. Scanix recomputes each check digit from the characters it read and compares it to the one printed in the band.
A single-character slip in a covered field changes its computed check digit, so the mismatch is caught instead of silently shipping a wrong passport number or date.
A failed check routes to Review — it isn't thrown away
When a check digit doesn't match, Scanix downgrades that field's status to review and flags the failed check rather than discarding the value or marking it outright invalid. The OCR text is often still mostly right and an operator can fix the one wrong character — so the value stays in front of you to correct, never dropped. In the Viewer, decoded values appear under Auto-Detected, with the per-digit results listed under MRZ Check Digits.
Troubleshooting
Next steps
Index fields
Map the decoded MRZ values into the metadata columns you export.
Data capture
See how zones, field types, and validation fit together across a template.