OCR 认知技能
光学字符识别 (OCR) 技能可识别图像文件中的印刷体文本和手写文本。 本文是 OCR 技能的参考文档。 有关使用说明,请参阅从图像中提取文本。
OCR 技能使用 Azure AI 服务中 Azure AI 视觉 API v3.2 提供的机器学习模型。 OCR 技能将映射到以下功能:
对于 Azure AI 视觉语言支持下列出的语言,将会使用读取 API。
对于希腊文和塞尔维亚语西里尔文,使用OCR 版本 3.2 API。
OCR 技能会从图像文件和嵌入图像中提取文本。 支持的文件格式包括:
- .JPEG
- .JPG
- .PNG
- .BMP
- .TIFF
注意
此技能绑定到 Azure AI 服务,并且对于每天每个索引器超过 20 个文档的事务,需要使用可计费资源。 执行内置技能将按现有的 Azure AI 服务标准预付费套餐价格收费。
此外,图像提取可由 Azure AI 搜索进行计费。
技能参数
参数区分大小写。
参数名称 | 说明 |
---|---|
detectOrientation |
检测图像方向。 有效值为 true or false 进行求值的基于 SQL 语言的筛选器表达式。 仅当使用 旧 OCR 版本 3.2 API 时,此参数才适用。 |
defaultLanguageCode |
输入文本的语言代码。 支持的语言包括 Azure AI 视觉的所有正式发布语言。 还可以指定 unk (未知)。 如果语言代码未指定或为 null,则语言将设置为英语。 如果将语言显式设置为 unk ,则找到的所有语言都会自动检测并返回。 |
lineEnding |
要用作行分隔符的值。 可能的值:“Space”、“CarriageReturn”、“LineFeed”。 默认值为“Space”。 |
在以前的版本中,有一个名为“textExtractionAlgorithm”的参数,用于指定提取“印刷体”或“手写体”文本。 此参数已弃用,因为当前的读取 API 算法同时提取这两种类型的文本。 如果技能包含此参数,你无需将其删除,但在技能执行期间,系统不会使用它。
技能输入
输入名称 | 说明 |
---|---|
image |
复杂类型。 当前仅适用于“/document/normalized_images”字段,当 imageAction 设置为非 none 值时由 Azure Blob 索引器生成。 |
技能输出
输出名称 | 说明 |
---|---|
text |
从映像中提取的纯文本。 |
layoutText |
描述提取的文本以及找到文本的位置的复杂类型。 |
如果在 PDF 或其他应用程序文件中嵌入的图像上调用 OCR,那么在提取和处理的任何文本之后,OCR 输出将位于页面底部。
示例定义
{
"skills": [
{
"description": "Extracts text (plain and structured) from image.",
"@odata.type": "#Microsoft.Skills.Vision.OcrSkill",
"context": "/document/normalized_images/*",
"defaultLanguageCode": null,
"detectOrientation": true,
"inputs": [
{
"name": "image",
"source": "/document/normalized_images/*"
}
],
"outputs": [
{
"name": "text",
"targetName": "myText"
},
{
"name": "layoutText",
"targetName": "myLayoutText"
}
]
}
]
}
示例文本和 layoutText 输出
{
"text": "Hello World. -John",
"layoutText":
{
"language" : "en",
"text" : "Hello World. -John",
"lines" : [
{
"boundingBox":
[ {"x":10, "y":10}, {"x":50, "y":10}, {"x":50, "y":30},{"x":10, "y":30}],
"text":"Hello World."
},
{
"boundingBox": [ {"x":110, "y":10}, {"x":150, "y":10}, {"x":150, "y":30},{"x":110, "y":30}],
"text":"-John"
}
],
"words": [
{
"boundingBox": [ {"x":110, "y":10}, {"x":150, "y":10}, {"x":150, "y":30},{"x":110, "y":30}],
"text":"Hello"
},
{
"boundingBox": [ {"x":110, "y":10}, {"x":150, "y":10}, {"x":150, "y":30},{"x":110, "y":30}],
"text":"World."
},
{
"boundingBox": [ {"x":110, "y":10}, {"x":150, "y":10}, {"x":150, "y":30},{"x":110, "y":30}],
"text":"-John"
}
]
}
}
示例:将从嵌入图像中提取的文本与文档内容合并
文档破解是技能组执行过程中的第一步,用于分隔文本和图像内容。 文本合并的一个常见用例是将图像的文本表示形式(OCR 技能中的文本或图像的描述文字)合并到文档的内容字段中。 这适用于源文档是 PDF 或 Word 文档的情况,此类文档会将文本与嵌入图像组合在一起。
以下示例技能集创建 merged_text 字段。 此字段包含文档的文本内容以及该文档中嵌入的每个图像的 OCRed 文本。
请求正文语法
{
"description": "Extract text from images and merge with content text to produce merged_text",
"skills":
[
{
"description": "Extract text (plain and structured) from image.",
"@odata.type": "#Microsoft.Skills.Vision.OcrSkill",
"context": "/document/normalized_images/*",
"defaultLanguageCode": "en",
"detectOrientation": true,
"inputs": [
{
"name": "image",
"source": "/document/normalized_images/*"
}
],
"outputs": [
{
"name": "text"
}
]
},
{
"@odata.type": "#Microsoft.Skills.Text.MergeSkill",
"description": "Create merged_text, which includes all the textual representation of each image inserted at the right location in the content field.",
"context": "/document",
"insertPreTag": " ",
"insertPostTag": " ",
"inputs": [
{
"name":"text",
"source": "/document/content"
},
{
"name": "itemsToInsert",
"source": "/document/normalized_images/*/text"
},
{
"name":"offsets",
"source": "/document/normalized_images/*/contentOffset"
}
],
"outputs": [
{
"name": "mergedText",
"targetName" : "merged_text"
}
]
}
]
}
以上技能集示例假设存在标准化的图像字段。 要生成此字段,请将索引器定义中的 imageAction 配置设置为 generateNormalizedImages,如下所示:
{
//...rest of your indexer definition goes here ...
"parameters": {
"configuration": {
"dataToExtract":"contentAndMetadata",
"imageAction":"generateNormalizedImages"
}
}
}