Установка azure AI Vision 3.2 общедоступной версии контейнера OCR для чтения

Контейнеры позволяют запускать API визуального распознавания Azure в собственной среде. Контейнеры соответствуют конкретным требованиям к безопасности и управлению данными. В данной статье вы узнаете, как загрузить, установить и запустить контейнер Read (OCR).

Контейнер Read позволяет извлекать печатные и рукописные тексты из изображений и документов с поддержкой форматов JPEG, PNG, BMP, PDF и TIFF. Дополнительные сведения см. в Практическом руководстве API чтения.

Новые возможности

Общедоступная версия 3.2-model-2022-04-30 контейнера чтения включает поддержку 164 языков и другие улучшения. Если вы уже являетесь клиентом, следуйте инструкциям по скачиванию , чтобы приступить к работе.

Контейнер оптического распознавания символов Read версии 3.2 является новой общедоступной моделью и обеспечивает следующие возможности:

  • Новые модели с повышенной точностью.
  • Поддержка нескольких языков в одном документе.
  • Поддержка 164 языков. См. полный список языков, поддерживаемых при OCR.
  • Одна операция, как для документов, так и для изображений.
  • Поддержка больших документов и изображений.
  • Оценка достоверности.
  • Поддержка документов как с печатным, так и с рукописным текстом.
  • Возможность извлечения текста из выбранных страниц в документе.
  • Выберите удобный порядок вывода текста (вместо установленного по умолчанию), чтобы использовать более естественный порядок чтения для языков на латинице.
  • Классификация текстовой строки для рукописного стиля, и не только для языков на латинице.

Если вы сейчас работаете контейнерами Read 2.0, ознакомьтесь с руководством по миграции, чтобы узнать об изменениях, предлагающихся в новых версиях.

Предварительные требования

Прежде чем начать работать с контейнерами, необходимо соблюсти следующие условия.

Обязательно Назначение
Модуль Docker На главном компьютере должен быть установлен модуль Docker. Docker предоставляет пакеты, которые настраивают среду Docker в ОС macOS, Windows и Linux. Ознакомьтесь с общими сведениями о Docker и контейнерах.

Docker нужно настроить таким образом, чтобы контейнеры могли подключать и отправлять данные о выставлении счетов в Azure.

В ОС Windows для Docker нужно также настроить поддержку контейнеров Linux.

Опыт работы с Docker Требуется базовое представление о понятиях Docker, включая реестры, репозитории, контейнеры и образы контейнеров, а также знание основных команд docker.
Ресурс "Компьютерное зрение" Для использования контейнера необходимо следующее:

Ресурс Компьютерное зрение и связанный ключ API для URI конечной точки. Оба значения доступны на страницах "Обзор" и "Ключи" для ресурса, они требуются для запуска контейнера.

{API_KEY} : один из двух доступных ключей ресурсов на странице Ключи

{ENDPOINT_URI} : конечная точка, указанная на странице Обзор

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу.

Сбор обязательных параметров

Требуются три основных параметра для всех контейнеров ИИ Azure. Условия лицензии на использование программного обеспечения Microsoft должны присутствовать в значении accept. Также требуются URI конечной точки и ключ API.

URI конечной точки

Значение {ENDPOINT_URI} доступно на странице портал Azure Обзор соответствующего ресурса служб ИИ Azure. Перейдите на страницу Обзор, наведите указатель мыши на конечную точку и отобразится значок Копировать в буфер обмена. Скопируйте и используйте конечную точку по мере необходимости.

Снимок экрана: сбор URI конечной точки для дальнейшего использования.

Ключи

Значение {API_KEY} используется для запуска контейнера и доступно на странице Ключи портал Azure соответствующего ресурса служб ИИ Azure. Перейдите на страницу Ключи и выберите значок Копировать в буфер обмена.

Снимок экрана: получение одного из двух ключей для дальнейшего использования.

Важно!

Эти ключи подписки используются для доступа к API служб ИИ Azure. Не предоставляйте доступ к ключам другим пользователям. Храните их в безопасном месте. Например, используйте Azure Key Vault. Также рекомендуется регулярно повторно создавать эти ключи. Для вызова API необходим только один ключ. При повторном создании первого ключа второй ключ можно использовать для бесперебойного доступа к службе.

Требования к компьютеру узла

Узел — это 64-разрядный компьютер, на котором выполняется контейнер Docker. Это может быть компьютер в локальной среде или служба размещения Docker в Azure, включая следующие решения:

Поддержка расширения Advanced Vector Extensions

