Instalación de contenedores de Docker de OCR de Read

Nota

A partir del 22 de septiembre de 2020, la mayoría de los contenedores validados se hospedan en Microsoft Container Registry y para descargarlos no es necesario usar el comando de inicio de sesión de Docker. Todavía tendrá que completar una solicitud en línea para ejecutar el contenedor. Consulte la sección Solicitud de aprobación para ejecutar el contenedor más adelante en el artículo para más información.

Los contenedores le permiten ejecutar las API de Computer Vision en su propio entorno. Los contenedores son excelentes para requisitos específicos de control de datos y seguridad. En este artículo, aprenderá a descargar, instalar y ejecutar contenedores de Computer Vision.

El contenedor OCR de Read permite extraer texto impreso y manuscrito de imágenes y documentos con compatibilidad con los formatos de archivo JPEG, PNG, BMP, PDF y TIFF. Para más información, consulte la guía de procedimientos de Read API.

Novedades

Para los usuarios existentes de los contenedores de Read, hay disponible una nueva versión, 3.2-model-2021-09-30-preview, del contenedor de Read con compatibilidad con 122 idiomas y mejoras generales del rendimiento y de la inteligencia artificial. Para comenzar, siga las instrucciones de descarga.

Contenedor de Read 3.2

El contenedor OCR de Read 3.2proporciona:

  • Nuevos modelos para una mejor precisión.
  • Compatibilidad con varios idiomas en el mismo documento.
  • Compatibilidad con un total de 73 idiomas. Consulte la lista completa de idiomas admitidos por OCR.
  • Una única operación para documentos e imágenes.
  • Compatibilidad con imágenes y documentos de mayor tamaño.
  • Puntuaciones de confianza.
  • Compatibilidad con documentos con texto impreso y manuscrito.
  • Capacidad de extraer texto solo de páginas seleccionadas en un documento.
  • Elija el orden de salida de la línea de texto, desde un orden predeterminado a un orden de lectura más natural para los idiomas procedentes del latín.
  • Clasificación de línea de texto como estilo manuscrito o no solo para idiomas latinos.

Si actualmente usa contenedores de Read 2.0, consulte la guía de migración para obtener información sobre los cambios en las nuevas versiones.

Prerrequisitos

Debe cumplir los siguientes requisitos previos para poder usar los contenedores:

Obligatorio Propósito
Motor de Docker Necesita que el motor de Docker esté instalado en un equipo host. Docker dispone de paquetes que configuran el entorno de Docker en macOS, Windows y Linux. Para conocer los principios básicos de Docker y de los contenedores, consulte Introducción a Docker.

Docker debe configurarse para permitir que los contenedores se conecten con Azure y envíen datos de facturación a dicho servicio.

En Windows, Docker también debe estar configurado de forma que admita los contenedores de Linux.

Conocimientos sobre Docker Debe tener conocimientos básicos sobre los conceptos de Docker, como los registros, los repositorios, los contenedores y las imágenes de contenedor, así como conocer los comandos docker básicos.
Recurso de Computer Vision Para poder usar el contenedor, debe tener:

Un recurso de Computer Vision de Azure y la clave de API asociada con el URI del punto de conexión. Ambos valores están disponibles en las páginas de introducción y claves del recurso y son necesarios para iniciar el contenedor.

{API_KEY} : una de las dos claves de recurso disponibles en la página Claves

{ENDPOINT_URI} : el punto de conexión tal como se proporciona en la página de Información general.

Si no tiene ninguna suscripción a Azure, cree una cuenta gratuita antes de empezar.

Solicitud de aprobación para ejecutar el contenedor

Rellene y envíe el formulario de solicitud para solicitar aprobación para ejecutar el contenedor.

El formulario solicita información acerca del usuario y de su empresa, así como del escenario de usuario para el que se va a usar el contenedor. Después de enviar el formulario, el equipo de Azure Cognitive Services lo revisará y le informará la decisión por correo electrónico.

