Azure でドキュメントの分類を自動化する
この記事では、さまざまなドキュメントを処理するために使用できるアーキテクチャについて説明します。 このアーキテクチャでは、Azure Functions の Durable Functions 機能を使用してパイプラインを実装します。 パイプラインは、ドキュメントの分割、名前付きエンティティ認識 (NER)、分類のために Azure AI ドキュメント インテリジェンスを介してドキュメントを処理します。 ドキュメントのコンテンツとメタデータは、取得拡張生成 (RAG) ベースの自然言語処理 (NLP) に使用されます。
アーキテクチャ
このアーキテクチャの Visio ファイルをダウンロードします。
ワークフロー
ユーザーがドキュメント ファイルを Web アプリにアップロードします。 このファイルには、PDF や複数ページのタグ イメージ ファイル形式 (TIFF) ファイルなど、さまざまな種類の複数の埋め込みドキュメントが含まれています。 ドキュメント ファイルは、Azure Blob Storage に格納されます (1a)。 パイプライン処理を開始するために、Web アプリは Azure Service Bus キュー (1b) にコマンド メッセージを追加します。
コマンド メッセージにより、Durable Functions によるオーケストレーションがトリガーされます。 メッセージには、処理するドキュメント ファイルの Blob Storage 内の場所を識別するメタデータが含まれています。 Durable Functions の各インスタンスは、1 つのドキュメント ファイルのみを処理します。
analyze アクティビティ関数は Document Intelligence Analyze Document API を呼び出します。これにより、処理するドキュメント ファイルの保存場所が渡されます。 analyze 関数はドキュメント ファイル内の各ドキュメントを読み取って識別します。 この関数は、各埋め込みドキュメントの名前、型、ページ範囲、およびコンテンツをオーケストレーションに返します。
metadata store アクティビティ関数では、各ドキュメントのドキュメントの種類、場所、ページ範囲の情報を Azure Cosmos DB ストアに保存します。
埋め込み アクティビティ関数は、セマンティック カーネルを使用して各ドキュメントをチャンクし、各チャンクの埋め込みを作成します。 埋め込みと関連するコンテンツは Azure AI Search に送信され、ベクター対応インデックスに格納されます。 関連付け ID も検索ドキュメントに追加されるため、検索結果を Azure Cosmos DB の対応するドキュメント メタデータと照合できます。
セマンティック カーネルは、NLP の AI 検索ベクター ストアから埋め込みを取得します。
ユーザーは、NLP を使用してデータとチャットできます。 この会話は、ベクター ストアから取得されたグラウンド データによって提供されます。 Azure Cosmos DB 内のドキュメント レコードを検索するために、ユーザーは検索結果セットに含まれる関連付け ID を使用します。 レコードには、Blob Storage の元のドキュメント ファイルへのリンクが含まれています。
コンポーネント
Durable Functions は、サーバーレス コンピューティング環境でステートフル関数を記述するのに使用できる Azure Functions の機能です。 このアーキテクチャでは、Service Bus キュー内のメッセージによって永続的な関数インスタンスがトリガーされます。 このインスタンスは、ドキュメント処理パイプラインを開始して調整します。
Azure Cosmos DB は、ソリューションで使用して、任意の数の地理的リージョンにわたってスループットとストレージ容量をスケーリングできる、グローバルに分散された複数モデルのデータベースです。 包括的なサービス レベル アグリーメント (SLA) により、スループット、待機時間、可用性、一貫性が保証されます。 このアーキテクチャでは、ドキュメント分類情報のメタデータ ストアとして Azure Cosmos DB を使用します。
Azure Storage は、データ、アプリ、およびワークロード向けの、非常にスケーラブルで安全なクラウド サービスのセットです。 これには、 Blob Storage、 Azure Files、 Azure Table Storage、 Azure Queue Storage が含まれます。 このアーキテクチャでは、Blob Storage を使用して、ユーザーがアップロードし、Durable Functions パイプラインで処理するドキュメント ファイルを格納します。
Service Bus は、完全に管理されたエンタープライズ メッセージ ブローカーであり、メッセージ キューとパブリッシュ/サブスクライブ トピックがあります。 このアーキテクチャでは、Service Bus を使用して永続的な関数インスタンスをトリガーします。
Azure App Service には、Web アプリの構築、デプロイ、およびスケーリングを行うためのフレームワークが用意されています。 App Serviceの Web Apps 機能は、Web アプリケーション、REST API、およびモバイル バックエンドをホストするために使用できる HTTP ベースのツールです。 Web Apps を使用して、.NET、.NET Core、Java、Ruby、Node.js、PHP、または Python で開発します。 アプリケーションは、Windows ベースおよび Linux ベースの環境で簡単に実行およびスケーリングできます。 このアーキテクチャでは、ユーザーは App Service でホストされる Web アプリを介してドキュメント処理システムを操作します。
ドキュメント インテリジェンス は、ドキュメント、フォーム、画像から分析情報を抽出するために使用できるサービスです。 このアーキテクチャでは、ドキュメント インテリジェンスを使用してドキュメント ファイルを分析し、コンテンツとメタデータ情報と共に埋め込みドキュメントを抽出します。
AI Search は、Web、モバイル、エンタープライズ アプリケーションのプライベートで多様なコンテンツに対して豊富な検索エクスペリエンスを提供します。 このアーキテクチャでは、AI Search ベクター ストレージ を使用して、抽出されたドキュメントコンテンツとメタデータ情報の埋め込みのインデックスを作成し、ユーザーが NLP を使用してドキュメントを検索および取得できるようにします。
セマンティック カーネル は、大規模な言語モデル (LLM) をアプリケーションに統合するために使用できるフレームワークです。 このアーキテクチャでは、セマンティック カーネルを使用して、AI Search に格納されるドキュメント コンテンツとメタデータ情報の埋め込みを作成します。
Azure OpenAI Service では、OpenAI の強力なモデルにアクセスできます。 このアーキテクチャでは、Azure OpenAI を使用して、ユーザーがドキュメント処理システムと対話するための自然言語インターフェイスを提供します。
代替
グローバル配布を容易にするために、このソリューションでは Azure Cosmos DB にメタデータを格納します。 Azure SQL Database は、ドキュメントのメタデータと情報を永続的に保存するためのもう 1 つのオプションです。
永続的な関数インスタンスをトリガーするには、Azure Event Grid など、他のメッセージング プラットフォームを使用できます。
セマンティック カーネルは、埋め込みを作成するためのいくつかのオプションの 1 つです。 また、Azure Machine Learning 使用したり、Azure AI サービス を して埋め込みを作成したりすることもできます。
ユーザーに自然言語インターフェイスを提供するには、Azure AI Foundry 内で他の言語モデルを使用できます。 このプラットフォームは、Mistral、Meta、Cohere、Hugging Face など、さまざまなプロバイダーのさまざまなモデルをサポートしています。
シナリオの詳細
このアーキテクチャでは、パイプラインがドキュメント ファイル内のドキュメントを識別し、種類別に分類し、後続の処理で使用する情報を格納します。
多くの企業は、一括スキャンするドキュメントを管理および処理する必要があり、PDF や複数ページの TIFF 画像など、いくつかの異なる種類のドキュメントが含まれています。 これらのドキュメントは通常、組織外部からのものであり、受け取った会社は形式を管理していません。
これらの制約により、組織はカスタム テクノロジと手動プロセスを含めることができる独自のドキュメント解析ソリューションを構築する必要があります。 たとえば、個々のドキュメントの種類を手動で分離し、ドキュメントごとに分類修飾子を追加する場合などがあります。
これらのカスタム ソリューションの多くは、ステート マシンのワークフロー パターンに基づいています。 このソリューションでは、データベース システムを使用してワークフローの状態を保持し、処理する必要がある状態を確認するポーリング サービスを使用します。 これらのソリューションを維持および強化すると、複雑さと労力が増える可能性があります。
組織では、組織のドキュメント タイプの識別と分類を処理および管理するための、信頼性が高く、スケーラブルで回復力のあるソリューションを求めています。 このソリューションでは、毎日何百万ものドキュメントを処理でき、処理パイプラインの成功または失敗を完全に監視することができます。
NLP を使用すると、ユーザーは会話形式でシステムと対話できます。 ユーザーはドキュメントに関する質問をしたり、ドキュメントの内容に基づいて回答を受け取ることができます。
考えられるユース ケース
また、ソリューションを使用して次のことを行えます。
タイトルの報告: 多くの政府機関や自治体は、デジタル形式ではない紙の記録を管理しています。 効果的な自動化ソリューションでは、ドキュメント要求を満たすために必要なすべてのドキュメントを含むファイルを生成できます。
メンテナンス レコードの管理: 航空機、機関車、機械の保守記録などの紙の記録をスキャンして、外部の組織に送信する必要がある場合があります。
許可の処理: 市区町村および郡の許可部門は、許可検査レポート用に生成される紙文書を保持しています。 複数の検査ドキュメントを撮影し、これらの記録全体を自動的に識別、分類、検索できます。
Planograms を分析します。 小売および消費者向け製品の企業は、店舗棚のプラノグラム分析を通じて在庫とコンプライアンスを管理します。 店舗棚の写真を撮り、さまざまな製品からラベル情報を抽出して、製品情報を自動的に識別、分類、定量化することができます。
考慮事項
これらの考慮事項は、ワークロードの品質向上に使用できる一連の基本原則である Azure Well-Architected Framework の要素を組み込んでいます。 詳細については、「 Well-Architected Framework」を参照してください。
[信頼性]
信頼性は、アプリケーションが顧客に対して行ったコミットメントを確実に満たすことができるのに役立ちます。 詳細については、「信頼性の設計レビュー チェックリスト」を参照してください。
信頼性の高いワークロードとは、回復性と可用性の両方を備えたものです。 回復性 とは、障害から回復して動作を続行する、システムの能力です。 回復性の目的は、障害の発生後にアプリケーションを十分に機能する状態に戻すことです。 可用性では、ユーザーが必要なときにワークロードにアクセスできるかどうかを測定します。
Azure OpenAI エンドポイントの信頼性と可用性を確保するには、 複数の Azure OpenAI デプロイまたはインスタンスに対して生成 API ゲートウェイを使用することを検討してください。 バックエンド ロード バランサーは、ラウンド ロビン、重み付け、および優先順位ベースの負荷分散をサポートします。 この機能により、特定の要件を満たす Azure OpenAI 負荷分散戦略を柔軟に定義できます。
ソリューション コンポーネントの信頼性の詳細については、 Azure オンライン サービスの SLA 情報を参照してください。
コストの最適化
コストの最適化では、不要な経費を削減し、運用効率を向上させる方法に重点を置いています。 詳細については、「コスト最適化の設計レビュー チェックリスト」を参照してください。
このアーキテクチャの最も大きなコストは、Azure OpenAI モデル トークンの使用、ドキュメント インテリジェンスの画像処理、AI Search のインデックス容量の要件です。
コストを最適化するには:
トークンベースの消費ではなく、予測可能な AI コスト削減のために、プロビジョニング済みスループット ユニット (PTU) とサービス予約を使用します。
AI 検索でリージョン別のデプロイと運用スケールアップ スケジューリングを計画します。
ドキュメント インテリジェンスの コミットメント レベルの価格 を使用して、 予測可能なコストを管理します。
ストレージ アカウントを適切にサイズ変更するには、予約容量とライフ サイクル ポリシーを使用します。
開始時に大規模なリソースに投資するのではなく、アーキテクチャに従量課金制の戦略を使用し、必要に応じて スケールアウト します。 ソリューションが成熟すると、 App Service の予約を 使用して、該当する場合にコストを削減できます。
アーキテクチャにおける機会コストを考慮し、先発者の優位性戦略とファスト フォロー戦略との間でバランスを取ります。 初期コストと運用コストを見積もるには、料金計算ツール を使用します。
ソリューションのコスト制限を設定する予算とコントロールを確立します。 予測アラートと実際のコスト アラートを設定するには、予算アラートを使用します。
パフォーマンス効率
パフォーマンス効率とは、ユーザーの要求を効率的に満たすためにスケーリングするワークロードの能力を指します。 詳細については、「パフォーマンス効率の設計レビュー チェックリスト」を参照してください。
このソリューションでは、大量のデータを処理するときにパフォーマンスのボトルネックが明らかになる可能性があります。 ソリューションの適切なパフォーマンス効率を確保するには、 Azure Functions のスケーリング オプション、 AI サービスの自動スケーリング、 Azure Cosmos DB のパーティション分割について理解し、計画していることを確認してください。
Azure OpenAI PTU は 、 グローバル デプロイと共に、保証されたパフォーマンスと可用性を提供します。 これらのデプロイでは、Azure グローバル インフラストラクチャを使用して、顧客の推論要求に最適な可用性を持つデータセンターに顧客トラフィックを動的にルーティングします。
共同作成者
Microsoft では、この記事を保持しています。 次の共同作成者がこの記事を書きました。
プリンシパル作成者:
- Kevin Kraus | プリンシパル Azure テクニカル スペシャリスト
その他の共同作成者:
- Brian Swiger |プリンシパル Azure テクニカル スペシャリスト
公開されていない LinkedIn プロフィールを見るには、LinkedIn にサインインしてください。
次の手順
入門記事:
- Blob Storage とは
- Service Bus とは
- Durable Functions とは
- Azure AI Foundry とは
- Azure OpenAI とは?
- Document Intelligence とは
- AI Search とは
- AI Search ベクター ストレージとは
- App Service の概要
- Azure Cosmos DB の概要
製品ドキュメント:
- すべての製品を対象とした Azure ドキュメント
- Durable Functions のドキュメント
- Azure OpenAI のドキュメント
- ドキュメント インテリジェンスのドキュメント
- AI Search のドキュメント
- Azure AI Foundry のドキュメント を する
- セマンティック カーネルのドキュメント