C#でIronOCRを使ってパスポートデータを抽出する
IronOCRのReadPassportメソッドは、C#コード1行でパスポート画像から氏名、パスポート番号、生年月日、有効期限などの構造化データを抽出するため、入国管理やセキュリティ用途に最適です。
空港のチェックインカウンターやセキュリティ入国審査など、係員が毎日大量のパスポートを取り扱うアプリケーションやシステムでは、ミッションクリティカルな旅行者情報を正確に抽出する信頼性の高いシステムを持つことが、効率的で合理的な入国審査プロセスを確保する上で極めて重要です。 IronOCR ライブラリは、Tesseract 5 を活用して機械学習を強化し、特にパスポート読み取り用に最適化された高度な OCR 機能を提供します。
クイックスタート:1行でPassport MRZ情報を抽出
この例では、PassportInfoから名前、番号、日付などの構造化されたフィールドにアクセスする方法を示しています。 複雑な設定は必要ありません。従来のTesseractの実装とは異なり、IronOCRはドキュメント抽出に特化したシンプルなAPIを提供します。
最小限のワークフロー(5ステップ)
- パスポートを読み取るためのC#ライブラリをダウンロードする
- 読み取りのためにパスポート画像をインポート
- 文書にはヘッダーやフッターを含まず、パスポート画像のみを含むようにしてください
ReadPassportメソッドを使用して画像からデータを抽出します- OcrPassportResultプロパティにアクセスして、抽出されたパスポートデータを表示し、さらに操作します。
C#でパスポートデータを抽出するには?
例として、パスポート画像を入力として使用し、IronOCR の機能を紹介します。 OcrInput を使用して画像を読み込んだ後、ReadPassport メソッドを利用してパスポートから情報を識別・抽出することができます。 このメソッドは OcrPassportResult オブジェクトを返します。このオブジェクトには、国籍Code, IssuingCountryCode, PersonalNumber, および DateOfIssue。
ReadPassport メソッドは、IronOCRの特殊な文書読み取り機能の一部であり、この機能にはナンバープレート、MICR小切手、その他の構造化文書の読み取り用メソッドも含まれています。 この方法では、高度なコンピュータ・ビジョン技術を使用して、MRZ(Machine Readable Zone)領域を自動的に見つけて抽出します。
[{私:(
- この方法は現在、英語ベースのパスポートにのみ有効です。
- .NET Framework で詳細スキャンを使用するには、プロジェクトを x64 アーキテクチャで実行する必要があります。
- Macユーザーの方は、
ReadPassportメソッドでは現在、入力が自動的に回転しない点にご注意ください。 入力を使用する場合は、MRZ が常にファイルの下部にあることを確認してください。そうでない場合、プロセスは失敗します。
)}]
どのようなパスポート画像フォーマットを使用すればよいですか?
IronOCRはJPG、PNG、TIFF、BMPを含む様々な画像フォーマットをサポートしています。最適な結果を得るためには、パスポートの画像が適切な解像度(少なくとも300DPI)と適切な明るさを持っていることを確認してください。 DPI設定は、低画質のスキャンで作業する場合に調整できます。
パスポート データを抽出するにはどのようなコードが必要ですか?
次の例は、パスポートのデータ抽出の完全なプロセスを示しています。 複数のパスポートを処理するアプリケーションでは、マルチスレッド サポートを実装してパフォーマンスを向上させることを検討してください。 また、OCRの進捗状況を追跡することもできます。
: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
ReadPassportからどのような出力が期待できますか?
抽出されたデータは、既存のシステムとの統合が容易な構造化された形式で返されます。 OcrResultクラスは、抽出されたすべての情報への包括的なアクセスを提供します。
次に、PassportInfo オブジェクトから取得した OcrPassportResult データメンバーにアクセスします。 抽出プロセスでは、さまざまなパスポートのレイアウトや形式が自動的に処理されるため、発行国が異なっても一貫した結果が得られます。
GivenNames:PassportInfoのプロパティは、Passport入力の指定された名前を文字列として返します。 これは、MRZデータの最初の行、ポジション4から44に相当します。Country:PassportInfoのプロパティは、入力されたパスポートの国を文字列として返します。 返される文字列は、略称ではなく、発行国の正式名称を表しています。 この例では、USAは"アメリカ合衆国"を返します。PassportNumber:PassportInfoのプロパティは、パスポート入力のパスポート番号を文字列として返します。 これは、2番目のMRZデータ行、ポジション1から9に相当します。Surname:PassportInfoのプロパティは、passport入力の姓を文字列として返します。 これは、MRZデータの最初の行、ポジション4から44に相当します。DateOfBirth:PassportInfoのプロパティは、Passportインプットの生年月日をYYYY-MM-DD形式の文字列として返します。 これは、2番目のMRZデータ行の14から19の位置に相当します。DateOfExpiry:PassportInfoのプロパティメンバーは、パスポート入力の有効期限を YYYY-MM-DD の形式の文字列として返します。 これは、2番目のMRZデータ行の22から27の位置に相当します。Gender: MRZの21番目の位置にある性別を、Gender.Unspecifiedとして返します。DocumentType: MRZの1~2番目の位置から文書の種類を返します。例えば、パスポートは"P"、サービスは"PS"、外交用は"PD"などです。国籍: MRZの11~13番目の位置から導出された、英語の国名(正式名称)を返します。国籍Code: MRZの11~13番目の位置から、生のISO 3166-1 alpha-3コードを返します。IssuingCountryCode: MRZの3~5番目の位置から、発行国のISO 3166-1 alpha-3コードの生データを返します。PersonalNumber: MRZの29~42番目の位置から、任意の国民ID番号を返します。DateOfIssue: 27言語にわたるベストエフォート方式のラベル照合を通じて、ビジュアルインスペクションゾーン(VIZ)から抽出された発行日を返します。
パスポートからどのような MRZ 情報を抽出できますか?
IronOCRは(国際民間航空機関)ICAOの基準に従ったパスポートの下2行に含まれるMRZ情報を読み取ります。 MRZのデータは2つのデータ行で構成されており、それぞれの位置のセットには固有の情報が含まれています。 以下は、どの情報が行のインデックスに対応するかを示す簡単な表です。
IronOCRのMRZ解析機能は、印刷品質や画像の向きのばらつきを扱うように設計されています。 難しい文書には、画像補正フィルターを適用して、認識精度を向上させることができます。
MRZセクションはどのようなものですか?
MRZは通常、パスポートページの下部にあり、2行の標準テキストで構成されています。 MRZ の構造を理解することは、抽出に関する問題のトラブルシューティングや結果の検証に役立ちます。
1行目
| ポジション | フィールド | 翻訳内容 |
|---|---|---|
| 1 | 文書の種類 | 通常、パスポートの"P" |
| 2-3 | 発行国 | 3文字の国コード(ISO 3166-1 alpha-3) |
| 4-44 | 姓と名 | 姓の後に"<<"が続き、その後に名が"<"で区切られます |
2行目
| ポジション | フィールド | 翻訳内容 |
|---|---|---|
| 1-9 | パスポート番号 | 固有のパスポート番号 |
| 10 | チェックディジット(パスポート番号) | パスポート番号のチェックデジット |
| 11-13 | 国籍 | 3文字の国籍コード(ISO 3166-1 alpha-3) |
| 14-19 | 生年月日 | 生年月日(YYMMDD形式) |
| 20 | チェックディジット(生年月日) | 生年月日のチェックデジット |
| 21 | セックス | 性別(男性は"M"、女性は"F"、未指定は"X") |
| 22-27 | 有効期限 | YYMMDD形式の有効期限 |
| 28 | チェックディジット(有効期限) | 有効期限のチェックデジット |
| 29-42 | 個人番号 | オプションの個人番号(通常は国民ID番号) |
| 43 | チェックディジット(個人番号) | 個人番号のチェックデジット |
| 44 | チェックディジット(複合) | 全体のチェックディジット |
パスポート抽出結果をデバッグおよび検証するにはどうすればよいですか?
また、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)

