IronOCRを使用してパスポートデータを抽出する方法
空港のカウンターチェックインやセキュリティ入国審査のようなアプリケーションやシステムでは、エージェントが毎日大量のパスポートを扱わなければならないため、旅行者に関する重要なミッションクリティカルな情報を正確に抽出する信頼できるシステムを持つことが、効率的でスムーズな入国手続きを保証するために極めて重要です。
IronOCRは、パスポートからデータを抽出して読み取る作業を容易にする信頼性の高いツールです。 プロセスは、ReadPassport
メソッドを簡単に呼び出すことで簡単になります。
IronOCRを使用してパスポートデータを抽出する方法
- パスポートを読み取るためのC#ライブラリをダウンロード
- パスポート画像を読み込むためにインポートします。
- ドキュメントには、ヘッダーやフッターを含まずにパスポート画像のみが含まれるようにしてください。
ReadPassport
メソッドを使用して画像からデータを抽出します- OcrPassportResult プロパティにアクセスして、抽出されたパスポートデータを表示およびさらに操作します。
今日から無料トライアルでIronOCRをあなたのプロジェクトで使い始めましょう。
この機能を使用するには、IronOcr.Extension.AdvancedScan パッケージもインストールする必要があります。
パスポートデータの抽出例
例として、IronOCRの機能を紹介するためにパスポート画像を入力として使用します。 OcrInputを使用して画像を読み込んだ後、ReadPassport
メソッドを利用してパスポートから情報を識別および抽出することができます。 このメソッドは、GivenNames、Country、PassportNumber、Surname、DateOfBirth、DateOfExpiry などのプロパティを含む 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)
出力

次に、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 のドキュメント標準を参照してください。
例の入力:

最初の行
Position | Field | Description |
---|---|---|
1 | Document Type | Typically 'P' for passport |
2-3 | Issuing Country | Three-letter country code (ISO 3166-1 alpha-3) |
4-44 | Surname and Given Names | Surname followed by '<<' and then given names separated by '<' |
2行目
Position | Field | Description |
---|---|---|
1-9 | Passport Number | Unique passport number |
10 | Check Digit (Passport Number) | Check digit for the passport number |
11-13 | Nationality | Three-letter nationality code (ISO 3166-1 alpha-3) |
14-19 | Date of Birth | Date of birth in YYMMDD format |
20 | Check Digit (Date of Birth) | Check digit for the date of birth |
21 | Sex | Gender ('M' for male, 'F' for female, 'X' for unspecified) |
22-27 | Date of Expiry | Expiry date in YYMMDD format |
28 | Check Digit (Date of Expiry) | Check digit for the date of expiry |
29-42 | Personal Number | Optional personal number (usually national ID number) |
43 | Check Digit (Personal Number) | Check digit for the personal number |
44 | Check 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)
コンソール出力:

- 信頼度:
OcrPassportResult
のConfidence
プロパティは、文字ごとの平均としてOCR統計精度の信頼感を示す浮動小数点数です。 パスポート画像がぼやけていたり、他の情報が含まれている場合、この浮動小数点は低くなります。 1が最も高く最も自信がある状態であり、0が最も低く最も自信がない状態です。 - Text:
OcrPassportResult
のText
プロパティは、パスポート画像から抽出された生の未解析のテキストを含みます。 開発者はユニットテストでこれを使用して、パスポート画像から抽出されたテキストを検証することができます。