ドキュメント抽出の認知技術

Note

Azure AI 検索は、Azure ポータルREST APIおよびAzure SDKから使用できます。 また、Foundry IQ は、エンタープライズ コンテンツを、Microsoft Foundry ポータルのエージェントの再利用可能なアクセス許可に対応したナレッジ ベースに変換するマネージド ナレッジ レイヤーです。

ドキュメント抽出スキルは、エンリッチメント パイプライン内のファイルからコンテンツを抽出します。 既定では、コンテンツの抽出または取得はエンリッチメント パイプラインに組み込まれます。 ただし、Document Extraction スキルを使用すると、パラメーターの設定方法と、エンリッチメント ツリーでの抽出されたコンテンツの名前付け方法を制御できます。

ベクター検索とマルチモーダル検索では、ドキュメント抽出とテキスト分割スキルを組み合わせて、構成可能なデータ チャンクアプローチを実装します。 マルチモーダル チュートリアルでは、このシナリオを示します。

Note

このスキルは Foundry Tools にバインドされておらず、Foundry Tools の主要要件はありません。

このスキルは、テキストと画像を抽出します。 テキストの抽出は無料です。 画像抽出は、Azure AI 検索 で課金対象となります。 無料の検索サービスでは、1 日あたりインデクサーごとに 20 トランザクションのコストが吸収されるため、クイックスタート、チュートリアル、小規模なプロジェクトを無料で完了できます。 Basic 以上のレベルの場合、画像抽出は課金対象です。

@odata.type

Microsoft.Skills.Util.DocumentExtractionSkill

サポートされるドキュメントの形式

DocumentExtractionSkill を使用すると、次の形式のドキュメントからテキストを抽出できます。

スキル パラメーター

パラメーターの大文字と小文字は区別されます。

Inputs 使用できる値 説明
parsingMode default
text
json
純粋なテキストまたは JSON ではないファイルからドキュメントを抽出するための default に設定します。 PDF、HTML、RTF、Microsoft Office ファイルなどのマークアップを含むソース ファイルの場合は、既定を使用してマークアップ言語やタグなしでテキストを抽出します。 parsingModeが明示的に定義されていない場合、値はdefault

ソース ファイルが TXT の場合は、text に設定します。 この解析モードにより、プレーンテキスト ファイルのパフォーマンスが向上します。 ファイルにマークアップが含まれている場合、このモードでは最終的な出力のタグが保持されます。

JSON ファイルから構造化コンテンツを抽出するには、 json に設定します。
dataToExtract contentAndMetadata
allMetadata
各ファイルからすべてのメタデータとテキスト コンテンツを抽出するには、contentAndMetadata に設定します。 dataToExtractが明示的に定義されていない場合、値はcontentAndMetadata

コンテンツ タイプのメタデータ プロパティ (PNG ファイルに固有のメタデータなど) のみを抽出するには、allMetadataに設定します。
configuration 以下を参照してください。 ドキュメント抽出の実行方法を調整する省略可能なパラメーターのディクショナリ。 サポートされている構成プロパティの説明については、以下の表を参照してください。
構成パラメーター 使用できる値 説明
imageAction none
generateNormalizedImages
generateNormalizedImagePerPage
埋め込み画像や画像ファイルをデータ セットで無視する場合、またはソース データが画像ファイルに含まれていない場合は、none に設定します。? この値が既定値です。

OCR と画像分析の場合、generateNormalizedImagesの一部として正規化された画像の配列をスキルで作成するには、 に設定に します。 このアクションでは、parsingModedefaultに設定し、dataToExtractcontentAndMetadataに設定する必要があります。 正規化された画像には、視覚的な検索結果で一貫したレンダリングを促進するためにサイズが調整され、回転される均一な出力があります。 スキルは、各イメージに対してこの情報を生成します。