Confidence:ConfidenceプロパティはOcrPassportResultから取得される float 型で、全文字の平均値として OCR の統計的精度の信頼度を示します。 パスポートの画像がぼやけていたり、他の情報が含まれている場合は、このフロートは低くなります。 1が最高で最も自信のあるもの、0が最低で最も自信のないものです。 本番アプリケーションでは、結果の信頼度しきい値を実装して、データの品質を確保することを検討してください。Text:Textプロパティ(OcrPassportResultから取得)には、パスポート画像から抽出された、解析前の生のテキストが含まれています。 開発者は、これをユニットテストで使用して、パスポート画像の抽出テキストを検証することができます。 高度なシナリオでは、hOCR形式で結果をエクスポートして、さらに分析することができます。
パスポート スキャン アプリケーションのベスト プラクティス
本番環境でパスポートスキャンを実施する場合は、以下の追加要素を考慮してください:
1.画像の品質: 入力画像が最低限の品質基準を満たしていることを確認します。 フィルタ ウィザードは、より良い認識のために画像を最適化するのに役立ちます。
2.パフォーマンス:大量処理の場合は、asyncサポートを実装し、複数のパスポートのバッチ処理を検討してください。
3.セキュリティ:パスポートのデータは機密性が高いため、適切なデータの取り扱いを保証し、安全な文書管理システムとの統合を検討してください。
4.バリデーション: 抽出されたMRZデータのチェックデジットバリデーションを実装し、正確性を確保する。 MRZフォーマットには、抽出された情報の整合性を確認するために使用できる複数のチェック数字が含まれています。
5.エラー処理: パスポート画像が破損していたり、光が弱かったり、非標準の形式を含んでいたりする場合に備えて、堅牢なエラー処理を実装します。
よくある質問
C#で画像からパスポートデータを抽出するには?
IronOCRのReadPassportメソッドを使ってパスポートデータを抽出することができます。パスポート画像をOcrInputで読み込み、ReadPassport()を呼び出すだけで、名前、パスポート番号、生年月日、有効期限を含む構造化データを1行のコードで取得できます。
自動的に抽出できるパスポート情報とは?
IronOCRのReadPassportメソッドはパスポート画像からGivenNames、Country、PassportNumber、Surname、DateOfBirth、DateOfExpiryを抽出します。すべてのデータは構造化されたPassportInfoオブジェクトの文字列として返されます。
パスポートMRZデータを読むには、複雑な設定が必要ですか?
複雑な設定は必要ありません。IronOCRは、より多くの設定を必要とする従来のTesseract実装とは異なり、たった1行のコードでパスポートMRZデータを抽出する簡素化されたAPIを提供します。
パスポートの読み取り機能を支える技術は何ですか?
IronOCRはTesseract 5を活用し、機械学習と高度なコンピューター・ビジョン技術により、パスポート画像からMRZ(Machine Readable Zone)領域を自動的に特定・抽出します。
空港の出入国管理システムに使えますか?
IronOcrは毎日大量のパスポートを扱う空港での入国審査やセキュリティ・アプリケーションに最適です。ミッションクリティカルな旅行者情報を確実に抽出し、効率的な入国審査を実現します。

