コンテンツに移動
デベロッパー

Document AI で身分証明書の処理を自動化

2022年6月9日
https://storage.googleapis.com/gweb-cloudblog-publish/images/doc_id_hero.max-2000x2000.png
Google Cloud Japan Team

※この投稿は米国時間 2022 年 6 月 2 日に、Google Cloud blog に投稿されたものの抄訳です。 

個人情報の記入欄があるフォームに入力したことは、これまでに数えきれないほどあるのではないでしょうか。オンラインでアカウントにログインしていれば、ブラウザの自動入力機能によって手間を省くことができますが、そうでない場合は、繰り返し同じ情報を手入力しなければなりません。このたび、Document AI 初となる Identity プロセッサの一般提供が始まり、こうした問題の解決に活用できるようになりました。

今回の投稿では、以下の方法をご紹介します。

  • Document AI を使用して身分証明書を処理する

  • 本人確認フォームの自動入力機能を独自に作成する

ユースケース

誰もがおそらく経験したことのある、以下のような状況で活用できます。

  • 金融口座: 企業側は個人の本人確認を行う必要があります。口座を開設する場合は、政府機関発行の身分証明書を手動で確認しなければなりません。

  • 交通機関網: 定期券を発行する事業者は、身分証明書のような独自のカードを利用者全員分、管理する場合があります。これらのカードは本人確認に使用されるため、身分証明用の写真を載せる必要があります。

  • 本人確認ゲート: 国境を越える際(または、国内に飛行機で移動する際も)、本人確認をパスする必要があります。主要なゲートであれば、プロセスが効率化されていて、通過量に応じて数を増減できるよう設備が整っているのが一般的です。一方、小規模な国境ゲートでは、場合によっては出国側でも入国側でも手作業によるプロセスをとっていて、長い行列と大幅な遅れが発生することがあります。

  • ホテル: 外国でホテルにチェックインする際、多くの場合は、パスポートを提示して確認を受ける必要があります。さらに、パスポートに記載されているのと同じ情報を、大きな用紙に記入するよう求められることもあります。

  • 顧客特典: 特典の利用資格証明書やポイントカードの発行を受けるには、一般的に、個人情報を提供しなければなりません。顔写真を求められることもあります。

これらの場面で求められる情報(顔写真を含む)は、身分証明書にすでに載っているものです。さらに言えば、公的機関によって検証済みの情報です。この信頼できる情報源のデータをそのまま確認して取得すれば、プロセスを迅速化、効率化できるだけでなく、エンドユーザーの煩わしさも大幅に軽減できます。

Identity プロセッサ

プロセッサの種類

Document AI の Identity プロセッサはそれぞれが機械学習モデルであり、以下のような標準的な身分証明書から情報を抽出するようトレーニングされています。

  • 運転免許証

  • 国民 ID

  • パスポート

https://storage.googleapis.com/gweb-cloudblog-publish/images/drivers_license_sample.max-1100x1100.png

メモ: 身分証明書の両面に情報が記載されている場合もあるため、Identity プロセッサはドキュメントあたり最大 2 ページを処理できるようになっています。

提供状況

今週から一般提供が開始され、以下の 2 種類の米国向け Identity プロセッサを本番環境で利用できるようになります。

https://storage.googleapis.com/gweb-cloudblog-publish/images/processor_types_returned.max-800x800.png

以下のプロセッサは、現在プレビュー版で利用可能です。

  • Identity Doc Fraud Detector(身分証明書偽造検出器): 身分証明書が改ざんされていないかを確認

  • 3 種類のフランス向け Identity プロセッサ

https://storage.googleapis.com/gweb-cloudblog-publish/images/processor_types.max-800x800.png

メモ:

プロセッサの作成

プロセッサは以下の方法で作成できます。

  • Cloud コンソール(ウェブ管理 UI)から手動で作成

  • API を使用してプログラムで作成

プロセッサはロケーションベースです。これにより、各プロセッサの処理が目的のロケーションで確実に行われます。

現在サポートされているマルチリージョン ロケーションは以下のとおりです。

https://storage.googleapis.com/gweb-cloudblog-publish/images/location_types.max-800x800.png

作成したプロセッサは ID(以下、「PROCESSOR_ID」)で参照できます。

https://storage.googleapis.com/gweb-cloudblog-publish/original_images/get_started_docAI.gif

メモ: プロセッサをプログラムで管理する場合は、Codelab「Python による Document AI プロセッサの管理」を確認してください。

ドキュメントの処理

以下の 2 つの方法でドキュメントを処理できます。

  • オンライン リクエストによる同期処理: 1 つのドキュメントを分析して、結果をそのまま使用

  • バッチ リクエストによる非同期処理: 複数の、または長大なドキュメントに対してバッチ処理オペレーションを実行

オンライン リクエスト

REST オンライン リクエストの例を以下に示します。

  • メソッドは process と命名されています。

  • ここでの入力ドキュメントは PNG 画像(base64 エンコード)です。

  • このリクエストは EU で処理されます。

  • レスポンスは同期的に返されます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/post_snippet.max-800x800.png

