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


Вызов API чтения СИ Azure версии 3.2

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

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

Выпуски OCR (чтение)

Внимание

Выберите выпуск Read, который лучше всего соответствует вашим требованиям.

Входные данные Примеры Чтение выпуска Преимущества
Изображения: общие, в диких изображениях метки, уличные знаки и плакаты OCR для изображений (версия 4.0) Оптимизировано для общих образов, не являющихся документами, с улучшенным синхронным API, что упрощает внедрение OCR в сценарии взаимодействия с пользователем.
Документы: цифровые и сканированные, включая изображения книги, статьи и отчеты Модель чтения с помощью аналитики документов Оптимизировано для проверки текста и цифровых документов с помощью асинхронного API для автоматизации интеллектуальной обработки документов в масштабе.

Сведения об azure AI Vision версии 3.2 общедоступной версии 2

Ищете последнюю общедоступную версию Azure AI Vision версии 3.2? Все будущие улучшения OCR чтения являются частью двух служб, перечисленных ранее. В Azure AI Vision версии 3.2 нет дополнительных обновлений. Дополнительные сведения см. в статье "Вызов API чтения azure AI Vision 3.2" и краткое руководство. Azure AI Vision версии 3.2 для чтения.

Определение способа обработки данных (необязательно)

Указание модели OCR

По умолчанию служба использует последнюю общедоступную модель (GA) для извлечения текста. Начиная с read версии 3.2 параметр model-version позволяет выбирать модели общедоступной версии и предварительной версии API. Указанная модель используется для извлечения текста с помощью операции чтения.

При использовании операции чтения указывайте для необязательного параметра model-version приведенные ниже значения.

Значение Используемая модель
Не задано Последняя общедоступная модель
Latest Последняя общедоступная модель
30-04-2022 Последняя общедоступная модель. 164 языка для печатного текста и 9 языков для рукописного текста, а также ряд улучшений качества и производительности
2022-01-30 Добавляет поддержку печати текста для Хинди, арабского и связанного языка. Для рукописного текста добавляет поддержку японского и корейского.
2021-09-30 Добавляет поддержку текста печати для российских и других кириллических языков. Для рукописного текста добавляет поддержку китайского упрощенного, французского, немецкого, итальянского, португальского и испанского.
2021-04-12 Общедоступная модель 2021 г.

Язык ввода

По умолчанию служба извлекает из изображений или документов весь текст, в том числе на смешанных языках. В операции чтения есть необязательный параметр — запрос языка. Указывать код языка следует только в том случае, если нужно, чтобы документ обрабатывался под определенный язык. В противном случае служба может вернуть неполный и неправильный текст.

Естественный порядок чтения для выводимых данных (только для языков на основе латиницы)

По умолчанию служба выводит текстовые строки в левом порядке направо. При необходимости с помощью параметра readingOrder можно указать более понятный (natural) порядок вывода для чтения, как показано в примере ниже. Такая функция поддерживается только для языков на основе латиницы.

Снимок экрана: пример порядка чтения OCR.

Выбор страниц или диапазонов страниц для извлечения текста

По умолчанию служба извлекает текст со всех страниц в документах. С помощью параметра pages запроса можно указать номера или диапазоны страниц для извлечения текста. В следующем примере показан документ с 10 страницами с текстом, извлеченным для обоих случаев: все страницы (1-10) и выбранные страницы (3-6).

Снимок экрана: выходные данные со всех страниц и из выбранных страниц.

Отправка данных на устройство

API чтения принимает локальные и удаленные изображения. Чтобы передать локальное изображение, поместите двоичные данные этого изображения в текст HTTP-запроса. Для удаленного использования укажите URL-адрес изображения, отформатируя текст запроса, как показано в следующем примере.

{"url":"http://example.com/images/test.jpg"}

При вызове Read API чтения, в качестве входных данных принимается изображение или документ PDF и из него асинхронно извлекается текст.

https://{endpoint}/vision/v3.2/read/analyze[?language][&pages][&readingOrder]

