Durable Functions を使用してドキュメントの識別、分類、検索を自動化する

Azure Functions
Azure App Service
Azure AI サービス
Azure AI Search
Azure Kubernetes Service (AKS)

この記事では、さまざまな種類の複数のドキュメントを含むドキュメント ファイルを処理するためのアーキテクチャについて説明します。 Azure Functions の Durable Functions 拡張機能を使用して、ファイルを処理するパイプラインを実装します。

アーキテクチャ

ドキュメントを識別、分類、および検索するためのアーキテクチャの図。

このアーキテクチャの Visio ファイル をダウンロードします。

ワークフロー

  1. ユーザーが、Web アプリでアップロードするドキュメント ファイルを指定します。 ファイルには、さまざまな種類の複数のドキュメントが含まれています。 たとえば、PDF やマルチページ TIFF ファイルなどです。

    1. ドキュメント ファイルは、Azure Blob Storage に格納されます。
    2. Web アプリは、パイプライン処理を開始するために、ストレージ キューにコマンド メッセージを追加します。
  2. コマンド メッセージにより、Durable Functions によるオーケストレーションがトリガーされます。 メッセージには、処理するドキュメント ファイルの Blob Storage 内の場所を識別するメタデータが含まれています。 Durable Functions の各インスタンスは、1 つのドキュメント ファイルのみを処理します。

  3. Scan アクティビティ関数は、Computer Vision Read API を呼び出し、処理するドキュメントのストレージ内の場所を渡します。 光学式文字認識 (OCR) の結果がオーケストレーションに返され、後続のアクティビティで使用されます。

  4. Classify アクティビティ関数は、Azure Kubernetes Service (AKS) クラスターでホストされているドキュメント分類子サービスを呼び出します。 このサービスでは、正規表現パターン マッチングを使用して、既知の各ドキュメントの開始ページを識別し、ドキュメント ファイルに含まれるドキュメントの種類の数を計算します。 ドキュメントの種類とページ範囲が計算され、オーケストレーションに返されます。

    Note

    Azure では、1 つのファイル内の複数のドキュメントの種類を分類できるサービスは提供されていません。 このソリューションでは、AKS でホストされている Azure 以外のサービスを使用しています。

  5. Metadata Store アクティビティの関数では、ドキュメントの種類とページ範囲の情報を Azure Cosmos DB ストアに保存します。

  6. インデックス作成アクティビティ機能では、識別されたドキュメントの種類ごとに Cognitive Search サービス内に新しい検索ドキュメントを作成し、 .NET 用 Azure AI 検索ライブラリ を使用して、完全な OCR 結果とドキュメント情報を検索ドキュメントに含めます。 関連付け ID も検索ドキュメントに追加されるため、検索結果を Azure Cosmos DB の対応するドキュメント メタデータと照合できます。

  7. エンド ユーザーは、コンテンツとメタデータでドキュメントを検索できます。 検索結果セット内の関連付け ID を使用して、Azure Cosmos DB 内のドキュメント レコードを検索できます。 レコードには、Blob Storage の元のドキュメント ファイルへのリンクが含まれています。

コンポーネント

  • Durable Functions は、サーバーレス コンピューティング環境でステートフル関数を記述できるようにする Azure Functions の拡張機能です。 このアプリケーションでは、ドキュメント インジェストとワークフロー オーケストレーションを管理するために使用されます。 Azure Functions のプログラミング モデルに準拠するオーケストレーター関数を記述することで、ステートフル ワークフローを定義できます。 内部的には、拡張機能によって状態、チェックポイント、再起動が管理されるため、ユーザーはビジネス ロジックに専念できます。
  • Azure Cosmos DB は、ソリューションでスループットとストレージ容量を任意の数の地理的リージョン全体でスケーリングできるようにするグローバルに分散されたマルチモデル データベースです。 包括的なサービス レベル アグリーメント (SLA) により、スループット、待機時間、可用性、一貫性が保証されます。
  • Azure Storage は、データ、アプリ、およびワークロード向けの、非常にスケーラブルで安全なクラウド サービスのセットです。 これには、 Blob StorageAzure FilesAzure Table StorageAzure Queue Storage が含まれます。
  • Azure App Service には、Web アプリの構築、デプロイ、およびスケーリングを行うためのフレームワークが用意されています。 Web Apps 機能は、Web アプリ、REST API、モバイル バックエンドをホストするための HTTP ベースのサービスです。 Web Apps を使用すると、.NET、.NET Core、Java、Ruby、Node.js、PHP、または Python で開発できます。 Windows および Linux ベースの環境において、アプリケーションの実行とスケーリングを容易に行うことができます。
  • Azure AI サービス を使用すると、インテリジェントなアルゴリズムを使用して、自然なコミュニケーション手段を通じてユーザーのニーズを見たり、聞いたり、話したり、理解したり、解釈したりできます。
  • Azure AI 検索 では、多彩な検索機能を、Web、モバイル、およびエンタープライズ アプリケーション内のプライベートな異種コンテンツに提供します。
  • AKS は、高可用性とセキュリティを備えたフル マネージド Kubernetes サービスです。 AKS により、コンテナ化されたアプリケーションのデプロイと管理が容易になります。

代替

  • Azure AI Document Intelligence (OCR) 読み取りモデル は、Computer Vision 読み取りの代替手段です。
  • このソリューションでは、グローバル配布を容易にするために Azure Cosmos DB にメタデータを格納します。 Azure SQL Database は、ドキュメントのメタデータと情報を永続的に保存するためのもう 1 つのオプションです。
  • Azure Service Bus を含む他のメッセージング プラットフォームを使用して、Durable Functions インスタンスをトリガーできます。
  • データをクラスタリングしてテンプレートに分離するのに役立つソリューション アクセラレータについては、「Azure/form-recognizer-accelerator (github.com)」を参照してください。