Importante

  • En el formulario, debe usar una dirección de correo electrónico asociada a un identificador de suscripción de Azure.
  • El recurso de Azure que se usa para ejecutar el contenedor se debe haber creado con el identificador de la suscripción de Azure aprobada.
  • Compruebe el correo electrónico (bandeja de entrada y carpetas de correo no deseado) para obtener las actualizaciones del estado de la aplicación por parte de Microsoft.

Una vez aprobado, podrá ejecutar el contenedor después de descargarlo de Microsoft Container Registry (MCR) que se describe más adelante en el artículo.

No podrá ejecutar el contenedor si su suscripción de Azure no se ha aprobado.

Recopilación de los parámetros obligatorios

Hay tres parámetros principales para todos los contenedores de Cognitive Services que son necesarios. El contrato de licencia para el usuario final (CLUF) debe estar presente con un valor de accept. Además, se necesitan una dirección URL de punto de conexión y una clave de API.

URI de punto de conexión {ENDPOINT_URI}

El valor del URI del punto de conexión está disponible en la página Información general de Azure Portal del recurso de Cognitive Services correspondiente. Vaya a la página Información general, mantenga el cursor sobre el punto de conexión y aparecerá un icono Copy to clipboard . Cópielo y utilícelo cuando sea necesario.

Recopilación el URI del punto de conexión para su uso posterior

Claves {API_KEY}

Esta clave se usa para iniciar el contenedor y está disponible en la página de claves de Azure Portal del recurso de Cognitive Services correspondiente. Vaya a la página Claves y haga clic en el icono Copy to clipboard .

Obtención de una de las dos claves para su uso posterior

Importante

Estas claves de suscripción se usan para tener acceso a la API de Cognitive Services. No comparta las claves. Almacénelas de forma segura, por ejemplo, con Azure Key Vault. También se recomienda regenerar estas claves periódicamente. Solo se necesita una clave para realizar una llamada API. Al volver a generar la primera clave, puede usar la segunda clave para seguir teniendo acceso al servicio.

El equipo host

El host es un equipo basado en x64 que ejecuta el contenedor de Docker. Puede ser un equipo del entorno local o un servicio de hospedaje de Docker incluido en Azure, como:

Compatibilidad con la extensión avanzada de vector

El equipo host es el equipo que ejecuta el contenedor de Docker. El host debe ser compatible con las extensiones avanzadas de vector (AVX2). Puede comprobar la compatibilidad con AVX2 en los hosts de Linux con el comando siguiente:

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

Advertencia

El equipo host es necesario para admitir AVX2. El contenedor no funcionará correctamente sin compatibilidad con AVX2.

Recomendaciones y requisitos del contenedor

Nota

Los requisitos y las recomendaciones se basan en pruebas comparativas con una única solicitud por segundo, con una imagen de 523 kB de una carta comercial escaneada que contiene 29 líneas y 803 caracteres en total. La configuración recomendada dio como resultado una respuesta aproximadamente dos veces más rápida en comparación con la configuración mínima.

En la tabla siguiente se describe la asignación mínima y recomendada de recursos para cada contenedor OCR de Read.

Contenedor Mínima Recomendado
Versión preliminar de Read 2.0 1 núcleo, 8 GB de memoria 8 núcleos, 16 GB de memoria
Read 3.2 4 núcleos, 16 GB de memoria 8 núcleos, 24 GB de memoria
  • Cada núcleo debe ser de 2,6 gigahercios (GHz) como mínimo.

El núcleo y la memoria se corresponden con los valores de --cpus y --memory que se usan como parte del comando docker run.

Obtención de la imagen del contenedor con docker pull

Hay imágenes de contenedor para Leer disponibles.

Contenedor Container Registry/Repositorio/Nombre de imagen
Read 3.2 model-2021-09-30-preview mcr.microsoft.com/azure-cognitive-services/vision/read:3.2-model-2021-09-30-preview
Read 3.2 mcr.microsoft.com/azure-cognitive-services/vision/read:3.2
Versión preliminar de Read 2.0 mcr.microsoft.com/azure-cognitive-services/vision/read:2.0-preview

