C#でIronOCRを使ってパスポートデータを抽出する
IronOCRのReadPassportメソッドは、名前、パスポート番号、誕生日、有効期限などの情報を含むパスポート画像から構造化データを抽出し、C#コードの1行で移民やセキュリティアプリケーションに最適です。
空港のチェックインカウンターやセキュリティ入国審査など、係員が毎日大量のパスポートを取り扱うアプリケーションやシステムでは、ミッションクリティカルな旅行者情報を正確に抽出する信頼性の高いシステムを持つことが、効率的で合理的な入国審査プロセスを確保する上で極めて重要です。 IronOCR ライブラリは、Tesseract 5 を活用して機械学習を強化し、特にパスポート読み取り用に最適化された高度な OCR 機能を提供します。
クイックスタート:1行でPassport MRZ情報を抽出
この例では、PassportInfoから名前、番号、日付のような構造フィールドにアクセスする方法を示しています。 複雑な設定は必要ありません。従来のTesseractの実装とは異なり、IronOCRはドキュメント抽出に特化したシンプルなAPIを提供します。
最小限のワークフロー(5ステップ)
- パスポートを読み取るためのC#ライブラリをダウンロードする
- 読み取りのためにパスポート画像をインポート
- 文書にはヘッダーやフッターを含まず、パスポート画像のみを含むようにしてください
ReadPassportメソッドを使用して画像からデータを抽出します- OcrPassportResultプロパティにアクセスして、抽出されたパスポートデータを表示し、さらに操作します。
C#でパスポートデータを抽出するには?
例として、パスポート画像を入力として使用し、IronOCR の機能を紹介します。 ReadPassportメソッドを利用してパスポートから情報を識別し抽出します。 このメソッドは、OcrPassportResultオブジェクトを返します。
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データメンバーにアクセスします。 抽出プロセスでは、さまざまなパスポートのレイアウトや形式が自動的に処理されるため、発行国が異なっても一貫した結果が得られます。
GivenNames:PassportInfoのプロパティは、パスポート入力の与えられた名前を文字列として返します。 これは、最初のMRZデータ行の位置4から44に対応します。Country:PassportInfoのプロパティは、パスポート入力の国を文字列として返します。 返される文字列は、略称ではなく、発行国の正式名称を表しています。 この例では、USAは"アメリカ合衆国"を返します。PassportNumber:PassportInfoのプロパティは、パスポート入力のパスポート番号を文字列として返します。 これは、2番目のMRZデータ行の位置1から9に対応します。Surname:PassportInfoのプロパティは、パスポート入力の姓を文字列として返します。 これは、最初のMRZデータ行の位置4から44に対応します。DateOfBirth:PassportInfoのプロパティは、パスポート入力の生年月日を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: 視覚検査ゾーン(VIZ)からの発行日を27の言語にわたる最善の努力によるラベルマッチングを使用して抽出します。
パスポートからどのような 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の結果を検証するために、パスポート画像から生の抽出テキストと信頼度を取得し、抽出された情報が正確かどうかを確認することができます。 上記の例を用いて、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)
VS Codeデバッグコンソールがパスポートデータの出力を示しており、個人情報、国、およびエンコードされた文字列を含んでいます 
Confidence:Confidenceプロパティは、各文字のOCR統計的精度信頼性の平均を示すフロートです。 パスポートの画像がぼやけていたり、他の情報が含まれている場合は、このフロートは低くなります。 1が最高で最も自信のあるもの、0が最低で最も自信のないものです。 本番アプリケーションでは、結果の信頼度しきい値を実装して、データの品質を確保することを検討してください。Text:Textプロパティは、パスポート画像から抽出された生の未解析テキストを含みます。 開発者は、これをユニットテストで使用して、パスポート画像の抽出テキストを検証することができます。 高度なシナリオでは、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は毎日大量のパスポートを扱う空港での入国審査やセキュリティ・アプリケーションに最適です。ミッションクリティカルな旅行者情報を確実に抽出し、効率的な入国審査を実現します。
IronOCRは複数の言語をサポートしていますか?
IronOCRは複数言語をサポートしており、異なる言語でのテキスト認識を必要とするグローバルアプリケーションに対する多用途ツールです。
IronOCRは既存のアプリケーションに統合できますか?
IronOCRはC#を使用して既存のアプリケーションに簡単に統合できるよう設計されており、開発者がソフトウェアにOCR機能を少ない手間で追加できるようにします。
ドキュメント管理でIronOCRを使用する利点は何ですか?
IronOCRを使用することで、スキャンされた文書を検索可能かつ編集可能なテキストに変換し、手作業によるデータ入力を減らし、文書のアクセス性を向上させることでワークフローを効率化します。
IronOCRはデータ精度をどのように向上させますか?
IronOCRはその高度な認識アルゴリズムと画像補正機能により、信頼性が高く正確なテキスト抽出プロセスを保証します。
IronOCRの無料トライアルを利用できますか?
はい、Iron SoftwareはIronOCRの無料トライアルを提供しており、ユーザーが購入決定をする前にその機能と能力をテストできます。

