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

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

空港のカウンターチェックインやセキュリティ入国審査などのアプリケーションやシステムでは、係員が毎日大量のパスポートを取り扱う必要があり、渡航者に関するミッションクリティカルな重要情報を正確に抽出できる信頼性の高いシステムを持つことが、入国審査のプロセスを効率的かつ合理化するために不可欠です。

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

数秒でパスポートの読み取りを開始します。この例では、 OcrInputを使用してパスポート画像を読み込み、 ReadPassport()を使用してデータを抽出し、返されたPassportInfoから名前、番号、日付などの構造化フィールドにアクセスすることがいかに簡単かを示しています。 複雑な設定は不要で、単純な 1 行だけです。

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

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

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

ブラケットオープン

  • この方法は現時点では英語ベースのパスポートに対してのみ機能します。
  • .NET Framework で詳細スキャンを使用するには、プロジェクトを x64 アーキテクチャで実行する必要があります。
  • Mac ユーザーの場合、 ReadPassportメソッドでは現在、入力が自動的に回転されないことに注意してください。 入力を使用する場合は、MRZ が常にファイルの下部にあることを確認してください。そうでない場合、プロセスは失敗します。 ブラケットを閉じる

パスポート入力

サンプル画像

コード

: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のプロパティは、パスポート入力の名を文字列として返します。 これは、位置が 4 から 44 の最初の MRZ データ行に対応します。
  • Country : PassportInfoのプロパティは、パスポート入力の国を文字列として返します。 これは、位置 2 から 3 までの最初の MRZ データ行に対応します。返される文字列には、発行国の略語ではなく、完全な名前が表示されます。 この例では、USA は"United States of America"を返します。
  • PassportNumber : PassportInfoのプロパティは、入力されたパスポートのパスポート番号を文字列として返します。 これは、位置が 1 ~ 9 の 2 番目の MRZ データ行に対応します。
  • Surname : PassportInfoのプロパティは、パスポート入力の姓を文字列として返します。 これは、位置が 4 から 44 の最初の MRZ データ行に対応します。
  • 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 つのデータ行で構成され、各位置セットには一意の情報が含まれています。 以下に、行のインデックスに対応する情報を示す簡単な表を示します。

入力例

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

コンソール出力

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

よくある質問

C#でOCRを使用してパスポートデータを抽出するにはどうすればよいですか?

IronOCRのReadPassportメソッドを使用して、C#でパスポートデータを抽出できます。まず、IronOCRライブラリとIronOcr.Extension.AdvancedScanパッケージをインストールしてください。パスポート画像をインポートして、データを取得するためにReadPassportを呼び出します。

IronOCRを使用してパスポートからどのような情報を抽出できますか?

IronOCRは、名前、国、パスポート番号、姓、生年月日、有効期限などの詳細をパスポートから抽出できます。

パスポート上の機械読み取りゾーン(MRZ)とは何ですか?

MRZはパスポートの下部2行に位置しており、重要なデータが含まれています。IronOCRはこのゾーンを読み取り、ICAO基準に従って情報を抽出します。

IronOCRでReadPassportメソッドを使用するための要件は何ですか?

高度なスキャニング機能のためにIronOcr.Extension.AdvancedScanパッケージをインストールし、プロジェクトがx64アーキテクチャで動作することを確認する必要があります。

IronOCRは抽出されたパスポートデータの精度を確認するために使用できますか?

はい、OcrPassportResultオブジェクトのConfidenceプロパティを使用して抽出されたデータの精度を確認できます。1に近い値が高い信頼度を示します。

アイロンOCRはパスポートデータ抽出のためにどの言語に対応していますか?

現在、IronOCRは英語ベースのパスポートに対してデータ抽出をサポートしています。

IronOCRはパスポートから抽出されたテキストをどのように処理しますか?

抽出されたデータはOcrPassportResultオブジェクトに格納され、各メンバーは簡単にアクセスして操作できるように文字列として表されます。

'Text'プロパティは、OcrPassportResultオブジェクトでどのように使用されますか?

'Text'プロパティを使用してパスポートから抽出されたテキストにアクセスして確認し、情報が正確かつ完全であることを確認します。

パスポート画像にヘッダーやフッターが含まれている場合はどうすればよいですか?

ヘッダーやフッターがなくなったパスポート画像をIronOCRで使用してください。これらはデータ抽出プロセスの精度に干渉する可能性があります。

IronOCRをパスポートで使用する際の一般的なトラブルシューティングのヒントは何ですか?

正しいパッケージがインストールされていることを確認し、画像がクリアで適切にトリミングされていることを確認し、最適なパフォーマンスを得るためにアーキテクチャの互換性(x64)を確認してください。

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

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,167,857 | Version: 2025.11 リリース