Поделиться через


Когнитивный навык распознавания текста

Навык Оптическое распознавание символов (OCR) распознает печатный и рукописный текст в файлах изображений. В этой статье приведена справочная документация по навыку OCR. Инструкции по использованию см. в статье "Извлечение текста из изображений ".

Навык OCR использует модели машинного обучения, предоставляемые API визуального распознавания Azure версии 3.2 в службах ИИ Azure. Навык OCR сопоставляет следующие функциональные возможности службы.

Навык OCR извлекает текст из файлов изображений. Поддерживаемые форматы файлов включают:

  • .JPEG
  • .JPG
  • .PNG
  • .BMP
  • .TIFF

Примечание.

Этот навык привязан к службам ИИ Azure и требует оплачиваемого ресурса для транзакций, превышающих 20 документов на индексатор в день. За выполнение встроенных навыков взимается плата за существующие службы ИИ Azure по мере использования.

Кроме того, извлечение изображений взимается с помощью службы "Поиск ИИ Azure".

Параметры навыков

Параметры зависят от регистра.

Наименование параметра Description
detectOrientation Определяет ориентацию изображения. Допустимые значения — true или false.

Этот параметр применяется только в том случае, если используется устаревший API OCR версии 3.2 .
defaultLanguageCode Код языка вводимого текста. Поддерживаемые языки включают все общедоступные языки Azure AI Vision. Можно также указать unk (неизвестно).

Если код языка не указан или имеет значение NULL, для языка задано значение "Английский". Если язык явно задан unk, все языки, найденные языки обнаруживаются автоматически и возвращаются.
lineEnding Значение, используемое в качестве разделителя строк. Возможные значения: "Space", "CarriageReturn", "LineFeed". По умолчанию используется "Space" (пробел).

В предыдущих версиях был параметр textExtractionAlgorithm, чтобы указать извлечение печатного или рукописного текста. Этот параметр не рекомендуется, так как текущий алгоритм API чтения извлекает оба типа текста одновременно. Если навык включает этот параметр, его не нужно удалить, но он не будет использоваться во время выполнения навыка.

Входные данные навыков

Ввод имени Description
image Сложный тип. В настоящее время используется только поле "/document/normalized_images", созданное индексатором BLOB-объектов Azure, если imageAction задано значение, отличное от noneзначения.

Выходные данные навыка

Имя вывода Description
text Обычный текст, извлеченный из изображения.
layoutText Сложный тип, описывающий извлеченный текст и расположение, где найден указанный текст.

При вызове OCR на изображениях, внедренных в PDF-файлы или другие файлы приложений, выходные данные 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"
    }
  }
}

См. также