Extrair dados de passaporte em C# com IronOCR

This article was translated from English: Does it need improvement?
Translated
View the article in English

O método ReadPassport do IronOCR extrai dados estruturados de imagens de passaportes, incluindo nomes, números de passaporte, datas de nascimento e datas de vencimento em uma única linha de código C#, tornando-o ideal para aplicações de imigração e segurança.

Em aplicações e sistemas como balcões de check-in e imigração de segurança em aeroportos, onde os agentes lidam diariamente com grandes volumes de passaportes, ter um sistema confiável que extraia com precisão informações essenciais sobre os viajantes é crucial para garantir um processo de imigração eficiente e ágil. A biblioteca IronOCR oferece recursos avançados de OCR otimizados especificamente para leitura de passaportes, utilizando o Tesseract 5 internamente com aprimoramentos de aprendizado de máquina.

Início Rápido: Extraia as informações do seu passaporte MRZ em uma única linha

Este exemplo mostra como carregar uma imagem de passaporte usando OcrInput, usar ReadPassport() para extrair dados e acessar campos estruturados como nomes, números e datas do PassportInfo retornado. Não requer nenhuma configuração complexa — apenas uma linha de comando simples. Ao contrário das implementações tradicionais do Tesseract , o IronOCR oferece uma API simplificada, projetada especificamente para extração de documentos.

  1. Instale IronOCR com o Gerenciador de Pacotes NuGet

    PM > Install-Package IronOcr
  2. Copie e execute este trecho de código.

    var passportInfo = new IronOcr.IronTesseract().ReadPassport(new IronOcr.OcrInput("passport.jpg")).PassportInfo;
  3. Implante para testar em seu ambiente de produção.

    Comece a usar IronOCR em seu projeto hoje com uma avaliação gratuita

    arrow pointer

Como extrair dados de passaporte em C#?

Como exemplo, usaremos uma imagem de passaporte como entrada para demonstrar a funcionalidade do IronOCR. Após carregar a imagem usando OcrInput, você pode utilizar o método ReadPassport para identificar e extrair informações do passaporte. Este método retorna um objeto OcrPassportResult, que contém propriedades como GivenNames, Country, PassportNumber, Surname, DateOfBirth e DateOfExpiry. Todos os membros do objeto PassportInfo são strings.

O método ReadPassport é parte das capacidades especializadas de leitura de documentos do IronOCR, que também inclui métodos para leitura de placas de veículos, cheques MICR e outros documentos estruturados. O método utiliza técnicas avançadas de visão computacional para localizar e extrair automaticamente a área da MRZ (Zona Legível por Máquina).

Observe

  • Atualmente, este método funciona apenas para passaportes emitidos em inglês.
  • O uso da verificação avançada no .NET Framework exige que o projeto seja executado em arquitetura x64.
  • Para usuários de Mac, observe que o método ReadPassport atualmente não rotaciona automaticamente a entrada. Ao utilizar a entrada, certifique-se de que o MRZ esteja sempre na parte inferior do arquivo; caso contrário, o processo falhará.
    )}]

Qual formato de imagem para passaporte devo usar?

O IronOCR suporta diversos formatos de imagem , incluindo JPG, PNG, TIFF e BMP. Para obter os melhores resultados, certifique-se de que a imagem do seu passaporte tenha resolução adequada (pelo menos 300 DPI) e iluminação apropriada. As configurações de DPI podem ser ajustadas caso esteja trabalhando com digitalizações de baixa qualidade.

Exemplo de página de dados de passaporte americano mostrando campos biográficos, datas e zona legível por máquina para demonstração de extração de dados.

Que código preciso para extrair os dados do passaporte?

O exemplo a seguir demonstra o processo completo de extração de dados de passaporte. Para aplicações que processam múltiplos passaportes, considere implementar suporte a multithreading para melhorar o desempenho. Você também pode acompanhar o progresso do OCR em operações de longa duração.

:path=/static-assets/ocr/content-code-examples/how-to/read-passport-read-passport.cs
using IronOcr;
using System;

// Instantiate OCR engine
var ocr = new IronTesseract();

using var inputPassport = new OcrInput();

inputPassport.LoadImage("passport.jpg");

// Perform OCR
OcrPassportResult result = ocr.ReadPassport(inputPassport);

// Output passport information
Console.WriteLine(result.PassportInfo.GivenNames);
Console.WriteLine(result.PassportInfo.Country);
Console.WriteLine(result.PassportInfo.PassportNumber);
Console.WriteLine(result.PassportInfo.Surname);
Console.WriteLine(result.PassportInfo.DateOfBirth);
Console.WriteLine(result.PassportInfo.DateOfExpiry);
$vbLabelText   $csharpLabel

Que tipo de resultado posso esperar do ReadPassport?

