このページの本文へ

松本典子の「はじめよう!Azure Logic Apps/Power Automateでノーコード/ローコード」 第30回

Azure AIサービスの「Document Intelligence」とAzure Logic Appsで作るワークフロー

AIがメールで届いた請求書の内容を自動抽出する仕組みを作ってみよう

2023年10月03日 08時00分更新

文● 松本典子 編集● 大塚/TECH.ASCII.jp

  • この記事をはてなブックマークに追加
  • 本文印刷

 こんにちは、Microsoft MVP(Azure / Business Applications)の松本典子です。

 皆さんも、毎月決まったタイミングで請求書などの定型書類をメールで受け取ることがあると思います。たとえば毎月、下図のような形式の請求書を、メールの添付ファイル(PDFファイル)として受け取っているとします。

請求書のサンプル

 届いたメールを開けて、添付ファイルを開き、請求書の内容を目視確認する――。通数が少なければ大した手間ではありませんが、数が増えてくると面倒です。わざわざファイルを開くことなく、自動的に請求書の概要情報(請求先、合計金額、支払期限など)が抽出できたら、とても便利ではないでしょうか?

 今回は「Azure Logic Apps」と、Azure AIサービスの「Document Intelligence」を利用し、メールに添付されたPDF形式の請求書ファイルの内容を自動的に解析/抽出して、概要情報を「Microsoft Teams」に自動投稿する仕組みをノーコードで作ってみましょう。

 なおPower Automateにも同様のコネクタがありますので、今回のフローはPower Automateでも作成が可能です。

1. 事前準備

 ワークフロー作成前に以下の準備をしてください。

1-1. Microsoft Teamsのチャネル作成

 まずはTeamsに、請求書の概要情報を投稿するためのチャネルを1つ作成します。今回は「請求書関連」というチャネル名にしました。

1-2. OneDriveのフォルダー作成

 今回のワークフローでは、受信した請求書ファイルをいったん「OneDrive for Business」に保存し、そのうえで内容の解析/抽出処理を行います。そこで、OneDrive for Business内にわかりやすい名前のフォルダーを1つ作成します(今回は「LogicApps-請求書」という名前にしました)。

 なお今回作成するワークフローには、メールの添付ファイルをOneDriveに自動保存する部分は含まれません。本連載の第3回記事でご紹介していますので、そちらを参考に別途ワークフローを作ってください。

2. Document Intelligenceとは

 今回は、Azure AIサービスの1つである「Document Intelligence」を利用します。

 Document Intelligence(旧称:Form Recognizer)は、機械学習モデルを使って、与えられたドキュメントからキーと値のペア、テキスト、テーブルを抽出するクラウドサービスです。「キーと値のペア」というのは、たとえば「商品A(キー)が10個(値)」「合計金額(キー)が15000円(値)」といった、項目と値が組み合わさった情報のことです。

2-1. Document Intelligenceの準備

Azureポータルの「すべてのサービス」画面

 Document Intelligenceを使うための準備をしましょう。まずはAzureポータルにサインインし、ポータルメニュー内の「すべてのサービス」をクリックします。

 画面左メニューから「AI + Machine Learning」をクリックすると、Azure AIサービスの一覧が表示されます。「Document Intelligence」にマウスオーバーすると「+」が表示されるので、これをクリックします。

「Form Recognizerの作成」画面

 「Form Recognizerの作成」の画面が表示されます。サービス名が旧称のままですが、Document Intelligenceの作成画面です。以下のとおり、必要な内容を入力してます。

 (1)サブスクリプション:利用するサブスクリプションが選択されているか確認
 (2)リソースグループ:「新規作成」をクリックすると名前入力が表示されるので、わかりやすい名前を入力(半角英数字)して「OK」をクリック
 (3)リージョン:今回は「Japan East(東日本)」を選択
 (4)名前:わかりやすい名前を入力(半角英数字)
 (5)価格レベル:無料の「Free F0」を選択

 (1)~(5)の入力が完了したら「確認と作成」をクリックします。

2-2. Document Intelligenceのキーとエンドポイントの確認

 リソースの作成(デプロイ)処理が実行され、10~20秒ほどで「デプロイが完了しました」という画面が表示されます。表示されたら「リソースに移動」ボタンをクリックします。