Главным компьютером является компьютер, на котором запускается Docker-контейнер. Узел должен поддерживать расширение Advanced Vector Extensions (AVX2). Вы можете проверить поддержку AVX2 на узлах Linux с помощью следующей команды:

grep -q avx2 /proc/cpuinfo && echo AVX2 supported || echo No AVX2 support detected

Предупреждение

Для поддержки AVX2 требуется главный компьютер. Контейнер не будет работать правильно без поддержки AVX2.

Требования к контейнеру и рекомендации

Примечание

Требования и рекомендации основаны на тестах производительности с одним запросом в секунду. Для тестов использовалось отсканированное изображение делового письма размером 523 КБ, которое содержит 29 строк и 803 символа. Рекомендуемая конфигурация привела к ускорению ответа примерно вдвое по сравнению с минимальной.

В следующей таблице описано минимальное и рекомендуемое выделение ресурсов для каждого OCR-контейнера с доступом на чтение.

Контейнер Минимальные Рекомендуется
См. 3.2 2022-04-30 4 ядра, 8 ГБ памяти 8 ядер, 16 ГБ памяти
См. 3.2 2021-04-12 4 ядра, 16 ГБ памяти 8 ядер, 24 ГБ памяти
  • Частота каждого ядра должна быть минимум 2,6 ГГц.

Ядро и память соответствуют параметрам --cpus и --memory, которые используются как часть команды docker run.

Получение образа контейнера

Образ контейнера Azure AI Vision Read OCR можно найти в синдикате mcr.microsoft.com реестра контейнеров. Он находится в репозитории azure-cognitive-services и называется read. Полное имя образа контейнера — mcr.microsoft.com/azure-cognitive-services/vision/read.

Чтобы использовать последнюю версию контейнера, можно использовать latest тег . Полный список тегов также представлен в MCR.

Доступны следующие образы контейнеров для чтения.

Контейнер Реестр контейнеров / Репозиторий / Имя образа Теги
Read 3.2 (общедоступная версия) mcr.microsoft.com/azure-cognitive-services/vision/read:3.2-model-2022-04-30 последняя версия, 3.2, 3.2-model-2022-04-30

Воспользуйтесь командой docker pull, чтобы скачать образ контейнера.

docker pull mcr.microsoft.com/azure-cognitive-services/vision/read:3.2-model-2022-04-30

Совет

Используйте команду docker images, чтобы получить список скачанных образов контейнеров. Например, следующая команда возвращает таблицу со списком идентификаторов, репозиториев и тегов для каждого скачанного образа контейнера:

docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"

IMAGE ID         REPOSITORY                TAG
<image-id>       <repository-path/name>    <tag-name>

Использование контейнера

После размещения контейнера на главном компьютере воспользуйтесь следующей процедурой для работы с ним.

  1. Запустите контейнер с необходимыми настройками выставления счетов. Доступны дополнительные примеры команды docker run.
  2. Запрос конечной точки прогнозирования контейнера.

Запуск контейнера

Воспользуйтесь командой docker run для запуска контейнера. См. раздел Сбор обязательных параметров, чтобы получить дополнительные сведения о том, как получить значения {ENDPOINT_URI} и {API_KEY}.

Доступны дополнительные примеры команды docker run.

docker run --rm -it -p 5000:5000 --memory 16g --cpus 8 \
mcr.microsoft.com/azure-cognitive-services/vision/read:3.2-model-2022-04-30 \
Eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY}

Вышеприведенная команда:

  • Запускает последний общедоступный контейнер "Чтение OCR" из образа контейнера.
  • Выделяет 8 ядер ЦП и 16 гигабайт (ГБ) памяти.
  • предоставляет TCP-порт 5000 и выделяет псевдотелетайп для контейнера;
  • автоматически удаляет контейнер после завершения его работы. Образ контейнера остается доступным на главном компьютере.

Можно также запустить контейнер с помощью переменных среды:

docker run --rm -it -p 5000:5000 --memory 16g --cpus 8 \
--env Eula=accept \
--env Billing={ENDPOINT_URI} \
--env ApiKey={API_KEY} \
mcr.microsoft.com/azure-cognitive-services/vision/read:3.2-model-2022-04-30

Доступны дополнительные примеры команды docker run.

Важно!

Для запуска контейнера необходимо указать параметры Eula, Billing и ApiKey. В противном случае контейнер не запустится. Дополнительные сведения см. в разделе о выставлении счетов.

Если требуется более высокая пропускная способность (например, при обработке многостраничных файлов), рассмотрите возможность развертывания нескольких контейнеров в кластере Kubernetesс помощью Хранилища Azure и Очереди Azure.

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