Os dados extraídos são retornados em um formato estruturado que facilita a integração com sistemas existentes. A classe OcrResult fornece acesso completo a todas as informações extraídas.

Console de depuração mostrando os dados extraídos do passaporte: nome, país, número do passaporte e datas do processamento OCR.

Em seguida, acessamos o membro de dados PassportInfo obtido do objeto OcrPassportResult. O processo de extração lida automaticamente com vários layouts e formatos de passaporte, fornecendo resultados consistentes em diferentes países emissores.

  • GivenNames: Uma propriedade de PassportInfo retorna os prenomes da entrada do passaporte como uma string. Isso corresponde à primeira linha de dados MRZ, posições 4 a 44.
  • Country: Uma propriedade de PassportInfo retorna o país da entrada do passaporte como uma string. Isso corresponde à primeira linha de dados MRZ, posições 2 a 3. A string retornada exibe o nome completo do país emissor em vez da abreviação. Em nosso exemplo, "USA" retorna "Estados Unidos da América".
  • PassportNumber: Uma propriedade de PassportInfo retorna o número do passaporte da entrada do passaporte como uma string. Isso corresponde à segunda linha de dados MRZ, posições de 1 a 9.
  • Surname: Uma propriedade de PassportInfo retorna o sobrenome da entrada do passaporte como uma string. Isso corresponde à primeira linha de dados MRZ, posições 4 a 44.
  • DateOfBirth: Uma propriedade de PassportInfo retorna a data de nascimento da entrada do passaporte como uma string no formato YYYY-MM-DD. Isso corresponde à segunda linha de dados MRZ, posições 14 a 19.
  • DateOfExpiry: Um membro da propriedade de PassportInfo retorna a data de vencimento da entrada do passaporte como uma string no formato YYYY-MM-DD. Isso corresponde à segunda linha de dados MRZ, posições 22 a 27.

Que informações da MRZ posso extrair de passaportes?

O IronOCR lê as informações da MRZ contidas nas duas últimas linhas de qualquer passaporte que siga o padrão da OACI (Organização da Aviação Civil Internacional). Os dados MRZ consistem em duas linhas de dados, com cada conjunto de posições contendo informações únicas. Segue uma breve tabela mostrando qual informação corresponde ao índice da linha.

A funcionalidade de análise MRZ no IronOCR foi projetada para lidar com variações na qualidade de impressão e na orientação da imagem . Para documentos complexos, você pode aplicar filtros de correção de imagem para melhorar a precisão do reconhecimento.

Qual é o aspecto da seção MRZ?

A MRZ geralmente está localizada na parte inferior da página do passaporte e consiste em duas linhas de texto padronizado. Compreender a estrutura da MRZ ajuda a solucionar problemas de extração e a validar os resultados.

Página do passaporte americano com a Zona de Leitura Mecânica (MRZ) destacada em vermelho, mostrando as linhas de dados alfanuméricos codificados.

Primeira fila

Posição Campo Descrição
1Tipo de documentoNormalmente, 'P' significa passaporte.
2-3País emissorCódigo de país de três letras (ISO 3166-1 alfa-3)
4-44Sobrenome e nome próprioSobrenome seguido de '<<' e depois nomes próprios separados por '<'

Segunda fila

Posição Campo Descrição
1-9Número do passaporteNúmero de passaporte único
10Dígito verificador (número do passaporte)Dígito verificador do número do passaporte
11-13NacionalidadeCódigo de nacionalidade de três letras (ISO 3166-1 alfa-3)
14-19Data de nascimentoData de nascimento no formato AAMMDD
20Dígito verificador (data de nascimento)Dígito verificador da data de nascimento
21SexoSexoo ('M' para masculino, 'F' para feminino, 'X' para não especificado)
22-27Data de ExpiraçãoData de validade no formato AAMMDD
28Dígito verificador (data de validade)Dígito verificador da data de validade
29-42Número pessoalNúmero pessoal opcional (normalmente o número de identificação nacional)
43Dígito de verificação (número pessoal)Dígito verificador do número pessoal
44Dígito de verificação (composto)Dígito verificador geral

Como posso depurar e verificar os resultados da extração do passaporte?

Também podemos verificar os resultados do IronOCR obtendo o texto bruto extraído da imagem do passaporte e o nível de confiança para confirmar se as informações extraídas são precisas. Usando o exemplo de cima, podemos acessar as propriedades Confidence e Text do objeto OcrPassportResult.

Para fins de depuração, você pode querer destacar regiões de texto para verificar visualmente quais áreas foram reconhecidas. Essa funcionalidade é particularmente útil para solucionar problemas de extração ou otimizar regiões de digitalização.

:path=/static-assets/ocr/content-code-examples/how-to/read-passport-debug.cs
using IronOcr;
using System;

// Instantiate OCR engine
var ocr = new IronTesseract();

