Zo controleer je de MRZ van een paspoort

  1. Zoek de MRZ. Het is het blok hoofdletters in vaste breedte onderaan de gegevenspagina van het paspoort (twee regels van 44) of op de achterkant van een ID-kaart (drie regels van 30). Elke < is een opvulteken, geen typefout.
  2. Typ of plak de regels. Eén regel per rij, precies zoals gedrukt. Kopieer je uit een OCR-resultaat, houd dan de <-tekens; kleine letters en losse spaties corrigeert de tool voor je.
  3. Lees het oordeel. Een groen oordeel betekent dat elk controlecijfer klopt. Een rood oordeel laat zien welk cijfer faalt en wat er verwacht werd, zodat je het verkeerd gelezen teken kunt vinden.
  4. Controleer de gedecodeerde velden. Vergelijk de gedecodeerde naam, het nummer en de datums met de gedrukte gegevenspagina. Als de twee zones niet overeenkomen, is dat een reden om beter te kijken.

Wat het doet

  • Controleert elk controlecijfer uit ICAO Doc 9303: documentnummer, geboortedatum, vervaldatum, optionele gegevens en het samengestelde controlecijfer
  • Verwerkt de drie reisdocumentformaten — TD3-paspoorten (2 × 44), TD1-ID-kaarten (3 × 30), TD2-documenten (2 × 36) — plus MRV-A- en MRV-B-visa
  • Decodeert documentcode, uitgevende staat, achternaam en voornamen, nummer, nationaliteit, geslacht, datums en optionele gegevens
  • Markeert OCR-verwisselingen (0/O, 1/I, 8/B, 5/S) en stelt de gecorrigeerde waarde voor als die het controlecijfer laat kloppen
  • Toont de volledige tabel met veldposities per formaat, met een link naar het deel van ICAO dat ze definieert
  • Draait volledig in je browser: geen upload, geen opslag, geen netwerkverzoek — de regels zijn weg zodra je de pagina herlaadt

Wat controleert een MRZ-checker eigenlijk?

Hij knipt elke regel in de velden die ICAO Doc 9303 voor dat formaat definieert, rekent elk controlecijfer opnieuw uit op basis van de tekens die het dekt, en vergelijkt het resultaat met het cijfer dat gedrukt staat. Een paspoort (formaat TD3) heeft vijf controlecijfers: documentnummer, geboortedatum, vervaldatum, optionele gegevens en een samengesteld cijfer over het grootste deel van de tweede regel. Een ID-kaart (TD1) heeft er vier, een TD2-document vier en een visum (MRV) drie — visa hebben geen samengesteld controlecijfer. Daarna decodeert de tool wat de velden zeggen: documentcode, uitgevende staat, achternaam en voornamen, nationaliteit, geslacht en beide datums.

Waarom hebben paspoorten überhaupt controlecijfers?

Omdat de zone bedoeld is om door een scanner gelezen te worden, en scanners fouten maken. Een controlecijfer laat de leessoftware merken dat een 0 als een O doorkwam, of dat een regel één teken te kort is afgesneden, voordat de gegevens ergens heen gaan. Het is een integriteitscontrole op de tekst, geen beveiligingskenmerk: iedereen kan de cijfers berekenen en de standaard publiceert het algoritme. Daarom zegt een geslaagd resultaat ook niets over de vraag of een document echt is.

Welke tekens leest OCR verkeerd?

Het lettertype OCR-B dat in de MRZ wordt gebruikt is ontworpen om tekens uit elkaar te houden, maar telefooncamera's, schittering en laminaat leveren toch een kort lijstje terugkerende verwisselingen op. De tool controleert ze in beide richtingen.

GedruktVaak gelezen alsWaar het voorkomt
0 (nul)ODatums, controlecijfers, documentnummers
1I of LDatums, controlecijfers
8BDatums, nummers
5SDatums, nummers
2ZDatums, nummers
< (opvulteken)Valt weg, of wordt gelezen als « of KNamen en de opvulling na elk veld — een ontbrekend opvulteken verschuift elk later veld

Een letter in een numeriek veld is altijd fout, dus de tool meldt hem en probeert het cijfer dat erop lijkt; als het controlecijfer daarmee klopt, zegt hij dat. Een cijfer in het naamveld wordt op dezelfde manier gemarkeerd met de letter die het waarschijnlijk was.

Hoe worden de tweecijferige jaren omgezet in datums?

De MRZ slaat datums op als JJMMDD zonder eeuw. De checker gaat ervan uit dat een geboortejaar in het verleden ligt (een jaar tot en met het huidige wordt gelezen als 20JJ, anders 19JJ) en dat een vervaljaar 20JJ is, tenzij dat meer dan twintig jaar vooruit zou liggen, in welk geval het 19JJ is. De gedecodeerde datums krijgen een notitie die dat vermeldt. Voor iemand geboren in 1926 of een document dat decennia geleden verliep kan de aanname fout zijn; de zes ruwe tekens staan naast elke datum zodat je zelf kunt oordelen.

Wat kan hij je niet vertellen?

Hij kan de foto, de chip, het laminaat of het watermerk niet zien, dus hij kan niet zeggen dat een document echt is. Hij kent niet elke drieletterige code: de lijst dekt ISO 3166-landen en de codes die ICAO reserveert (D voor Duitsland, GBR en de andere Britse codes, XXA tot XXC voor staatlozen en vluchtelingen, UNO), en een onbekende code wordt ongewijzigd getoond met een notitie. Hij leest tekst, geen afbeeldingen, dus een foto van een paspoort moet eerst door OCR. En hij bewaart niets: de regels leven in het geheugen van je browser zolang de pagina open is.