「Key and Endpoint」の画面

 左メニューの「Key and Endpoint」をクリックすると、Document IntelligenceのAPIへのアクセスに必要なキーとエンドポイントが表示されます。

 上図の赤枠内の情報は、のちほどワークフローを作成する中で利用するので、テキストエディタなどにコピー&ペーストして保存しておきます。また、このキーとエンドポイントは他人には公開しない(知られない)ように気をつけてください。

3. Azure Logic Appsを新規作成する

Azureポータル「すべてのサービス」画面

 続いて、Logic Appsのワークフローを作成していきます。

 Azureポータルで「すべてのサービス」画面を開き、左メニューの「統合」をクリックします。表示されるサービス一覧で「ロジックアプリ」にマウスオーバーすると「+」が表示されるので、これをクリックします。

「ロジックアプリの作成」画面

 「ロジックアプリの作成」画面に遷移するので、以下の内容を入力します。

 (1)サブスクリプション:利用するサブスクリプションが選択されているか確認
 (2)リソースグループ:「2-1. Document Intelligenceの準備」で新規作成したリソースグループを選択
 (3)ロジックアプリ名:わかりやすい名前を入力(半角英数字)
 (4)公開:「ワークフロー」を選択
 (5)地域:今回は「Japan East(東日本)」を選択

「ロジックアプリの作成」画面(続き)

 (6)ログ分析を有効化:今回は「いいえ」を選択
 (7)プランの種類:「消費」を選択
 (8)ゾーン冗長:「無効」を選択

 (1)~(8)の入力が完了したら「確認と作成」をクリックします。

 リソースの作成(デプロイ)処理が実行され、10~20秒ほどで「デプロイが完了しました」という画面が表示されます。表示されたら「リソースに移動」ボタンをクリックします。

空のロジックアプリ

 赤枠内の「空のロジックアプリ」をクリックし、ワークフローの作成を開始します。

4. ワークフロー全体図

ワークフロー全体図

 今回作成するワークフローの全体像は上図のとおりです。請求書ファイルがOneDriveの指定フォルダーに保存されたら、Azure AIサービスのDocument Intelligenceを利用して内容を解析/抽出し、抽出された情報をTeamsの指定チャネルに投稿します。

4-1. トリガーの設定

 OneDriveの指定フォルダーにファイルが作成されたら、それをトリガーとしてワークフローが起動するよう設定します。今回は請求書を扱うので、ビジネス向けのOneDrive for Businessを利用します。

トリガー(「OneDrive for Business」コネクタ)の設定

 検索窓に「OneDrive」と入力して、「OneDrive for Business」コネクタを選択します。トリガー一覧から「ファイルが作成されたとき」をクリックします。

 (1)フォルダー:「1-2. OneDriveのフォルダー作成」で作成したフォルダーを選択(今回は「LogicApps-請求書」)
 (2)サブフォルダーを含める:「いいえ」を選択
 (3)コンテンツタイプの推測:「はい」を選択
 (4)項目を確認する頻度:OneDriveに新たな添付ファイルが保存されているかどうかを確認するサイクル(今回は「3分」としましたが、適宜変更してください)

4-2. アクションの設定:事前ビルドまたはカスタム モデル用のドキュメント分析 (v3.0 API)

 続いて、OneDriveに保存された請求書ファイルをDocument Intelligenceに渡し、内容を解析/抽出する処理を行います。ここでは「Form Recognizer」コネクタを利用します。

 これもまだ旧称のままですが、Document Intelligenceのコネクタです。以前からあるコネクタですが、最近になって日本語対応のAPI(v3.0)が利用できるようになりました。

アクションの設定:事前ビルドまたはカスタム モデル用のドキュメント分析 (v3.0 API)

 検索窓に「Form Recognizer」と入力して「Form Recognizer」コネクタを選択し、アクション一覧から「事前ビルドまたはカスタム モデル用のドキュメント分析 (v3.0 API)」をクリックします。

 なお、初めてこのコネクタを利用する場合は、API接続の設定が必要です。以下のように入力してください。

 (1)接続名:わかりやすい名前を入力(半角英数字)
 (2)Endpoint URL:「2-2. Document Intelligenceのキーとエンドポイントの確認」のエンドポイントURLを入力
 (3)Account Key:「2-2. Document Intelligenceのキーとエンドポイントの確認」のAPIキーを入力