using var inputPassport = new OcrInput();

inputPassport.LoadImage("passport.jpg");

// Perform OCR
OcrPassportResult result = ocr.ReadPassport(inputPassport);

// Output Confidence level and raw extracted text
Console.WriteLine(result.Confidence);
Console.WriteLine(result.Text);
$vbLabelText   $csharpLabel

Console de depuração do VS Code mostrando saída de dados de passaporte com detalhes pessoais, países e strings codificadas

  • Confidence: A propriedade Confidence de OcrPassportResult é um float indicando a confiança de precisão estatística do OCR como uma média de cada caractere. Esse valor é menor se a imagem do passaporte estiver desfocada ou contiver outras informações. Um representa o nível mais alto e o maior nível de confiança, enquanto zero representa o nível mais baixo e o menor nível de confiança. Para aplicações de produção, considere implementar limites de confiança nos resultados para garantir a qualidade dos dados.
  • Text: A propriedade Text de OcrPassportResult contém o texto bruto e não analisado extraído da imagem do passaporte. Os desenvolvedores podem usar isso em testes unitários para verificar o texto extraído da imagem do passaporte. Para cenários avançados, você pode exportar os resultados no formato hOCR para análises adicionais.

Melhores práticas para aplicativos de digitalização de passaportes

Ao implementar a leitura de passaportes em ambientes de produção, considere estes fatores adicionais:

  1. Qualidade da imagem : Certifique-se de que as imagens de entrada atendam aos padrões mínimos de qualidade. O Assistente de Filtros pode ajudar a otimizar imagens para melhor reconhecimento.

  2. Desempenho : Para processamento de alto volume, implemente suporte assíncrono e considere o processamento em lote com múltiplos passaportes.

  3. Segurança : Como os dados do passaporte são sensíveis, assegure-se do manuseio adequado dos dados e considere a integração com sistemas seguros de gerenciamento de documentos.

  4. Validação : Implemente a validação do dígito verificador para os dados MRZ extraídos, a fim de garantir a precisão. O formato MRZ inclui vários dígitos de verificação que podem ser usados ​​para verificar a integridade das informações extraídas.

  5. Tratamento de erros : Implemente um tratamento de erros robusto para casos em que as imagens de passaporte possam estar danificadas, mal iluminadas ou contenham formatos não padronizados.

Perguntas frequentes

Como extrair dados de passaporte de imagens em C#?

Você pode extrair dados de passaporte usando o método ReadPassport do IronOCR. Basta carregar a imagem do seu passaporte com OcrInput e chamar ReadPassport() para obter dados estruturados, incluindo nomes, números de passaporte, datas de nascimento e datas de validade, em uma única linha de código.

Que informações do passaporte podem ser extraídas automaticamente?

O método ReadPassport do IronOCR extrai os seguintes dados: nome, país, número do passaporte, sobrenome, data de nascimento e data de validade, a partir de imagens de passaportes. Todos os dados são retornados como strings em um objeto PassportInfo estruturado.

Preciso de alguma configuração complexa para ler os dados MRZ do passaporte?

Não é necessária nenhuma configuração complexa. O IronOCR oferece uma API simplificada que extrai os dados da MRZ do passaporte com apenas uma linha de código, ao contrário das implementações tradicionais do Tesseract, que exigem mais configuração.

Que tecnologia permite a leitura de passaportes?

O IronOCR utiliza o Tesseract 5 internamente, com aprimoramentos de aprendizado de máquina e técnicas avançadas de visão computacional, para localizar e extrair automaticamente a área MRZ (Zona Legível por Máquina) de imagens de passaporte.

Isso pode ser usado em sistemas de imigração aeroportuária?

Sim, o IronOCR é ideal para aplicações de imigração e segurança em aeroportos, onde os agentes lidam diariamente com um grande volume de passaportes. Ele fornece extração confiável de informações essenciais do viajante para garantir processos de imigração eficientes.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais
Analisado por
Jeff Fritz
Jeffrey T. Fritz
Gerente de Programa Principal - Equipe da Comunidade .NET
Jeff também é Gerente de Programa Principal das equipes do .NET e do Visual Studio. Ele é o produtor executivo da série de conferências virtuais .NET Conf e apresenta o "Fritz and Friends", uma transmissão ao vivo para desenvolvedores que vai ao ar duas vezes por semana, onde ele conversa sobre tecnologia e escreve código junto com os espectadores. Jeff cria workshops, apresentações e planeja conteúdo para os maiores eventos de desenvolvedores da Microsoft, incluindo o Microsoft Build, o Microsoft Ignite, a .NET Conf e o Microsoft MVP Summit.
Pronto para começar?
Nuget Downloads 5,525,971 | Versão: 2026.3 acaba de ser lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronOcr
executar um exemplo Veja sua imagem se transformar em texto pesquisável.