Use el comando docker pull para descargar una imagen de contenedor.

Docker pull para el contenedor OCR de lectura

Para conocer la versión preliminar más reciente:

docker pull mcr.microsoft.com/azure-cognitive-services/vision/read:3.2-model-2021-09-30-preview
docker pull mcr.microsoft.com/azure-cognitive-services/vision/read:3.2

Sugerencia

Puede usar el comando docker images para enumerar las imágenes de contenedor descargadas. Por ejemplo, el comando siguiente muestra el id., el repositorio y la etiqueta de cada imagen de contenedor descargada, con formato de tabla:

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

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

Uso del contenedor

Una vez que el contenedor esté en el equipo host, utilice el siguiente proceso para trabajar con el contenedor.

  1. Ejecute el contenedor con la configuración de facturación requerida. Hay más ejemplos del comando docker run disponibles.
  2. Consulta del punto de conexión de predicción del contenedor.

Ejecute el contenedor con docker run.

Utilice el comando docker run para ejecutar el contenedor. Consulte Recopilación de los parámetros obligatorios para más información sobre cómo obtener los valores de {ENDPOINT_URI} y {API_KEY}.

Hay disponibles ejemplos del comando docker run.

Para obtener la versión preliminar más reciente, reemplace la ruta de acceso de la versión 3.2 por:

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

Este comando:

  • Ejecuta el contenedor OCR de lectura desde la imagen de contenedor.
  • Asigna un núcleo de 8 CPU y 18 gigabytes (GB) de memoria.
  • Expone el puerto TCP 5000 y asigna un seudo-TTY para el contenedor.
  • Una vez que se produce la salida, quita automáticamente el contenedor. La imagen del contenedor sigue estando disponible en el equipo host.

También puede ejecutar el contenedor mediante variables de entorno:

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

Hay más ejemplos del comando docker run disponibles.

Importante

Para poder ejecutar el contenedor, las opciones Eula, Billing y ApiKey deben estar especificadas; de lo contrario, el contenedor no se iniciará. Para obtener más información, vea Facturación.

Si necesita un mayor rendimiento (por ejemplo, al procesar archivos de varias páginas), considere la posibilidad de implementar varios contenedores en un clúster de Kubernetes, con Azure Storage y Azure Queue Storage.

Si usa Azure Storage para almacenar imágenes del procesamiento, puede crear una cadena de conexión que se use al llamar al contenedor.

Para buscar la cadena de conexión:

  1. Navegue a Cuentas de almacenamiento en Azure Portal y busque su cuenta.
  2. Haga clic en Claves de acceso en la lista de navegación izquierda.
  3. La cadena de conexión se encontrará debajo de Cadena de conexión

Ejecución de varios contenedores en el mismo host

Si tiene pensado ejecutar varios contenedores con puertos expuestos, asegúrese de que ejecuta cada contenedor con un puerto expuesto diferente. Por ejemplo, ejecute el primer contenedor en el puerto 5000 y el segundo en el puerto 5001.

Puede tener este contenedor y un contenedor de Azure Cognitive Services diferente en ejecución simultáneamente en el HOST. También puede tener varios contenedores del mismo contenedor de Cognitive Services en ejecución.

Comprobación de que un contenedor está en ejecución

Hay varias maneras de comprobar que el contenedor está en ejecución. Busque la dirección IP externa y el puerto expuesto del contenedor en cuestión y abra el explorador web que prefiera. Use las distintas direcciones URL de solicitud para validar que el contenedor se está ejecutando. Las direcciones URL de solicitud de ejemplo que se enumeran a continuación son http://localhost:5000, pero el contenedor específico puede variar. Tenga en cuenta que va a confiar en la dirección IP externa y el puerto expuesto del contenedor.