アクションの設定:事前ビルドまたはカスタム モデル用のドキュメント分析 (v3.0 API)

 Document Intelligenceに接続できると上図の表示に変わるので、それぞれ内容を入力します。

 (1)モデル識別子:今回は請求書を解析するので「prebuilt-invoice」を入力
 (2)ドキュメント/画像のファイルコンテンツ:「ファイルが作成されたとき」の動的なコンテンツ「ファイルコンテンツ」を選択

4-3. アクションの設定:For each

制御コネクタ

 For eachアクションは「制御」コネクタで提供されます。検索窓に「制御」と入力して「制御」コネクタを選択し、アクション一覧から「For each」をクリックします。

 なおここでFor eachアクションを使うのは、Document Intelligenceが1つのファイルから抽出した複数の情報が動的なコンテンツ「documents」にまとめて格納されており、それらを1つずつ取り出して処理するためです。For each(Power Automateでは「Apply to each」)の動作については、本連載の第12回を参照してください。

アクションの設定:For each

 For eachアクションの「以前の手順から出力を選択」では、動的なコンテンツから「事前ビルドまたはカスタム モデル用のドキュメント分析 (v3.0 API)」の「documents」を設定します。

4-4. アクションの設定:チャットまたはチャネルでメッセージを投稿する

 Document Intelligenceが解析/抽出した情報を、「1-1. Microsoft Teamsのチャネル作成」で作成したTeamsチャネルに投稿します。

アクションの設定:チャットまたはチャネルでメッセージを投稿する

 検索窓に「Teams」と入力して「Microsoft Teams」コネクタを選択し、アクション一覧から「チャットまたはチャネルでメッセージを投稿する」をクリックします。

 (1)投稿者:「フローボット」を選択
 (2)投稿先:「Channel」を選択
 (3)Team:該当のチームを選択
 (4)Channel:「1-1. Microsoft Teamsのチャネル作成」で作成したチャネル名を選択
 (5)Message:Teamsに投稿するメッセージ内容を入力

 (5)のメッセージ内容は、上図を参考にしながら次のように入力します。

 「請求書ファイル名」には、「ファイルが作成されたとき」の動的なコンテンツ「ファイル名」を入力します。

 また請求書から抽出した情報をTeamsに投稿するため、以下のそれぞれの項目は、次のような「式」を入力します。

 請求書送信元items('For_each')?['fields']?['VendorName']?['content']
 請求書 IDitems('For_each')?['fields']?['InvoiceId']?['content']
 支払い期限items('For_each')?['fields']?['DueDate']?['content']
 請求額items('For_each')?['fields']?['InvoiceTotal']?['content']
 請求額(信頼度)items('For_each')?['fields']?['InvoiceTotal']?['Confidence']

 なお最後の項目「請求額(信頼度)」には、AIが解析/抽出した結果(請求額)の信頼度を示す数値が入ります(数値が「1.0」に近いほど信頼度が高い)。信頼度が低い場合は、AIが読み取った結果をうのみにせず、元の請求書ファイルを目視確認することをおすすめします。

 以上でワークフローが完成しました。最後に画面上部タブの「保存」をクリックして保存します。

5. 実行結果

請求書のサンプル

 実際にワークフローを動かしてみましょう。「1-2. OneDriveのフォルダー作成」で作成したフォルダーに、上図の請求書ファイル(サンプル)を保存してみます。

Teamsに自動投稿されたメッセージ

 ワークフローが自動実行されて、上図のとおり請求書のファイル名や、AIが請求書の内容を読み取った結果が投稿されました。

最後に

 今回は、Azure AIサービスを利用する自動処理のワークフローをノーコードで作成しました。

 「5. 実行結果」でOneDriveのフォルダーに直接、請求書ファイルを保存していることからもわかるとおり、このワークフローは受信メールの添付ファイルに限らず適用することができます。

 またDocument Intelligenceは、請求書以外にも「レシート」「名刺」「一般的なドキュメント」など、さまざまなドキュメントの解析/抽出に対応したモデルを用意しています。以下の参考資料(公式ドキュメント)を参照して、「4-2. アクションの設定:事前ビルドまたはカスタム モデル用のドキュメント分析 (v3.0 API)」で指定している「モデル識別子」を変更し、「4-4. アクションの設定:チャットまたはチャネルでメッセージを投稿する」の「式」の内容を変更することで、請求書以外の情報抽出にも使えます。書類を自動処理する方法の1つとして、ぜひ活用してみてください。

参考

 

●Document Intelligence の請求書モデル

カテゴリートップへ

この連載の記事