Вызов возвращает поле заголовка ответа под названием Operation-Location. Значением Operation-Location является URL-адрес, содержащий идентификатор операции, который будет использоваться на следующем шаге.

Заголовок ответа Пример значения
Operation-Location https://cognitiveservice/vision/v3.2/read/analyzeResults/d3d3d3d3-eeee-ffff-aaaa-b4b4b4b4b4b4

Примечание.

Выставление счетов

На странице цен azure AI Vision есть ценовая категория для операций чтения. Каждое проанализированное изображение или страница является одной транзакцией. При вызове операции с документом PDF или TIFF, содержащим 100 страниц, одна операция "Чтение" будет считаться как 100 транзакций, и плата будет взиматься за 100 транзакций. Если было выполнено 50 вызовов такой операции и каждый вызов отправлял документ в 100 страниц, вам будет выставлен счет за 5000 транзакций (50 X 100 = 5000).

Получение результатов из службы

Второй шаг — вызов операции получения результата чтения. Эта операция принимает в качестве входных данных идентификатор операции, созданный операцией чтения.

https://{endpoint}/vision/v3.2/read/analyzeResults/{operationId}

Она возвращает ответ в формате JSON, содержащий поле Состояние со следующими возможными значениями.

Значение Значение
notStarted Операция не запущена.
running Операция обрабатывается.
failed Операция не удалась.
succeeded Операция выполнена успешно.

Эта операция вызывается итеративным способом, т. е. повторением, до тех пор пока не вернется со значением выполнено успешно. Используйте интервал от 1 до 2 секунд, чтобы избежать превышения скорости запросов в секунду (RPS).

Примечание.

На бесплатном уровне частота запросов ограничивается до 20 вызовов в минуту. Платный уровень позволяет увеличить 30 RPS по запросу. Обратите внимание на идентификатор ресурса Azure и регион, а также откройте запрос поддержка Azure или обратитесь в свою группу учетных записей, чтобы запросить более высокую скорость RPS.

Когда поле Состояние имеет значение succeeded, ответ JSON содержит текстовый контент, извлеченный из изображения или документа. Ответ JSON поддерживает первоначальное группирование строк распознанных слов. Он включает извлеченные текстовые строки и координаты ограничивающих полей. Каждая строка текста включает все извлеченные слова с их координатами и оценкой достоверности.

Примечание.

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

Пример выходного JSON-файла

Ниже представлен пример ответа в формате JSON при успешном выполнении операции:

{
  "status": "succeeded",
  "createdDateTime": "2021-02-04T06:32:08.2752706+00:00",
  "lastUpdatedDateTime": "2021-02-04T06:32:08.7706172+00:00",
  "analyzeResult": {
    "version": "3.2",
    "readResults": [
      {
        "page": 1,
        "angle": 2.1243,
        "width": 502,
        "height": 252,
        "unit": "pixel",
        "lines": [
          {
            "boundingBox": [
              58,
              42,
              314,
              59,
              311,
              123,
              56,
              121
            ],
            "text": "Tabs vs",
            "appearance": {
              "style": {
                "name": "handwriting",
                "confidence": 0.96
              }
            },
            "words": [
              {
                "boundingBox": [
                  68,
                  44,
                  225,
                  59,
                  224,
                  122,
                  66,
                  123
                ],
                "text": "Tabs",
                "confidence": 0.933
              },
              {
                "boundingBox": [
                  241,
                  61,
                  314,
                  72,
                  314,
                  123,
                  239,
                  122
                ],
                "text": "vs",
                "confidence": 0.977
              }
            ]
          }
        ]
      }
    ]
  }
}

Рукописная классификация текстовых строк (только для латинских языков)

Ответ включает классификацию того, находится ли каждая строка текста в рукописном стиле или нет, а также оценка достоверности. Эта функция доступна только для латинских языков. В следующем примере представлена рукописная классификация для текста в изображении.

Снимок экрана: пример классификации рукописного ввода OCR.