Parser MRZ e calcolatore delle cifre di controllo

Incolla la zona a lettura ottica (MRZ) di un passaporto, di una carta d'identità o di un visto: TD3, TD2 o TD1. Il formato viene riconosciuto, ogni campo viene letto e ogni cifra di controllo ICAO 9303 viene ricalcolata e confrontata con quella stampata. Tutto avviene nel tuo browser; nulla lascia la pagina.

Che cos'è una zona a lettura ottica

Una zona a lettura ottica (MRZ) è il blocco di righe a larghezza fissa in fondo a un passaporto o una carta d'identità, standardizzato dal Doc 9303 dell'ICAO. Codifica in posizioni fisse numero del documento, Stato di emissione, nome, cittadinanza, data di nascita, sesso e scadenza, con cifre di controllo che verificano la lettura.

Dove si trova ogni campo in TD1, TD2 e TD3

Le posizioni si contano da 1 su ogni riga, come le numera ICAO 9303. Ogni cifra di controllo segue subito il campo che protegge; la cifra composita è l'ultimo carattere della sua riga.

Posizioni dei campi e delle cifre di controllo nei tre formati MRZ
CampoTD3 (passaporto)TD2TD1 (carta d'identità)
Codice del documentoriga 1, 1–2riga 1, 1–2riga 1, 1–2
Stato di emissioneriga 1, 3–5riga 1, 3–5riga 1, 3–5
Nomeriga 1, 6–44riga 1, 6–36riga 3, 1–30
Numero del documentoriga 2, 1–9riga 2, 1–9riga 1, 6–14
la sua cifra di controlloriga 2, 10riga 2, 10riga 1, 15
Cittadinanzariga 2, 11–13riga 2, 11–13riga 2, 16–18
Data di nascitariga 2, 14–19riga 2, 14–19riga 2, 1–6
la sua cifra di controlloriga 2, 20riga 2, 20riga 2, 7
Sessoriga 2, 21riga 2, 21riga 2, 8
Data di scadenzariga 2, 22–27riga 2, 22–27riga 2, 9–14
la sua cifra di controlloriga 2, 28riga 2, 28riga 2, 15
Numero personaleriga 2, 29–42
la sua cifra di controlloriga 2, 43
Cifra di controllo compositariga 2, 44riga 2, 36riga 2, 30

Come si calcola una cifra di controllo

  1. Prendi il campo protetto dalla cifra: il numero del documento, la data di nascita, la data di scadenza, il numero personale o l'intero intervallo della cifra composita.
  2. Assegna a ogni carattere il suo valore: una cifra vale se stessa, una lettera la sua posizione nell'alfabeto più nove (A = 10, Z = 35) e il carattere di riempimento < vale zero.
  3. Moltiplica ogni valore per il peso della sua posizione. I pesi si ripetono 7, 3, 1 lungo il campo, partendo da 7 sul primo carattere.
  4. Somma tutti i prodotti.
  5. La cifra di controllo è quella somma modulo 10: l'ultima cifra del totale.

Ecco il calcolo svolto sul numero di passaporto del campione, AM7304518, un documento inventato che non appartiene a nessuno:

La ponderazione 7-3-1 svolta carattere per carattere sul numero di documento di un campione
CarattereValorePesoProdotto
A10770
M22366
7717
33721
0030
4414
55735
1133
8818
Somma, poi modulo 10214 → 4

Quindi la cifra stampata dopo AM7304518 in quella zona è 4. Carica l'esempio TD3 qui sopra e il parser ricalcola lo stesso numero sotto i tuoi occhi.

La cifra composita

Un'altra cifra copre in un colpo solo gran parte della zona: la composita. Si calcola allo stesso modo, su un intervallo che salta i campi non protetti da alcuna cifra – e in TD1 quell'intervallo si estende su due righe, ed è lì che un parser scritto a mano di solito sbaglia. Una zona in cui tutte le cifre dei campi tornano ma la composita no è stata trascritta correttamente pezzo per pezzo e poi assemblata male.

Che cosa le cifre non coprono

Nessuna cifra di controllo copre il nome, e nessuna copre lo Stato di emissione. Un errore di lettura in uno dei due passa inosservato: i conti tornano comunque. Per questo leggere anche il lato stampato del documento e confrontare le due letture intercetta ciò che le cifre non possono.

Domande frequenti

Che cos'è una MRZ?

Una zona a lettura ottica (MRZ) è il blocco di righe a larghezza fissa in fondo a un passaporto o una carta d'identità, standardizzato dal Doc 9303 dell'ICAO. Codifica in posizioni fisse numero del documento, Stato di emissione, nome, cittadinanza, data di nascita, sesso e scadenza, con cifre di controllo che verificano la lettura.

Quali formati supporta questo strumento?

Tutti e tre i formati ICAO 9303: TD3, le due righe da 44 di un passaporto; TD2, due righe da 36; e TD1, le tre righe da 30 di una carta d'identità o di un permesso di soggiorno. Legge anche i due formati dei visti, MRV-A e MRV-B, che non hanno una cifra composita. Il formato viene riconosciuto dal numero di righe e dalla loro lunghezza, e ogni cifra di controllo prevista dal formato viene ricalcolata.

Perché una cifra di controllo non torna?

Quasi sempre perché un carattere del campo che protegge è stato letto o digitato male: una O al posto di uno 0, una B al posto di un 8, un carattere di riempimento perso alla fine di una riga. La tabella mostra la cifra stampata nella zona accanto a quella che risulta dai dati, e il campo che la cifra copre. Quando una cifra di campo torna e la composita no, controlla i caratteri tra un campo e l'altro: la composita copre anche le cifre dei campi stesse.

Può leggere la zona da una foto?

No. Questa pagina legge il testo che incolli, e nulla lascia il tuo browser. Leggere la zona e la pagina stampata da una foto è ciò che fa l'API di riconoscimento: una chiamata HTTP con l'immagine, e i campi tornano in JSON con le stesse cifre di controllo già verificate.

Conservate qualcuno dei miei dati?

No. La zona che incolli viene analizzata da codice che gira nel tuo browser: non viene caricato nulla e non parte alcuna richiesta che la contenga. Questa pagina è un file statico, e l'unica richiesta che fa dopo il caricamento serve a chiedere se c'è un avviso di servizio da mostrare in alto – una chiamata che non contiene nulla di ciò che hai scritto. L'API di riconoscimento è una cosa separata, che devi chiamare di proposito.

Dove andare adesso

  • Generatore MRZ – crea una zona valida con cifre di controllo corrette per i tuoi dati di test.
  • TD1, TD2 e TD3 – i tre formati, quante righe e quanti caratteri ha ciascuno e dove lo standard li definisce.
  • Leggere un documento intero – il lato stampato oltre a quello codificato, in una sola richiesta e senza account.
  • OCR di passaporti per Paese – gli Stati di emissione che questa API legge, ciascuno con una propria zona campione.