IronOCRを使用してパスポートデータを抽出する方法

チャクニット・ビン
チャクニット・ビン
2024年8月7日
更新済み 2025年2月16日
共有:
This article was translated from English: Does it need improvement?
Translated
View the article in English

空港のカウンターチェックインやセキュリティ入国審査のようなアプリケーションやシステムでは、エージェントが毎日大量のパスポートを扱わなければならないため、旅行者に関する重要なミッションクリティカルな情報を正確に抽出する信頼できるシステムを持つことが、効率的でスムーズな入国手続きを保証するために極めて重要です。

IronOCRは、パスポートからデータを抽出して読み取る作業を容易にする信頼性の高いツールです。 プロセスは、ReadPassport メソッドを簡単に呼び出すことで簡単になります。

今日から無料トライアルでIronOCRをあなたのプロジェクトで使い始めましょう。

最初のステップ:
green arrow pointer

この機能を使用するには、IronOcr.Extension.AdvancedScan パッケージもインストールする必要があります。

パスポートデータの抽出例

例として、IronOCRの機能を紹介するためにパスポート画像を入力として使用します。 OcrInputを使用して画像を読み込んだ後、ReadPassportメソッドを利用してパスポートから情報を識別および抽出することができます。 このメソッドは、GivenNamesCountryPassportNumberSurnameDateOfBirthDateOfExpiry などのプロパティを含む OcrPassportResult オブジェクトを返します。 PassportInfo オブジェクトのすべてのメンバーは文字列です。

次の内容にご注意ください。

  • このメソッドは現在、英語ベースのパスポートにのみ対応しています。
  • 高度なスキャンを .NET Framework で使用するには、プロジェクトを x64アーキテクチャで実行する必要があります。

パスポート入力

サンプル画像

コード

: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);
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 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

出力

結果出力

次に、OcrPassportResultオブジェクトから取得したPassportInfoデータメンバーにアクセスします。

  • GivenNames: PassportInfo のプロパティで、パスポートの入力に含まれる名を文字列として返します。 これは、最初のMRZデータ行の位置4から44までに対応しています。
  • Country: PassportInfoのプロパティは、パスポート入力の国を文字列として返します。 これは、発行国の略語ではなく、フルネームを綴る返された文字列で、2から3の位置にある最初のMRZデータ行に対応します。 例では、USAはアメリカ合衆国に戻ります。
  • PassportNumber: PassportInfoのプロパティは、パスポート入力の与えられた名前を文字列として返します。 これは、1から9の位置を持つ第二のMRZデータ行に対応します。
  • : PassportInfoのプロパティで、パスポート入力の姓を文字列として返します。 これは、最初のMRZデータ行の位置4から44までに対応しています。
  • DateOfBirth: PassportInfoのプロパティで、パスポート入力の生年月日をYYYY-MM-DDの形式の文字列で返します。 これは、位置14から19までの第2のMRZデータ行に対応します。
  • DateOfExpiry: PassportInfo のプロパティメンバーで、パスポート入力の有効期限を YYYY-MM-DD 形式の文字列として返します。 これは、位置22から27までの2番目のMRZデータ行に対応します。

MRZ情報の理解

IronOCRは、(国際民間航空機関) ICAOの基準に従った任意のパスポートの下部2行に含まれるMRZ情報を読み取ります。 MRZデータは2行のデータで構成されており、それぞれの位置セットには固有の情報が含まれています。 以下は、行のインデックスに対応する情報の簡単な表です。 すべての例外とユニーク識別子については、ICAO のドキュメント標準を参照してください。

例の入力:

MRZの位置

最初の行

Position Field Description
1Document TypeTypically 'P' for passport
2-3Issuing CountryThree-letter country code (ISO 3166-1 alpha-3)
4-44Surname and Given NamesSurname followed by '<<' and then given names separated by '<'

2行目

Position Field Description
1-9Passport NumberUnique passport number
10Check Digit (Passport Number)Check digit for the passport number
11-13NationalityThree-letter nationality code (ISO 3166-1 alpha-3)
14-19Date of BirthDate of birth in YYMMDD format
20Check Digit (Date of Birth)Check digit for the date of birth
21SexGender ('M' for male, 'F' for female, 'X' for unspecified)
22-27Date of ExpiryExpiry date in YYMMDD format
28Check Digit (Date of Expiry)Check digit for the date of expiry
29-42Personal NumberOptional personal number (usually national ID number)
43Check Digit (Personal Number)Check digit for the personal number
44Check Digit (Composite)Overall check digit

デバッグ

パスポート画像から抽出された生のテキストと信頼度を取得することで、IronOCRからの結果が正確であるかどうかを確認することもできます。 上記の例を使用して、OcrPassportResult オブジェクトの Confidence プロパティと Text プロパティにアクセスできます。

: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)
$vbLabelText   $csharpLabel

コンソール出力

デバッグ
  • 信頼度: OcrPassportResultConfidence プロパティは、文字ごとの平均としてOCR統計精度の信頼感を示す浮動小数点数です。 パスポート画像がぼやけていたり、他の情報が含まれている場合、この浮動小数点は低くなります。 1が最も高く最も自信がある状態であり、0が最も低く最も自信がない状態です。
  • Text: OcrPassportResultText プロパティは、パスポート画像から抽出された生の未解析のテキストを含みます。 開発者はユニットテストでこれを使用して、パスポート画像から抽出されたテキストを検証することができます。
チャクニット・ビン
ソフトウェアエンジニア
ChaknithはIronXLとIronBarcodeで作業しています。彼はC#と.NETに深い専門知識を持ち、ソフトウェアの改善と顧客サポートを支援しています。ユーザーとの対話から得た彼の洞察は、より良い製品、文書、および全体的な体験に貢献しています。