Leitor de MRZ e calculadora de dígito verificador
Cole a zona de leitura mecânica (MRZ) de um passaporte, documento de identidade ou visto – TD3, TD2 ou TD1. O formato é detectado, cada campo é lido e cada dígito verificador da ICAO 9303 é recalculado e comparado com o impresso. Tudo roda no seu navegador; nada sai da página.
O que é uma zona de leitura mecânica
Uma zona de leitura mecânica (MRZ) é o bloco de linhas de largura fixa no pé de um passaporte ou documento de identidade, padronizado pelo Doc 9303 da ICAO. Codifica em posições fixas o número do documento, Estado emissor, nome, nacionalidade, data de nascimento, sexo e validade, com dígitos verificadores que conferem a leitura.
Onde fica cada campo no TD1, TD2 e TD3
As posições são contadas a partir de 1 em cada linha, como a ICAO 9303 as numera. Cada dígito verificador fica logo depois do campo que protege; o dígito composto é o último caractere da sua linha.
| Campo | TD3 (passaporte) | TD2 | TD1 (carteira de identidade) |
|---|---|---|---|
| Código do documento | linha 1, 1–2 | linha 1, 1–2 | linha 1, 1–2 |
| Estado emissor | linha 1, 3–5 | linha 1, 3–5 | linha 1, 3–5 |
| Nome | linha 1, 6–44 | linha 1, 6–36 | linha 3, 1–30 |
| Número do documento | linha 2, 1–9 | linha 2, 1–9 | linha 1, 6–14 |
| seu dígito verificador | linha 2, 10 | linha 2, 10 | linha 1, 15 |
| Nacionalidade | linha 2, 11–13 | linha 2, 11–13 | linha 2, 16–18 |
| Data de nascimento | linha 2, 14–19 | linha 2, 14–19 | linha 2, 1–6 |
| seu dígito verificador | linha 2, 20 | linha 2, 20 | linha 2, 7 |
| Sexo | linha 2, 21 | linha 2, 21 | linha 2, 8 |
| Data de validade | linha 2, 22–27 | linha 2, 22–27 | linha 2, 9–14 |
| seu dígito verificador | linha 2, 28 | linha 2, 28 | linha 2, 15 |
| Número pessoal | linha 2, 29–42 | – | – |
| seu dígito verificador | linha 2, 43 | – | – |
| Dígito verificador composto | linha 2, 44 | linha 2, 36 | linha 2, 30 |
Como um dígito verificador é calculado
- Pegue o campo que o dígito protege – o número do documento, a data de nascimento, a data de validade, o número pessoal ou todo o intervalo do dígito composto.
- Dê a cada caractere o seu valor: um algarismo vale ele mesmo, uma letra vale a sua posição no alfabeto mais nove (A = 10, Z = 35) e o preenchimento < vale zero.
- Multiplique cada valor pelo peso da sua posição. Os pesos se repetem 7, 3, 1 ao longo do campo, começando por 7 no primeiro caractere.
- Some todos os produtos.
- O dígito verificador é essa soma módulo 10 – o último algarismo do total.
O cálculo feito passo a passo com o número de passaporte do espécime, AM7304518 – um documento inventado que não pertence a ninguém:
| Caractere | Valor | Peso | Produto |
|---|---|---|---|
| A | 10 | 7 | 70 |
| M | 22 | 3 | 66 |
| 7 | 7 | 1 | 7 |
| 3 | 3 | 7 | 21 |
| 0 | 0 | 3 | 0 |
| 4 | 4 | 1 | 4 |
| 5 | 5 | 7 | 35 |
| 1 | 1 | 3 | 3 |
| 8 | 8 | 1 | 8 |
| Soma, depois módulo 10 | 214 → 4 | ||
Então o dígito impresso depois de AM7304518 nessa zona é 4. Carregue o exemplo TD3 acima e o leitor recalcula o mesmo número na sua frente.
O dígito composto
Mais um dígito cobre quase toda a zona de uma vez: o composto. Ele é calculado do mesmo jeito, sobre um intervalo que pula os campos que nenhum dígito protege – e no TD1 esse intervalo abrange duas linhas, que é onde um leitor escrito à mão costuma errar. Uma zona cujos dígitos de campo passam todos, mas cujo composto falha, foi transcrita corretamente por partes e montada de forma errada.
O que os dígitos não cobrem
Nenhum dígito verificador cobre o nome, e nenhum cobre o Estado emissor. Um erro de leitura em qualquer um dos dois passa em silêncio: a conta continua fechando. Por isso ler também a face impressa do documento e comparar as duas leituras pega o que os dígitos não conseguem.
Perguntas frequentes
O que é uma MRZ?
Uma zona de leitura mecânica (MRZ) é o bloco de linhas de largura fixa no pé de um passaporte ou documento de identidade, padronizado pelo Doc 9303 da ICAO. Codifica em posições fixas o número do documento, Estado emissor, nome, nacionalidade, data de nascimento, sexo e validade, com dígitos verificadores que conferem a leitura.
Quais formatos esta ferramenta aceita?
Os três formatos da ICAO 9303: TD3, as duas linhas de 44 de um passaporte; TD2, duas linhas de 36; e TD1, as três linhas de 30 de uma carteira de identidade ou autorização de residência. Ela também lê os dois formatos de visto, MRV-A e MRV-B, que não têm dígito composto. O formato é detectado pelo número de linhas e pelo comprimento delas, e cada dígito verificador que o formato tem é recalculado.
Por que um dígito verificador falha?
Quase sempre porque um caractere do campo que ele protege foi lido ou digitado errado: um O no lugar de um 0, um B no lugar de um 8, um preenchimento perdido no fim de uma linha. A tabela mostra o dígito que a zona imprime ao lado do que os dados dão, e o campo que o dígito cobre. Quando um dígito de campo passa e o composto falha, olhe os caracteres entre os campos – o composto também cobre os próprios dígitos de campo.
Dá para ler a zona a partir de uma foto?
Não. Esta página lê o texto que você cola, e nada sai do seu navegador. Ler a zona e a página impressa a partir de uma foto é o que a API de reconhecimento faz: uma chamada HTTP com a imagem, e os campos voltam em JSON com os mesmos dígitos verificadores já conferidos.
Vocês guardam algum dado meu?
Não. A zona que você cola é interpretada por código que roda no seu próprio navegador: nada é enviado, e nenhuma requisição que a contenha é feita. Esta página é um arquivo estático, e a única requisição que ela faz depois de carregar é para perguntar se há algum aviso do serviço para mostrar no topo – uma chamada que não leva nada do que você digitou. A API de reconhecimento é outra coisa, que você precisa chamar de propósito.
Para onde ir depois
- Gerador de MRZ – monte uma zona válida com dígitos verificadores corretos para dados de teste.
- TD1, TD2 e TD3 – os três formatos, quantas linhas e caracteres cada um tem e onde o padrão define cada um.
- Ler um documento inteiro – a face impressa além da codificada, em uma só requisição e sem conta.
- OCR de passaportes por país – os Estados emissores que esta API lê, cada um com a sua própria zona de espécime.