URL de la solicitud Propósito
http://localhost:5000/ El contenedor ofrece una página principal.
http://localhost:5000/ready Solicitado con GET, proporciona una comprobación de que el contenedor está listo para aceptar una consulta para el modelo. Esta solicitud se puede usar con los sondeos de ejecución y preparación de Kubernetes.
http://localhost:5000/status También se solicita con GET y comprueba si el valor de api-key usado para iniciar el contenedor es válido sin generar una consulta de punto de conexión. Esta solicitud se puede usar con los sondeos de ejecución y preparación de Kubernetes.
http://localhost:5000/swagger El contenedor cuenta con un completo conjunto de documentación sobre los puntos de conexión y una característica de prueba. Esta característica le permite especificar la configuración en un formulario HTML basado en web y realizar la consulta sin necesidad de escribir código. Una vez que la consulta devuelve resultados, se proporciona un ejemplo del comando CURL para mostrar los encabezados HTTP y el formato de cuerpo requeridos.

Página principal del contenedor

Consulta del punto de conexión de predicción del contenedor

El contenedor proporciona varias API de puntos de conexión de predicción de consultas basadas en REST.

Para conocer la versión preliminar más reciente:

Use la misma ruta de acceso de Swagger que la 3.2, pero otro puerto, si ya ha implementado la versión 3.2 en el puerto 5000.

Utilice el host, http://localhost:5000, con las API de contenedor. Puede ver la ruta de acceso de Swagger en http://localhost:5000/swagger/vision-v3.2-read/swagger.json.

Lectura asincrónica

Para obtener la versión preliminar más reciente, todo es igual que en la versión 3.2, excepto el "modelVersion": "2021-09-30-preview" adicional.

Puede usar las operaciones POST /vision/v3.2/read/analyze y GET /vision/v3.2/read/operations/{operationId} conjuntamente para leer una imagen asincrónicamente, de manera similar a cómo el servicio Computer Vision usa las operaciones de REST correspondientes. El método POST asincrónico devolverá un valor operationId que se usa como identificador de la solicitud HTTP GET.

En la interfaz de usuario de Swagger, seleccione Analyze para expandirlo en el explorador. A continuación, seleccione Probarlo > Elegir archivo. En este ejemplo, usaremos la imagen siguiente:

pestañas o espacios

Una vez ejecutado correctamente el método POST, devuelve un código de estado HTTP 202. Como parte de la respuesta, hay un encabezado operation-location que contiene el punto de conexión del resultado de la solicitud.

 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

El elemento operation-location es la dirección URL completa y se obtiene acceso a ella a través de HTTP GET. Esta es la respuesta JSON a la ejecución de la dirección URL operation-location desde la imagen anterior:

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

Importante

Si implementa varios contenedores OCR de lectura detrás de un equilibrador de carga en, por ejemplo, Docker Compose o Kubernetes, debe tener una caché externa. Dado que el contenedor de procesamiento y el contenedor de la solicitud GET podrían no ser los mismos, una caché externa almacena los resultados y los comparte entre contenedores. Para más información sobre la configuración de caché, consulte Configuración de contenedores de Docker de Computer Vision.

Lectura sincrónica

Puede usar la siguiente operación para leer sincrónicamente una imagen.

POST /vision/v3.2/read/syncAnalyze

Una vez leída la imagen en su totalidad, entonces, y solo entonces, devuelve la API una respuesta JSON. La única excepción a esto es un escenario de error. Cuando se produce un error, se devuelve el siguiente código JSON:

{
    "status": "Failed"
}

El objeto de respuesta JSON tiene el mismo gráfico de objetos que la versión asincrónica. Si es usuario de JavaScript y quiere seguridad de tipos, considere la posibilidad de usar TypeScript para convertir la respuesta JSON.

Para ver un caso de uso de ejemplo, consulte el espacio aislado de TypeScript aquí y seleccione Ejecutar para visualizar su facilidad de uso.

Detención del contenedor

Para apagar el contenedor, en el entorno de la línea de comandos donde se ejecuta el contenedor, seleccione Ctrl + C.

Solución de problemas

Si ejecuta el contenedor con un montaje de salida y el registro habilitados, el contenedor genera archivos de registro que resultan útiles para solucionar problemas que se producen al iniciar o ejecutar el contenedor.

