OCR 认知技能

光学字符识别 (OCR) 技能可识别图像文件中的印刷体文本和手写文本。 本文是 OCR 技能的参考文档。 有关使用说明,请参阅从图像中提取文本

OCR 技能使用 Azure AI 服务中 Azure AI 视觉 API v3.2 提供的机器学习模型。 OCR 技能将映射到以下功能:

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"
    }
  }
}

另请参阅