文档提取认知技能
文档提取技能从扩充管道内的文件中提取内容。 这使你可以利用文档提取步骤,该步骤通常在技能组执行之前对可能由其他技能生成的文件执行。
注意
此技能不受限于 Azure AI 服务,也没有 Azure AI 服务密钥要求。 此技能可提取文本和图像。 文本提取是免费的。 图像提取由 Azure AI 搜索计量。 在免费搜索服务中,每个索引器每天 20 个事务的成本已豁免,因此你可以免费完成快速入门、教程和小型项目。 对于基本、标准及以上的服务,图像提取是收费的。
@odata.type
Microsoft.Skills.Util.DocumentExtractionSkill
支持的文档格式
DocumentExtractionSkill 可从以下文档格式提取文本:
- CSV(请参阅为 CSV Blob 编制索引)
- EML
- EPUB
- GZ
- HTML
- JSON(请参阅为 JSON blob 编制索引)
- KML(用于地理表示形式的 XML)
- Microsoft Office 格式:DOCX/DOC/DOCM、XLSX/XLS/XLSM、PPTX/PPT/PPTM、MSG(Outlook 电子邮件)、XML(2003 和 2006 Word XML)
- 公开文档格式:ODT、ODS、ODP
- 纯文本文件(另请参阅为纯文本编制索引)
- RTF
- XML
- ZIP
技能参数
参数区分大小写。
输入 | 允许的值 | 说明 |
---|---|---|
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
参数必须精确设置为file
,data
参数必须是文件内容的 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": []
}
}
]
}