IronOCRを使用してパスポートデータを抽出する方法

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

カーティス・チャウによる

空港のカウンターチェックインやセキュリティ入国審査のようなアプリケーションやシステムでは、エージェントが毎日大量のパスポートを扱わなければならないため、旅行者に関する重要なミッションクリティカルな情報を正確に抽出する信頼できるシステムを持つことが、効率的でスムーズな入国手続きを保証するために極めて重要です。

IronOCRは、パスポートからデータを抽出して読み取る作業を容易にする信頼性の高いツールです。 プロセスは、ReadPassport メソッドを呼び出すだけで簡単になります。

申し訳ありませんが、翻訳するコンテンツのテキストを提供してください。その後、英語から日本語に翻訳いたします。!-- RENDER.PHP -- NUGET LIBRARY DOWNLOAD DIRECTIVE TAG :: START -->

今日から無料トライアルでIronOCRをあなたのプロジェクトで使い始めましょう。

最初のステップ:
green arrow pointer

申し訳ありませんが、翻訳するコンテンツのテキストを提供してください。その後、英語から日本語に翻訳いたします。!-- RENDER.PHP -- NUGET ライブラリ ダウンロード ディレクティブ タグ :: 終了 -->

この機能を使用するには、もインストールする必要があります。IronOcr.Extension.AdvancedScanパッケージ。

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

例として、IronOCRの機能を紹介するためにパスポート画像を入力として使用します。 OcrInputを使用して画像を読み込んだ後、ReadPassportメソッドを利用してパスポートから情報を識別し抽出できます。 このメソッドは、GivenNamesCountryPassportNumberSurnameDateOfBirth、および 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)
VB   C#

出力

結果出力

次に、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は、標準に従ったパスポートの下部2行に含まれるMRZ情報を読み取ります。(国際民間航空機関) ICAO. MRZデータは2行のデータで構成されており、それぞれの位置セットには固有の情報が含まれています。 以下は、行のインデックスに対応する情報の簡単な表です。 例外や一意の識別子については、次を参照してください:ICAOドキュメント標準。

例のパスポート入力:

MRZの位置

ファーストロウ

ポジション フィールド 説明
ドキュメントタイプ通常、「P」はパスポートを指します。
-3発行国文字の国コード(ISO 3166-1 alpha-3)
-44姓と名苗字に続く「<<' and then given names separated by '<'

セカンドロー

ポジション フィールド 説明
-9パスポート番号ユニークパスポート番号
0チェックデジット(パスポート番号)パスポート番号のチェックディジット
1-13国籍文字の国籍コード(ISO 3166-1 alpha-3)
4-19生年月日生年月日(YYMMDD形式)
0チェックディジット(生年月日)生年月日のチェックデジット
1セックス性別(男は「M」、女は「F」、未指定は「X」)
2-27有効期限YYMMDD形式の有効期限
8チェックデジット(有効期限)有効期限の日付のチェックディジット
9-42個人番号オプションの個人番号(通常は国民ID番号)
3チェックデジット(個人番号)個人番号のチェックデジット
4チェックディジット(コンポジット)全体チェックディジット

デバッグ

パスポート画像から抽出された生のテキストと信頼度を取得することで、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)
VB   C#

コンソール出力:

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