Generate ICAO 9303-compliant Machine Readable Zone strings with valid check digits for passports, ID cards and visas, and preview them as a mock document image — entirely in your browser. Test image dataset mode builds a seeded set of synthetic documents with blur, motion, rotation, perspective, glare, noise and JPEG degradations, keeps the ground-truth fields for every image, and exports the whole thing as a ZIP your MRZ reader can be scored against.
Build a set of synthetic passport, ID card and visa images with known difficulty and known expected fields. The seed drives every random choice — identities, document types and degradation values — so the same seed rebuilds the same test cases. Export the ZIP and score a reader against it in the MRZ scanner benchmark.
| On | Degradation | Min | Max | Unit |
|---|
A stress image is synthesised, not photographed. The degradations model the capture problems that make an MRZ hard to read — blur, motion, rotation, perspective, uneven lighting, glare, noise, JPEG artifacts and a small final scale — but they are generated, so absolute accuracy figures are not a claim about real camera footage. What the dataset measures reliably is the relative behaviour of a reader: which conditions it survives, and where it starts to lose characters.
The MRZ is never cut. The frame crop trims the border around the
document and stops before the edge would reach the MRZ band — a partial MRZ cannot be
parsed by any reader, so it would be a guaranteed miss that measures nothing. The
value actually used is recorded as crop in the annotations, with the
request beside it as crop_requested.
Every value is synthetic. Names, numbers and dates come from fixed lists and generated dates, and the document is a mock rendered on a canvas — it is not a real travel document and must not be treated as one.
Dates in the ground truth are YYMMDD exactly as encoded in the MRZ; the
century a reader assumes is its own convention, so it is not scored. The per-image
degradation values are recorded in the annotations, so a miss can be read against
the condition that caused it.