Установите Azure Vision в Foundry Tools 3.2 GA прочитайте контейнер OCR.

Контейнеры позволяют запускать Azure Vision в API инструментов Foundry в вашей собственной среде и помогают вам соответствовать конкретным требованиям к управлению безопасностью и данными. Из этой статьи вы узнаете, как скачать, установить и запустить контейнер Azure Vision 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. Для условий лицензионного соглашения на использование программного обеспечения корпорации Майкрософт должно быть задано значение accept. Также требуются URI конечной точки и ключ API.

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

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

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

Ключи

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

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

Внимание

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

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

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

Поддержка Advanced Vector Extensions (AVX)

Главным компьютером является компьютер, на котором запускается 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.

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

Образ контейнера Vision Read OCR Azure можно найти в синдикате реестра контейнеров 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. В противном случае контейнер не запустится. Дополнительные сведения см. в разделе о выставлении счетов.

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

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

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

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

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

Этот контейнер можно использовать и другой контейнер средств Foundry, запущенный на узле HOST вместе. Вы также можете использовать несколько контейнеров одного и того же контейнера Средств Foundry, запущенного.

Проверка работы контейнера

Существует несколько способов убедиться, что контейнер работает. Найдите внешний IP-адрес и открытый порт для рассматриваемого контейнера, затем откройте ваш любимый веб-браузер. Используйте приведенные ниже URL-адреса запросов, чтобы убедиться, что контейнер работает. В примерах в качестве URL-адресов запросов используется значение http://localhost:5000, однако ваш конкретный контейнер может иметь отличия. Убедитесь, что вы полагаетесь на внешний 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-заголовков и текста.

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

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

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

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

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

Вы можете использовать операции POST /vision/v3.2/read/analyze и GET /vision/v3.2/read/operations/{operationId} совместно для асинхронной обработки изображений, похожим образом, как служба Визуального распознавания 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 от выполнения operation-location URL-адреса из предыдущего изображения:

{
  "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 контейнер запросов могут не совпадать, внешний кэш сохраняет результаты и предоставляет им общий доступ к контейнерам. Дополнительные сведения о параметрах кэша см. в статье "Настройка контейнеров Docker Для визуального зрения Azure".

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

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

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.

Если у вас возникли проблемы с запуском контейнера средств Foundry, вы можете попробовать использовать контейнер диагностики Майкрософт. Используйте этот контейнер для диагностики распространенных ошибок в среде развертывания, которые могут предотвратить работу контейнеров ИИ 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.

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

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

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

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

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

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

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

Итоги

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

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

Внимание

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

Следующие шаги