Чтобы найти строку подключения:

  1. Перейдите к Учетным записям хранения на портал Azure и найдите свою учетную запись.
  2. Выберите Ключи доступа в списке навигации слева.
  3. Строка подключения будет расположена под параметром Строка подключения

Запуск нескольких контейнеров на одном узле

Если вы планируете запускать несколько контейнеров при открытых портах, обязательно назначьте каждому контейнеру отдельный открытый порт. Например, запускайте первый контейнер на порте 5000, а второй — на порте 5001.

Вы можете использовать этот контейнер и другой контейнер служб ИИ Azure, работающий на узле. Вы также можете использовать несколько контейнеров одного контейнера служб ИИ Azure.

Проверка состояния контейнера

Проверить это можно несколькими способами. Получите адрес и открытый порт для рассматриваемого контейнера из его параметра Внешний IP-адрес и запустите веб-браузер. Используйте приведенные ниже URL-адреса запросов, чтобы убедиться, что контейнер работает. В http://localhost:5000 приведены примеры URL-адресов запросов, однако ваш конкретный контейнер может иметь отличия. Убедитесь в правильности внешнего IP-адреса и открытого порта контейнера.

URL-адрес запроса Назначение
http://localhost:5000/ Контейнер предоставляет домашнюю страницу.
http://localhost:5000/ready При запросе с помощью команды GET этот URL-адрес подтверждает, что контейнер готов принять запрос к модели. Этот запрос может использоваться для проб активности и готовности Kubernetes.
http://localhost:5000/status Этот URL-адрес, который можно также запросить с помощью GET, проверяет, действителен ли ключ API, используемый для запуска контейнера, без запроса конечной точки. Этот запрос может использоваться для проб активности и готовности Kubernetes.
http://localhost:5000/swagger Контейнер предоставляет полный набор документации по конечным точкам и функции Попробовать. Эта функция позволяет ввести параметры в веб-форму HTML и создать запрос без необходимости писать код. После возвращения результатов запроса предоставляется пример команды CURL с примером требуемого формата HTTP-заголовков и текста.

Домашняя страница контейнера

Запрос конечной точки прогнозирования контейнера

Контейнер предоставляет интерфейсы REST API конечной точки прогнозирования запросов.

Используйте узел http://localhost:5000 для API контейнера. Путь к Swagger можно просмотреть по адресу: http://localhost:5000/swagger/.

Асинхронное чтение

Операции и GET /vision/v3.2/read/operations/{operationId} можно использовать POST /vision/v3.2/read/analyze совместно для асинхронного чтения изображения, аналогично тому, как служба Визуального распознавания Azure ИИ использует соответствующие операции REST. Асинхронный метод POST возвращает operationId объект , который используется в качестве идентификатора ДЛЯ HTTP-запроса GET.

В пользовательском интерфейсе Swagger выберите Analyze, чтобы развернуть его в браузере. Далее выберите Попробовать>Выбрать файл. В этом примере мы будем использовать следующее изображение:

Табуляция против пробелов

После успешного выполнения асинхронного метода POST возвращается код состояния HTTP 202. В качестве части ответа имеется заголовок operation-location, содержащий конечную точку результата для запроса.

 content-length: 0
 date: Fri, 04 Sep 2020 16:23:01 GMT
 operation-location: http://localhost:5000/vision/v3.2/read/operations/a527d445-8a74-4482-8cb3-c98a65ec7ef9
 server: Kestrel

operation-location— это полный URL-адрес, доступ к которому осуществляется через HTTP GET. Ниже приведен ответ JSON на выполнение URLoperation-location из предыдущего изображения:

{
  "status": "succeeded",
  "createdDateTime": "2021-02-04T06:32:08.2752706+00:00",
  "lastUpdatedDateTime": "2021-02-04T06:32:08.7706172+00:00",
  "analyzeResult": {
    "version": "3.2.0",
    "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
              }
            ]
          },
          {
            "boundingBox": [
              286,
              171,
              415,
              165,
              417,
              197,
              287,
              201
            ],
            "text": "paces",
            "appearance": {
              "style": {
                "name": "handwriting",
                "confidence": 0.746
              }
            },
            "words": [
              {
                "boundingBox": [
                  286,
                  179,
                  404,
                  166,
                  405,
                  198,
                  290,
                  201
                ],
                "text": "paces",
                "confidence": 0.938
              }
            ]
          }
        ]
      }
    ]
  }
}

Важно!