Sugerencia

Para más información e instrucciones para solución de problemas, vea Preguntas frecuentes de los contenedores de Cognitive Services .

Si tiene problemas al ejecutar un contenedor de Cognitive Services, puede intentar usar el contenedor de diagnósticos de Microsoft. Use este contenedor para diagnosticar errores comunes en el entorno de implementación que podrían impedir que los contenedores de Cognitive Services funcionen según lo previsto.

Para obtener el contenedor, use el comando de Docker pull siguiente:

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

Luego ejecute el contenedor, reemplace {ENDPOINT_URI} por el punto de conexión y {API_KEY} por la clave del recurso:

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

El contenedor prueba la conectividad de red con el punto de conexión de facturación.

Facturación

Los contenedores de Cognitive Services envían información de facturación a Azure mediante el recurso correspondiente de la cuenta de Azure.

Las consultas en el contenedor se facturan con el plan de tarifa del recurso de Azure que se usa para el parámetro ApiKey.

Los contenedores de Azure Cognitive Services no tienen licencia para ejecutarse si no están conectados al punto de conexión de facturación o a las mediciones. Debe habilitar los contenedores para que comuniquen la información de facturación al punto de conexión de facturación en todo momento. Los contenedores de Cognitive Services no envían datos de los clientes (por ejemplo, la imagen o el texto que se está analizando) a Microsoft.

Conexión con Azure

El contenedor necesita que se ejecuten los valores del argumento de facturación. Estos valores permiten al contenedor conectarse al punto de conexión de facturación. El contenedor informa sobre el uso cada 10 a 15 minutos. Si el contenedor no se conecta a Azure en la ventana de tiempo permitida, continuará ejecutándose pero no atenderá las consultas hasta que se restaure el punto de conexión de facturación. Se intenta 10 veces la conexión en el mismo intervalo de tiempo de 10 a 15 minutos. Si no se puede conectar con el punto de conexión de facturación en esos 10 intentos, el contenedor deja de atender solicitudes. Consulte Preguntas más frecuentes acerca de los contenedores de Cognitive Services para obtener un ejemplo de la información que se envía a Microsoft para la facturación.

Argumentos de facturación

El comando docker run iniciará el contenedor cuando se especifiquen las tres opciones siguientes con valores válidos:

Opción Descripción
ApiKey La clave de API del recurso de Cognitive Services que se usa para realizar un seguimiento de la información de facturación.
El valor de esta opción se debe establecer en una clave de API para el recurso aprovisionado que se especifica en Billing.
Billing El punto de conexión del recurso de Cognitive Services que se usa para realizar el seguimiento de la información de facturación.
El valor de esta opción debe establecerse en el URI del punto de conexión de un recurso aprovisionado de Azure.
Eula Indica que ha aceptado la licencia del contenedor.
El valor de esta opción debe establecerse en accept.

Para obtener más información acerca de estas opciones, consulte Configure containers (Configuración de contenedores).

Resumen

En este artículo, ha aprendido los conceptos y el flujo de trabajo para la descarga, instalación y ejecución de contenedores de Computer Vision. En resumen:

  • Computer Vision proporciona un contenedor de Linux para Docker que incluye Leer.
  • Para ejecutar la imagen del contenedor de Read se necesita una aplicación.
  • Las imágenes de contenedor se ejecutan en Docker.
  • Puede usar la API de REST o el SDK para llamar a operaciones en contenedores de OCR de lectura mediante la especificación del URI del host del contenedor.
  • Debe especificar la información de facturación al crear una instancia de un contenedor.

Importante

Los contenedores de Cognitive Services no tienen licencia para ejecutarse sin estar conectados a Azure para realizar mediciones. Los clientes tienen que habilitar los contenedores para comunicar la información de facturación con el servicio de medición en todo momento. Los contenedores de Cognitive Services no envían datos de los clientes (por ejemplo, la imagen o el texto que se está analizando) a Microsoft.

Pasos siguientes