你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
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
OCR 和图像分析支持的数据源是 Azure Blob 存储 和 Azure Data Lake Storage (ADLS) Gen2 中的 blob,以及 OneLake 中的图像内容。 图像可以是独立文件,也可以是 PDF 或其他文件中嵌入的图像。
注意
此技能绑定到 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"
}
}
}