При развертывании нескольких контейнеров "Чтение OCR" за пределами подсистемы балансировки нагрузки, например в разделе Docker Compose или Kubernetes, у вас должен быть внешний кэш. Так как контейнер обработки и контейнер запроса GET могут отличаться, внешний кэш сохраняет результаты и разделяет их между контейнерами. Дополнительные сведения о параметрах кэша см. в статье Настройка контейнеров Azure AI Vision Docker.

Синхронное чтение

Для синхронного чтения образа можно использовать следующую операцию.

POST /vision/v3.2/read/syncAnalyze

Только после того как образ считывается целиком, API возвращает ответ JSON. Единственным исключением из этого поведения является ошибка. При возникновении ошибки возвращается следующий код JSON:

{
    "status": "Failed"
}

Объект ответа JSON имеет тот же граф объектов, что и в асинхронной версии. Если вы являетесь пользователем JavaScript и хотите обеспечить безопасность типа, учтите, что имеется возможность использовать TypeScript для приведения к типу ответа JSON.

Чтобы ознакомиться с примером использования, загляните в песочницу TypeScript и выберите Запустить, чтобы увидеть, как просто пользоваться этой функцией.

Запуск контейнера, отключенного от Интернета

Чтобы использовать этот контейнер, отключенный от Интернета, необходимо сначала запросить доступ, заполнив приложение и приобретя план обязательств. Дополнительные сведения см. в статье Использование контейнеров Docker в отключенных средах .

Если вы получили разрешение на запуск контейнера, отключенного от Интернета, в следующем примере показано форматирование используемой docker run команды со значениями заполнителей. Замените заполнители собственными значениями.

Параметр DownloadLicense=True в docker run команде загрузит файл лицензии, который позволит контейнеру Docker выполняться, если он не подключен к Интернету. Он также содержит дату окончания срока действия, после которой файл лицензии станет недопустимым для запуска контейнера. Вы можете использовать файл лицензии только с тем контейнером, для которого получено утверждение. Например, вы не можете использовать файл лицензии для контейнера преобразования речи в текст с контейнером аналитики документов.

Заполнитель Значение Формат или пример
{IMAGE} Образ контейнера, который необходимо использовать. mcr.microsoft.com/azure-cognitive-services/form-recognizer/invoice
{LICENSE_MOUNT} Путь для скачивания и подключения лицензии. /host/license:/path/to/license/directory
{ENDPOINT_URI} Конечная точка для проверки подлинности запроса на обслуживание. Он представлен на странице ресурса Ключ и конечная точка на портале Azure. https://<your-custom-subdomain>.cognitiveservices.azure.com
{API_KEY} Ключ для ресурса Анализа текста. Он представлен на странице ресурса Ключ и конечная точка на портале Azure. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{CONTAINER_LICENSE_DIRECTORY} Расположение папки license в локальной файловой системе контейнера. /path/to/license/directory
docker run --rm -it -p 5000:5000 \ 
-v {LICENSE_MOUNT} \
{IMAGE} \
eula=accept \
billing={ENDPOINT_URI} \
apikey={API_KEY} \
DownloadLicense=True \
Mounts:License={CONTAINER_LICENSE_DIRECTORY} 

После скачивания файла лицензии можно запустить контейнер в среде без подключения к Интернету. В следующем примере показано форматирование команды docker run, которую вы будете использовать, с заполнителями. Замените заполнители собственными значениями.

Независимо от того, где выполняется контейнер, файл лицензии должен быть подключен к контейнеру, а расположение папки лицензии в локальной файловой системе контейнера необходимо указать с помощью Mounts:License=. Кроме того, необходимо указать выходное подключение, чтобы можно было записывать сведения об использовании для выставления счетов.

Заполнитель Значение Формат или пример
{IMAGE} Образ контейнера, который необходимо использовать. mcr.microsoft.com/azure-cognitive-services/form-recognizer/invoice
{MEMORY_SIZE} Надлежащий объем памяти, который необходимо выделить для контейнера. 4g
{NUMBER_CPUS} Надлежащее количество ЦП, которое необходимо выделить для контейнера. 4
{LICENSE_MOUNT} Путь для размещения и подключения лицензии. /host/license:/path/to/license/directory
{OUTPUT_PATH} Выходной путь для ведения журнала использования. /host/output:/path/to/output/directory
{CONTAINER_LICENSE_DIRECTORY} Расположение папки license в локальной файловой системе контейнера. /path/to/license/directory
{CONTAINER_OUTPUT_DIRECTORY} Расположение папки output в локальной файловой системе контейнера. /path/to/output/directory
docker run --rm -it -p 5000:5000 --memory {MEMORY_SIZE} --cpus {NUMBER_CPUS} \ 
-v {LICENSE_MOUNT} \ 
-v {OUTPUT_PATH} \
{IMAGE} \
eula=accept \
Mounts:License={CONTAINER_LICENSE_DIRECTORY}
Mounts:Output={CONTAINER_OUTPUT_DIRECTORY}

