文档提取认知技能

文档提取技能从扩充管道内的文件中提取内容。 这使你可以利用文档提取步骤,该步骤通常在技能组执行之前对可能由其他技能生成的文件执行。

注意

此技能不受限于认知服务,也没有认知服务密钥要求。 此技能可提取文本和图像。 文本提取是免费的。 图像提取由 Azure 认知搜索计量。 在免费搜索服务中,每个索引器每天 20 个事务的成本已豁免,因此你可以免费完成快速入门、教程和小型项目。 对于基本、标准及以上的服务,图像提取是收费的。

@odata.type

Microsoft.Skills.Util.DocumentExtractionSkill

支持的文档格式

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

技能参数

参数区分大小写。

输入 允许的值 说明
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 可使技能在文档破解过程中创建规范化图像的数组。 此操作需要将 parsingMode 设置为 default,将 dataToExtract 设置为 contentAndMetadata。 规范化的图像是指在视觉搜索结果中包含图像时,对图像进行额外的处理,使图像的输出一致,并通过调整大小和旋转方向使图像在呈现时更一致(例如,使图像控件中的照片大小一致,如 JFK 演示中所示)。 当使用此选项时,将为每个图像生成此信息。

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

注意

将规范化图像的最大宽度和高度默认设置为 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"
}

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

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

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

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

技能输出

输出名称 说明
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": []
      }
    }
  ]
}

另请参阅