バッチ リクエスト

REST バッチ リクエストの例を以下に示します。

  • メソッドは batchProcess と命名されています。

  • batchProcess メソッドにより複数のドキュメントのバッチ処理が始まります。

  • このリクエストは米国で処理されます。

  • レスポンスは非同期で返されます。出力ファイルは my-storage-bucket/output/ に保存されます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/post_batch_snippet.max-800x800.png
https://storage.googleapis.com/gweb-cloudblog-publish/images/imput_doc_xml_snippet.max-800x800.png

インターフェース

Document AI は Google Cloud の通常のインターフェースで利用できます。

  • RPC API(低レイテンシの gRPC)

  • REST API(JSON 形式のリクエストとレスポンス)

  • クライアント ライブラリ(現在、gRPC ラッパーが Python、Node.js、Java で利用可能)

  • Cloud コンソール(ウェブ管理 UI)

メモ: クライアント ライブラリを使用すれば、好みのプログラミング言語で開発を行えます。この記事の後半で例をご紹介します。

本人情報フィールド

一般的な REST レスポンスは以下のようになります。

  • text と pages のフィールドには、基盤となる機械学習モデルによって検出された OCR データが格納されます。この部分は Document AI のすべてのプロセッサで共通です。

  • entities リストには、その身分証明書プロセッサによって実際に検出されたフィールドが格納されます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/text_anchor_xml_snippet.max-800x800.png

検出可能な本人情報フィールドは以下のとおりです。

https://storage.googleapis.com/gweb-cloudblog-publish/images/entity_types.max-800x800.png

なお、Address と MRZ Code は任意のフィールドです。たとえば、米国のパスポートには MRZ(機械可読領域)はありますが、住所は記載されていません。

不正行為の検出

Identity Doc Fraud Detector は、改ざんの試みを検出することができます(プレビュー版で利用可能)。身分証明書が Fraud Detector を「パス」しなかった場合、一般的には、自動プロセスは処理をブロックまたは人による検証をトリガーします。

以下は、返されるシグナルの例です。

https://storage.googleapis.com/gweb-cloudblog-publish/images/entity_types_returned.max-800x800.png

サンプルデモ

わずか数行のコードで、実際にドキュメントを処理できます。

以下は、Python を使用した例です。

https://storage.googleapis.com/gweb-cloudblog-publish/images/process_doc_code_snippet.max-800x800.png

この関数では、Python 用のクライアント ライブラリを使用しています。

  • 入力は file(プロセッサでサポートされている任意の形式)です。

  • client は API ラッパー(目的のロケーションで処理が行われるように構成したもの)です。

  • process_document が API の process メソッドを呼び出し、このメソッドから結果が数秒で返されます。

  • 出力は構造化された Document です。

検出されたフィールドの情報を集めるには、以下のようにドキュメント エンティティを解析します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/id_data_from_document_snippet.max-800x800.png

メモ: この関数は、フロントエンドに送信可能なマッピングを作成します。これと似た関数は、他の専用プロセッサでも使用できます。

以下の作業を行って、アプリを完成させます。

  • ユーザー エクスペリエンスとアーキテクチャを定義

  • バックエンドとバックエンド API を実装

  • HTML、CSS、JavaScript を組み合わせて使用し、フロントエンドを実装

  • いくつかの機能を追加: ファイルのアップロード、ドキュメントのサンプル、ウェブカメラによるキャプチャ

  • 本人確認フォームの自動入力機能は構築済みなので、これで完了

以下は、サンプルのウェブアプリを実際に操作している様子です。

https://storage.googleapis.com/gweb-cloudblog-publish/original_images/document_id_autofiller.gif

以下は、フランスの国民 ID カードを処理している様子です。クライアントから画像をドラッグ&ドロップしています。

https://storage.googleapis.com/gweb-cloudblog-publish/original_images/document_id_autofiller_with_id.gif

メモ: ドキュメントのページが複数ある場合は、PDF または TIFF のコンテナを使用できます。この例では、アップロードした 2 つの PNG 画像がバックエンドによって結合され、1 つの TIFF ファイルとして処理されています。

そして以下は、ノートパソコンの 720p ウェブカメラでキャプチャした、米国の運転免許証を処理している様子です。

https://storage.googleapis.com/gweb-cloudblog-publish/original_images/fr_doc_gif.gif

メモ:

  • ウェブカメラのキャプチャが傾いているにもかかわらず、検出された顔写真は真っすぐになっていることにお気づきですか?これは、Document AI によって入力ドキュメントの傾きがページ単位で自動補正されるからです。ドキュメントが上下逆さまになっていても問題ありません。

  • 一部のフィールド(日付など)は、標準化された値で返されます。こうすることで、デベロッパーによるこれらの値の格納、処理がより簡単になり、エラーも発生しにくくなります。

このデモのソースコードは、Document AI サンプルのリポジトリで入手できます。

関連リソース

Document AI プロセッサのファミリーは拡大し続けています。今後の情報にご注目ください。


- デベロッパー アドボケイト Laurent Picard
投稿先