シナリオの詳細

この記事では、Durable Functions を使用して、さまざまな種類の複数のドキュメントを含むドキュメント ファイルを処理するための自動化されたパイプラインを実装するアーキテクチャについて説明します。 パイプラインでは、ドキュメント ファイル内のドキュメントを識別し、種類別に分類し、後続の処理で使用できる情報を格納します。

多くの企業において、一括スキャンされたドキュメントを含み、複数の異なる種類のドキュメントを含む可能性があるドキュメント ファイルを管理および処理する必要があります。 通常、ドキュメント ファイルは PDF またはマルチページ TIFF イメージです。 これらのファイルは通常、組織外部からのものであり、受け取った会社はコンテンツを管理していません。

これらの制約を受けて、組織はカスタム テクノロジや手動プロセスが含まれる場合がある、独自のドキュメント解析ソリューションを構築することを余儀なくされています。 ソリューションには、個々のドキュメントの種類を独自のファイルに分割し、各ドキュメントの分類修飾子を追加するための人間の介入が含まれる場合があります。

これらのカスタム ソリューションの多くはステート マシン ワークフロー パターンに基づいており、データベース システムを使用してワークフローの状態を保持し、ポーリング サービスを使用して、処理を担当する状態を確認します。 このようなソリューションの維持と強化は、困難で時間がかかる場合があります。

組織は、組織で使用する種類のファイルのドキュメントの識別と分類を処理および管理するための、信頼性が高く、スケーラブルで回復力のあるソリューションを求めています。 これには、処理パイプラインの成功または失敗を完全に監視することができる、1 日あたり何百万ものドキュメントの処理が含まれます。

考えられるユース ケース

このソリューションは、次の多くの領域に適用されます。

  • タイトル レポート。 多くの政府機関や自治体は、デジタル形式に移行されていない紙の記録を管理しています。 効果的な自動化ソリューションでは、ドキュメント要求を満たすために必要なすべてのドキュメントを含むファイルを生成できます。
  • メンテナンス記録。 航空機、機関車、機械のメンテナンス記録は、未だにスキャンと外部組織への送信を必要とする紙の形式で存在します。
  • 許可の処理。 市区町村および郡の許可部門は、未だに許可検査レポート用に生成される紙文書を保持しています。 複数の検査ドキュメントを撮影し、これらの記録全体を自動的に識別、分類、検索する機能は非常に有益です。

考慮事項

これらの考慮事項は、ワークロードの品質向上に使用できる一連の基本原則である Azure Well-Architected Framework の要素を組み込んでいます。 詳細については、「Microsoft Azure Well-Architected Framework」を参照してください。

[信頼性]

信頼性により、顧客に確約したことをアプリケーションで確実に満たせるようにします。 詳細については、「信頼性の重要な要素の概要」を参照してください。

信頼性の高いワークロードは、回復性と可用性の両方を備えたものです。 回復性 とは、障害から回復して動作を続行する、システムの能力です。 回復性の目的は、障害の発生後にアプリケーションを十分に機能する状態に戻すことです。 "可用性" は、ユーザーが必要なときにワークロードにアクセスできるかどうかの尺度です。

ソリューション コンポーネントの信頼性の情報については、次のリソースを参照してください。

コスト最適化

コストの最適化とは、不要な費用を削減し、運用効率を向上させることです。 詳しくは、 コスト最適化の柱の概要に関する記事をご覧ください。

このアーキテクチャの最も大きなコストは、ストレージ アカウント内のイメージ ファイルのストレージ、Azure AI サービスの画像処理、Azure AI 検索サービスのインデックス容量の要件から生じる可能性があります。

予約容量とライフサイクル ポリシーを使用してストレージ アカウントを 適切にサイズ設定 し、地域展開と運用スケールアップスケジューリングのための適切な Azure AI 検索計画 を立て、 Computer Vision - OCR サービスで利用可能な コミットメント レベル価格 を使用して 予測可能なコストを管理することで、コストを最適化できます。

コストを最適化するためのガイドラインを次に示します。

  • 最初から大規模なリソースに投資するのではなく、アーキテクチャの従量課金制戦略を使用し、必要に応じて スケールアウト します。
  • アーキテクチャにおける機会コストと、先発者の優位性とファスト フォローとのバランスを考慮します。 料金計算ツール を使用して、初期コストと運用コストを見積もります。
  • ソリューションのコスト制限を設定する ポリシー予算、管理 を確立します。

パフォーマンス効率

パフォーマンス効率とは、ユーザーからの要求に合わせて効率的な方法でワークロードをスケーリングできることです。 詳細については、「パフォーマンス効率の柱の概要」を参照してください。

このソリューションで大量の処理が発生する期間に、パフォーマンスのボトルネックが明らかになる可能性があります。 Azure FunctionsAzure AI サービスの自動スケーリングAzure Cosmos DB パーティション分割 のスケーリング オプションを理解し、計画することで、ソリューションの適切なパフォーマンス効率を確保します。

共同作成者

この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。

プリンシパルの作成者:

  • Kevin Kraus | プリンシパル クラウド ソリューション アーキテクト
  • Andrea Martini | シニア クラウド ソリューション アーキテクト

パブリックでない LinkedIn プロファイルを表示するには、LinkedIn にサインインします。

次の手順

入門記事:

製品ドキュメント: