C#でIronOCRを使ってパスポートデータを抽出する

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronOCRのReadPassportメソッドは、C#コード1行でパスポート画像から名前、パスポート番号、生年月日、有効期限などの構造化データを抽出し、入国審査やセキュリティ・アプリケーションに最適です。

空港のチェックインカウンターやセキュリティ入国審査など、係員が毎日大量のパスポートを取り扱うアプリケーションやシステムでは、ミッションクリティカルな旅行者情報を正確に抽出する信頼性の高いシステムを持つことが、効率的で合理的な入国審査プロセスを確保する上で極めて重要です。 IronOCR ライブラリは、機械学習の強化によりTesseract 5 を基盤として活用し、パスポートの読み取りに特化して最適化された高度な OCR 機能を提供します。

クイックスタート: パスポートのMRZ情報を1行で抽出する

この例では、OcrInputを使用してパスポート画像を読み込み、ReadPassport()を使用してデータを抽出し、返されたPassportInfoから名前、番号、日付などの構造化フィールドにアクセスする方法を示します。 複雑な設定は必要ありません。従来のTesseractの実装とは異なり、IronOCRはドキュメント抽出に特化したシンプルなAPIを提供します。

Nuget Icon今すぐ NuGet で PDF を作成してみましょう:

  1. NuGet パッケージ マネージャーを使用して IronOCR をインストールします

    PM > Install-Package IronOcr

  2. このコード スニペットをコピーして実行します。

    var passportInfo = new IronOcr.IronTesseract().ReadPassport(new IronOcr.OcrInput("passport.jpg")).PassportInfo;
  3. 実際の環境でテストするためにデプロイする

    今すぐ無料トライアルでプロジェクトに IronOCR を使い始めましょう
    arrow pointer

C#でパスポートデータを抽出するには?

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

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

ReadPassportからどのような出力が期待できますか?

抽出されたデータは、既存のシステムとの統合が容易な構造化された形式で返されます。 OcrResultクラスは、抽出されたすべての情報への包括的なアクセスを提供します。

OCR処理から抽出されたパスポートデータ(名前、国、パスポート番号、日付)を示すデバッグコンソール

次に、 OcrPassportResultオブジェクトから取得した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の位置に相当します。

パスポートからどのような MRZ 情報を抽出できますか?

IronOCRは(国際民間航空機関)ICAOの基準に従ったパスポートの下2行に含まれるMRZ情報を読み取ります。 MRZのデータは2つのデータ行で構成されており、それぞれの位置のセットには固有の情報が含まれています。 以下は、どの情報が行のインデックスに対応するかを示す簡単な表です。

IronOCRのMRZ解析機能は、印刷品質や画像の向きのばらつきを扱うように設計されています。 難しい文書には、画像補正フィルターを適用して、認識精度を向上させることができます。

MRZセクションはどのようなものですか?

MRZは通常、パスポートページの下部にあり、2行の標準テキストで構成されています。 MRZ の構造を理解することは、抽出に関する問題のトラブルシューティングや結果の検証に役立ちます。

機械可読ゾーン(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);
$vbLabelText   $csharpLabel

個人情報、国、エンコードされた文字列を含むパスポートデータの出力を示すVS Codeデバッグコンソール

  • Confidence : OcrPassportResultConfidenceプロパティは、各文字の平均として OCR の統計的精度の信頼性を示す浮動小数点数です。 パスポートの画像がぼやけていたり、他の情報が含まれている場合は、このフロートは低くなります。 1が最高で最も自信のあるもの、0が最低で最も自信のないものです。 本番アプリケーションでは、結果の信頼度しきい値を実装して、データの品質を確保することを検討してください。
  • Text : OcrPassportResultTextプロパティには、パスポート画像から抽出された未解析の生のテキストが含まれます。 開発者は、これをユニットテストで使用して、パスポート画像の抽出テキストを検証することができます。 高度なシナリオでは、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は毎日大量のパスポートを扱う空港での入国審査やセキュリティ・アプリケーションに最適です。ミッションクリティカルな旅行者情報を確実に抽出し、効率的な入国審査を実現します。

カーティス・チャウ
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

レビュー済み
Jeff Fritz
Jeffrey T. Fritz
プリンシパルプログラムマネージャー - .NETコミュニティチーム
Jeffはまた、.NETとVisual Studioチームのプリンシパルプログラムマネージャーです。彼は.NET Conf仮想会議シリーズのエグゼクティブプロデューサーであり、週に二回放送される開発者向けライブストリーム『Fritz and Friends』のホストを務め、テクノロジーについて話すことや視聴者と一緒にコードを書くことをしています。Jeffはワークショップ、プレゼンテーション、およびMicrosoft Build、Microsoft Ignite、.NET Conf、Microsoft MVPサミットを含む最大のMicrosoft開発者イベントのコンテンツを企画しています。
準備はできましたか?
Nuget ダウンロード 5,299,091 | バージョン: 2025.12 リリース