Extrair dados de passaporte em C# com IronOCR
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 validade, 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.
-
Instale IronOCR com o Gerenciador de Pacotes NuGet
PM > Install-Package IronOcr -
Copie e execute este trecho de código.
var passportInfo = new IronOcr.IronTesseract().ReadPassport(new IronOcr.OcrInput("passport.jpg")).PassportInfo; -
Implante para testar em seu ambiente de produção.
Comece a usar IronOCR em seu projeto hoje com uma avaliação gratuita
Fluxo de trabalho mínimo (5 etapas)
- Baixe uma biblioteca C# para ler passaportes.
- Importe a imagem do passaporte para leitura.
- Certifique-se de que o documento contenha apenas a imagem do passaporte, sem cabeçalhos ou rodapés.
- Utilize o método
ReadPassportpara extrair dados da imagem. - Acesse a propriedade OcrPassportResult para visualizar e manipular os dados do passaporte extraídos.
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, DateOfExpiry, Gender, DocumentType, Nacionalidade, NacionalidadeCode, IssuingCountryCode, PersonalNumber e DateOfIssue.
O método ReadPassport faz 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).
- 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, observem que o método
ReadPassportatualmente não rotaciona a entrada automaticamente. 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.
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);
Console.WriteLine(result.PassportInfo.Gender);
Console.WriteLine(result.PassportInfo.DocumentType);
Console.WriteLine(result.PassportInfo.Nationality);
Console.WriteLine(result.PassportInfo.NationalityCode);
Console.WriteLine(result.PassportInfo.IssuingCountryCode);
Console.WriteLine(result.PassportInfo.PersonalNumber);
Console.WriteLine(result.PassportInfo.DateOfIssue);
Imports IronOcr
Imports System
' Instantiate OCR engine
Dim ocr As New IronTesseract()
Using inputPassport As New OcrInput()
inputPassport.LoadImage("passport.jpg")
' Perform OCR
Dim result As OcrPassportResult = 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)
Console.WriteLine(result.PassportInfo.Gender)
Console.WriteLine(result.PassportInfo.DocumentType)
Console.WriteLine(result.PassportInfo.Nationality)
Console.WriteLine(result.PassportInfo.NationalityCode)
Console.WriteLine(result.PassportInfo.IssuingCountryCode)
Console.WriteLine(result.PassportInfo.PersonalNumber)
Console.WriteLine(result.PassportInfo.DateOfIssue)
End Using
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.
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 dePassportInforetorna os nomes fornecidos na entrada do passaporte como uma string. Isso corresponde à primeira linha de dados MRZ, posições 4 a 44.Country: Uma propriedade dePassportInforetorna o país do passaporte inserido 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 dePassportInforetorna o número do passaporte inserido como uma string. Isso corresponde à segunda linha de dados MRZ, posições de 1 a 9.Surname: Uma propriedade dePassportInforetorna o sobrenome do passaporte como uma string. Isso corresponde à primeira linha de dados MRZ, posições 4 a 44.DateOfBirth: Uma propriedade dePassportInforetorna a data de nascimento do passaporte como uma string no formato AAAA-MM-DD. Isso corresponde à segunda linha de dados MRZ, posições 14 a 19.DateOfExpiry: Um membro da propriedadePassportInforetorna a data de validade do passaporte como uma string no formato AAAA-MM-DD. Isso corresponde à segunda linha de dados MRZ, posições 22 a 27.Gender: Retorna o gênero da posição 21 do MRZ comoGender.Male,Gender.FemaleouGender.Unspecified.DocumentType: Retorna o tipo de documento das posições 1-2 da MRZ, como "P" para passaporte, "PS" para serviço ou "PD" para diplomático.Nacionalidade: Retorna o nome completo do país em inglês, derivado das posições 11 a 13 da MRZ.NacionalidadeCode: Retorna o código ISO 3166-1 alfa-3 bruto das posições MRZ 11-13.IssuingCountryCode: Retorna o código ISO 3166-1 alfa-3 bruto para o estado emissor das posições MRZ 3-5.PersonalNumber: Retorna o número de identificação nacional opcional das posições MRZ 29-42.DateOfIssue: Retorna a data de emissão extraída da Zona de Inspeção Visual (VIZ) por meio de correspondência de rótulos com o melhor esforço possível em 27 idiomas.
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.
Primeira fila
| Posição | Campo | Descrição |
|---|---|---|
| 1 | Tipo de documento | Normalmente, 'P' significa passaporte. |
| 2-3 | País emissor | Código de país de três letras (ISO 3166-1 alfa-3) |
| 4-44 | Sobrenome e nome próprio | Sobrenome seguido de '<<' e depois nomes próprios separados por '<' |
Segunda fila
| Posição | Campo | Descrição |
|---|---|---|
| 1-9 | Número do passaporte | Número de passaporte único |
| 10 | Dígito verificador (número do passaporte) | Dígito verificador do número do passaporte |
| 11-13 | Nacionalidade | Código de nacionalidade de três letras (ISO 3166-1 alfa-3) |
| 14-19 | Data de nascimento | Data de nascimento no formato AAMMDD |
| 20 | Dígito verificador (data de nascimento) | Dígito verificador da data de nascimento |
| 21 | Sexo | Sexoo ('M' para masculino, 'F' para feminino, 'X' para não especificado) |
| 22-27 | Data de Expiração | Data de validade no formato AAMMDD |
| 28 | Dígito verificador (data de validade) | Dígito verificador da data de validade |
| 29-42 | Número pessoal | Número pessoal opcional (normalmente o número de identificação nacional) |
| 43 | Dígito de verificação (número pessoal) | Dígito verificador do número pessoal |
| 44 | Dí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 acima, 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);
Imports IronOcr
Imports System
' Instantiate OCR engine
Private ocr = New IronTesseract()
Private inputPassport = New OcrInput()
inputPassport.LoadImage("passport.jpg")
' Perform OCR
Dim result As OcrPassportResult = ocr.ReadPassport(inputPassport)
' Output Confidence level and raw extracted text
Console.WriteLine(result.Confidence)
Console.WriteLine(result.Text)

Confidence: A propriedadeConfidencedeOcrPassportResulté um número de ponto flutuante que indica a confiança na 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 propriedadeTextdeOcrPassportResultcontém o texto bruto, 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:
-
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.
-
Desempenho : Para processamento de alto volume, implemente suporte assíncrono e considere o processamento em lote com múltiplos passaportes.
-
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.
-
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.
- 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.

