你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。

文档提取认知技能

注释

Azure AI 搜索可通过Azure门户、REST API 和Azure SDK获取。 它还支持 Foundry IQ,该知识层将企业内容转换为 Microsoft Foundry 门户中代理的可重用权限感知知识库。

文档提取技能从扩充管道中的文件中提取内容。 默认情况下,内容提取或检索内置在扩充管道中。 不过,通过使用文档提取技能,你可以控制参数的设置方式以及提取的内容在扩充树中的命名方式。

对于 矢量 和 多模式搜索,请将文档提取与 文本拆分技能 相结合以实现可配置 的数据分块方法。 多模式教程演示了此方案。

注释

此技能不绑定到 Foundry 工具,不需要 Foundry 工具密钥。

此技能可提取文本和图像。 文本提取是免费的。 图像提取需向 Azure AI 搜索付费。 在免费搜索服务中,每个索引器每天 20 个事务的成本已豁免,因此你可以免费完成快速入门、教程和小型项目。 对于基本层和更高层,图像提取需付费。

@odata.type

Microsoft.Skills.Util.DocumentExtractionSkill

支持的文档格式

DocumentExtractionSkill 可从以下文档格式提取文本:

  • CSV(请参阅为 CSV Blob 编制索引)
  • EML
  • EPUB
  • GZ
  • HTML
  • JSON(请参阅为 JSON blob 编制索引)
  • KML(用于地理表示形式的 XML)
  • Markdown
  • Microsoft Office 格式:DOCX/DOC/DOCM、XLSX/XLS/XLSM、PPTX/PPT/PPTM、MSG(Outlook 电子邮件)、XML(2003 和 2006 Word XML)
  • 公开文档格式:ODT、ODS、ODP
  • PDF
  • 纯文本文件(另请参阅为纯文本编制索引)
  • 富文本格式(RTF)
  • XML
  • Zip

技能参数

参数区分大小写。

输入 允许的值 Description
parsingMode default
text
json
设置为 default 从非纯文本或 JSON 的文件提取文档。 对于包含标记的源文件(如 PDF、HTML、RTF 和 Microsoft Office 文件),请使用默认值来提取不包含标记语言或标记的文本。 如果未 parsingMode 显式定义,则值为 default.

如果源文件是 TXT,请设置为 text。 此分析模式可提高纯文本文件的性能。 如果文件包含标记,此模式将保留最终输出中的标记。

设置为 json 从 JSON 文件提取结构化内容。
dataToExtract contentAndMetadata
allMetadata
要提取每个文件的所有元数据和文本内容,请设置为 contentAndMetadata。 如果未 dataToExtract 显式定义,则值为 contentAndMetadata.

allMetadata设置为仅提取内容类型的元数据属性,例如 PNG 文件特有的元数据。
configuration 请参阅下文。 可选参数的字典,这些参数用于调整文档提取执行方式。 有关支持的配置属性的说明,请参阅下表。
配置参数 允许的值 Description
imageAction none
generateNormalizedImages
generateNormalizedImagePerPage
要忽略数据集中的嵌入图像或图像文件,或者如果源数据不包含图像文件,请设置为 none。 此值为默认值。

对于 OCR 和图像分析,设置为 generateNormalizedImages 可使技能在文档破解过程中创建规范化图像的数组。 此操作需要 parsingMode 设置为 default 和 dataToExtract 设置为 contentAndMetadata。 规范化图像具有调整大小和旋转的统一输出,以促进视觉搜索结果中的一致呈现。 技能为每个图像生成此信息。

如果设置为imageActiongenerateNormalizedImagePerPage,则每个 PDF 页面将呈现为图像并规范化,而不是提取嵌入的图像。 对待非 PDF 文件类型的方式与设置了 generateNormalizedImages 时相同。
normalizedImageMaxWidth 一个介于 50 和 10000 之间的整数 生成的规范化图像的最大宽度(以像素为单位)。 默认值为 2000。
normalizedImageMaxHeight 一个介于 50 和 10000 之间的整数 生成的规范化图像的最大高度(以像素为单位)。 默认值为 2000。

注释

将规范化图像的最大宽度和高度默认设置为 2000 像素是考虑到 OCR 技术所能够支持的最大大小以及图像分析技术。 OCR 技能支持非英语语言的最大宽度和高度为 4200,支持英语语言的最大宽度和高度为 10000。 如果增加最大限制,则根据技能组定义和文档语言,对较大的图像进行处理可能会失败。

技能输入

输入名称 Description
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"
}

可通过以下三种方式之一生成文件引用对象:

  • 在你的索引器定义中将 allowSkillsetToReadFileData 参数设置为“true”。 这将创建路径 /document/file_data,该路径是一个对象,表示从 blob 数据源下载的原始文件数据。 此参数仅适用于 Blob 存储中的文件。

    allowSkillsetToReadFileData 使下载的文件数据可供技能使用。 它不会增加 blob 索引器文件大小或提取的内容限制。

  • 在你的索引器定义中将 imageAction 参数设置为 none 之外的值。 这会创建一个图像数组,该数组将遵循此技能的输入在逐个传递的情况下所需的约定(即 /document/normalized_images/*)。

  • 让自定义技能返回严格如上所述定义的 json 对象。 $type 参数必须精确设置为 file,data 参数必须是文件内容的 Base64 编码字节数组数据,或者 url 参数必须是格式正确的 URL,有权在该位置下载文件。

技能输出

输出名称 Description
content 文档的文本内容。
normalized_images 如果 imageAction 设置为其他 none值,则新的 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": []
      }
    }
  ]
}

另见