imageActiongenerateNormalizedImagePerPage に設定すると、各 PDF ページは画像としてレンダリングされ、埋め込み画像を抽出する代わりに正規化されます。 PDF 以外の各種ファイルは、generateNormalizedImages が設定されている場合と同じように処理されます。
normalizedImageMaxWidth 50 - 10000 の範囲の整数 生成された正規化画像の最大幅 (ピクセル単位)。 既定値は 2000 です。
normalizedImageMaxHeight 50 - 10000 の範囲の整数 生成された正規化画像の最大の高さ (ピクセル単位)。 既定値は 2000 です。

Note

正規化された画像の最大幅と最大高さの既定値 (2000 ピクセル) は、 OCR スキル画像分析スキルでサポートされる最大サイズに基づいています。 OCR のスキルでは、英語以外の言語の場合は最大の幅と高さ 4200、英語の場合は 10000 がサポートされます。 上限を引き上げると、スキルセットの定義とドキュメントの言語によっては、大きな画像で処理が失敗する可能性があります。

スキルの入力

入力名 説明
file_data コンテンツを抽出する必要があるファイル。

"file_data" の入力では、次のように定義されたオブジェクトを指定する必要があります。

{
  "$type": "file",
  "data": "BASE64 encoded string of the file"
}

または、次のように定義できます。

{
  "$type": "file",
  "url": "URL to download file",
  "sasToken": "OPTIONAL: SAS token for authentication if the URL provided is for a file in blob storage"
}

ファイル参照オブジェクトは、次の 3 つの方法のいずれかで生成できます。

  • インデクサーの定義で allowSkillsetToReadFileData パラメーターを "true" に設定します。 これにより、BLOB データ ソースからダウンロードされた元のファイル データを表すオブジェクトであるパス /document/file_data が作成されます。 このパラメーターは、BLOB ストレージのファイルにのみ適用されます。

    allowSkillsetToReadFileData は、ダウンロードしたファイル データをスキルで使用できるようにします。 BLOB インデクサーのファイル サイズや抽出コンテンツの制限は増えません

  • インデクサーの定義で imageAction パラメーターを none 以外の値に設定します。 このようにすると、画像の配列が作成されます。これは、個別に渡した場合にこのスキルへの入力に必要な規則に従います (つまり /document/normalized_images/*)。

  • カスタム スキルで、上記のように EXACTLY と定義された JSON オブジェクトが返されるようにします。 $type パラメーターは file に正確に設定する必要があります。data パラメーターは、ファイル コンテンツの base 64 でエンコードされたバイト配列データである必要があります。または、url パラメーターは、その場所でファイルをダウンロードするアクセス権を持つ正しい形式の URL である必要があります。

スキルの出力

出力名 説明
content ドキュメントのテキスト コンテンツ。
normalized_images imageActionnone 以外の値に設定されている場合、新しいnormalized_images フィールドには画像の配列が含まれます。 出力形式の詳細については、「 画像からテキストと情報を抽出する」を参照してください。

サンプル定義

 {
    "@odata.type": "#Microsoft.Skills.Util.DocumentExtractionSkill",
    "parsingMode": "default",
    "dataToExtract": "contentAndMetadata",
    "configuration": {
        "imageAction": "generateNormalizedImages",
        "normalizedImageMaxWidth": 2000,
        "normalizedImageMaxHeight": 2000
    },
    "context": "/document",
    "inputs": [
      {
        "name": "file_data",
        "source": "/document/file_data"
      }
    ],
    "outputs": [
      {
        "name": "content",
        "targetName": "extracted_content"
      },
      {
        "name": "normalized_images",
        "targetName": "extracted_normalized_images"
      }
    ]
  }

サンプル入力

{
  "values": [
    {
      "recordId": "1",
      "data":
      {
        "file_data": {
          "$type": "file",
          "data": "aGVsbG8="
        }
      }
    }
  ]
}

サンプル出力

{
  "values": [
    {
      "recordId": "1",
      "data": {
        "content": "hello",
        "normalized_images": []
      }
    }
  ]
}

こちらも参照ください