Остановка контейнера

Чтобы завершить работу контейнера, в среде командной строки, где выполняется контейнер, нажмите комбинацию клавиш Ctrl+C.

Устранение неполадок

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

Совет

Дополнительные сведения об устранении неполадок и рекомендации см. в статье Часто задаваемые вопросы о контейнерах ИИ Azure.

Если у вас возникли проблемы с запуском контейнера служб ИИ Azure, попробуйте использовать контейнер Microsoft диагностика. Используйте этот контейнер для диагностики распространенных ошибок в среде развертывания, которые могут помешать правильной работе контейнеров ИИ Azure.

Чтобы получить контейнер, используйте следующую команду docker pull:

docker pull mcr.microsoft.com/azure-cognitive-services/diagnostic

Затем запустите контейнер. Замените {ENDPOINT_URI} конечной точкой, а {API_KEY} — своим ключом на ресурс:

docker run --rm mcr.microsoft.com/azure-cognitive-services/diagnostic \
eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY}

Контейнер проверит сетевое подключение к конечной точке выставления счетов.

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

Контейнеры ИИ Azure отправляют сведения о выставлении счетов в Azure, используя соответствующий ресурс в вашей учетной записи Azure.

Запросы к контейнеру оплачиваются согласно ценовой категории ресурсов Azure, используемой для параметра ApiKey.

Контейнеры служб ИИ Azure не лицензируются для запуска без подключения к конечной точке контроля или выставления счетов. Вам необходимо разрешить контейнерам непрерывную передачу данных для выставления счетов в конечную точку выставления счетов. Контейнеры служб ИИ Azure не отправляют данные клиентов, такие как анализируемые изображения или текст, в корпорацию Майкрософт.

Подключение к Azure

Для запуска контейнера необходимо указать значения аргументов, касающихся выставления счетов. Эти значения обеспечивают подключение контейнера к конечной точке выставления счетов. Отчеты об использовании контейнера примерно каждые 10—15 минут. Если контейнер не подключится к Azure в течение допустимого периода времени, контейнер будет продолжать работать, но не будет обслуживать запросы, пока не будет восстановлена конечная точка выставления счетов. Попытки подключения выполняются 10 раз на протяжении одинакового интервала времени (10–15 минут). Если контейнеру не удается подключиться к конечной точке выставления счетов за 10 попыток, он останавливает запросы на обслуживание. Пример информации, отправляемой корпорации Майкрософт для выставления счетов, см. в разделе Часто задаваемые вопросы о контейнере служб ИИ Azure .

Аргументы для выставления счетов

Команда docker run запустит контейнер, если указаны следующие три параметра с допустимыми значениями.

Параметр Описание
ApiKey Ключ API ресурса служб ИИ Azure, который используется для отслеживания сведений о выставлении счетов.
Этому параметру следует присвоить значение ключа API для подготовленного ресурса, который можно получить в Billing.
Billing Конечная точка ресурса служб ИИ Azure, которая используется для отслеживания сведений о выставлении счетов.
Этому параметру следует присвоить URI конечной точки подготовленного ресурса Azure.
Eula Указывает, что вы приняли условия лицензии для контейнера.
Для этого параметра следует задать значение accept.

Дополнительные сведения об этих параметрах см. в статье Настройка контейнеров.

Сводка

В этой статье вы узнали о концепциях и рабочих процессах для скачивания, установки и запуска контейнеров ИИ Azure. В разделе "Сводка" сделайте следующее.

  • Azure AI Vision предоставляет контейнер Linux для Docker, инкапсулирующий Чтение.
  • Образ контейнера чтения требует, чтобы приложение выполняло его.
  • Образы контейнеров выполняются в Docker.
  • Указав URI узла контейнера, вы можете применять или пакет SDK, или REST API, для вызова операций из контейнеров Read OCR.
  • При создании экземпляра контейнера нужно указать данные для выставления счетов.

Важно!

Контейнеры ИИ Azure не лицензируются для работы без подключения к Azure для отслеживания. Клиенты должны разрешить контейнерам непрерывную передачу данных для выставления счетов в службу контроля потребления. Контейнеры ИИ Azure не отправляют данные клиента (например, анализируемые изображения или текст) в корпорацию Майкрософт.

Дальнейшие действия