Tutorial: Desencadenamiento de un trabajo de Batch con Azure Functions

En este tutorial, aprende a desencadenar un trabajo de Batch con Azure Functions. En este artículo se explica un ejemplo que toma documentos agregados a un contenedor de blobs de Azure Storage que aplica el reconocimiento óptico de caracteres (OCR) mediante Azure Batch. Para agilizar el procesamiento de OCR, en este ejemplo se configura una función de Azure que ejecuta un trabajo de OCR de Batch cada vez que se agrega un archivo al contenedor de blobs. Aprenderá a:

  • Use el Azure Portal para crear grupos y trabajos.
  • Cree contenedores de blobs y una firma de acceso compartido (SAS).
  • Cree una función de Azure desencadenada mediante blobs.
  • Cargar archivos de entrada en Storage.
  • Supervise la ejecución de las tareas.
  • Recuperación de archivos de salida.

Prerrequisitos

Inicio de sesión en Azure

Inicie sesión en Azure Portal.

Creación de un grupo y un trabajo de Batch mediante Azure Portal

En esta sección, usa Azure Portal para crear el grupo y el trabajo de Batch que ejecutarán las tareas de OCR.

Creación de un grupo

  1. Inicie sesión en Azure Portal con las credenciales de Azure.

  2. Para crear un grupo, seleccione Grupos en la barra lateral izquierda y, después, el botón Agregar sobre el formulario de búsqueda.

    Captura de pantalla de la página Grupos en una cuenta Batch en la que se destaca el botón Añadir.

    1. Escriba un id. de grupo. En este ejemplo se asigna un nombre al grupo ocr-pool.
    2. Seleccione canónico como Publicador.
    3. Seleccione 0001-com-ubuntu-server-jammy como la Oferta.
    4. Seleccione 22_04-lts como la Sku.
    5. Elija Standard_F2s_v2 - 2 vCPUs, 2 GB Memory como el tamaño de máquina virtual en la sección Tamaño del nodo.
    6. Establezca el Modo en la sección Escala en Fijo y escriba 3 para los Nodos dedicados de destino.
    7. Establezca Iniciar tarea en Habilitado la tarea de inicio y escriba el comando /bin/bash -c "sudo update-locale LC_ALL=C.UTF-8 LANG=C.UTF-8; sudo apt-get update; sudo apt-get -y install ocrmypdf" en Línea de comandos. Asegúrese de establecer el Nivel de elevación como Grupo de autousuario, Administrador, que permite que las tareas de inicio incluyan comandos con sudo.
    8. Seleccione Aceptar.

Creación de un trabajo

  1. Para crear un trabajo en el grupo, seleccione Trabajos en la barra lateral izquierda y, después, elija el botón Agregar sobre el formulario de búsqueda.
    1. Escriba un identificador de trabajo. En este ejemplo se usa ocr-job.
    2. Seleccione ocr-pool para el Grupo actual, o el nombre que haya elegido para el grupo.
    3. Seleccione Aceptar.

Creación de contenedores de blobs

Aquí puede crear contenedores de blobs que almacenan la entrada y salida de archivos para el trabajo de Batch OCR. En este ejemplo, el contenedor de entrada se denomina input y es donde se cargan inicialmente todos los documentos sin reconocimiento óptico de caracteres para ser procesados. El contenedor de salida se denomina output y es donde el trabajo de Batch escribe los documentos procesados con OCR.

  1. En Azure Portal, busque y seleccione Cuentas de almacenamiento.

  2. Elija la cuenta de almacenamiento vinculada a la cuenta de Batch.

  3. Seleccione Contenedores en el panel de navegación izquierdo y cree dos contenedores de blob (uno para los archivos de entrada y otro para los de salida); para ello, siga los pasos descritos en Creación de un contenedor de blobs.

  4. Cree una firma de acceso compartido para el contenedor de salida seleccionando el contenedor de salida y, en la página Tokens de acceso compartido, seleccione Escribir en la lista desplegable Permisos. No se necesitan más permisos.

  5. Seleccione Generar token y dirección URL de SAS y copie la dirección URL de SAS del blob que se usará más adelante para la función.

    Captura de pantalla de la página de tokens de acceso compartidos en la que aparece el menú desplegable Permisos y el botón Generar token de SAS y URL.

Creación de una Función de Azure

En esta sección, crea la función de Azure que desencadena el trabajo de Batch OCR cuando se carga un archivo en el contenedor de entrada.

  1. Siga los pasos de Crear una función desencadenada por Azure Blob Storage para crear una función.

    1. En Pila en tiempo de ejecución, elija .NET. Esta función de ejemplo usa C# para aprovechar el SDK de .NET de Batch.
    2. En la página Almacenamiento, use la misma cuenta de almacenamiento que ha vinculado a la cuenta de Batch.
    3. Seleccione Revisar y crear> Crear.

    En la captura de pantalla siguiente se muestra la página Crear aplicación de funciones en la pestaña Aspectos básicos con información de ejemplo.

    Captura de pantalla de la página Crear aplicación de funciones en la pestaña Aspectos básicos con información de ejemplo.

  2. En la función, seleccione Funciones en el panel de navegación izquierdo y seleccione Crear.

  3. En el panel Crear función, seleccione el desencadenador de Azure Blob Storage desencadenador.

  4. Escriba un nombre para la función en Nueva función. En este ejemplo, el nombre es OcrTrigger. Escriba la ruta de acceso como input/{name}, donde escriba el nombre del contenedor de blobs.

  5. Seleccione Crear.

    Captura de pantalla del panel Crear función que destaca la opción de desencadenar Azure Blob Storage y los campos Nueva función y Ruta.

  6. Una vez creada la función desencadenada por blobs, seleccione Código y prueba. Use los archivos run.csx y function.proj de GitHub en la función. function.proj no existe de forma predeterminada, así que seleccione el botón Cargar para cargarlo en el área de trabajo de desarrollo.

    • run.csx se ejecuta cuando se agrega un nuevo blob al contenedor de blobs de entrada.
    • function.proj enumera las bibliotecas externas en el código de Function, por ejemplo, el SDK de .NET para Batch.
  7. Cambie los valores del marcador de posición de las variables en la función Run() del archivo run.csx para que refleje sus credenciales de Batch y almacenamiento. Puede buscar las credenciales de sus cuentas de Batch y de almacenamiento en Azure Portal, en la sección Claves de su cuenta de Batch y de almacenamiento.

Desencadenar la función y recuperar resultados

Cargue alguno o todos los archivos analizados desde el directorio input_files en GitHub al contenedor de entrada.

Puede probar la función desde Azure Portal en la página Código y prueba de la función.

  1. Seleccione Probar/ejecutar en la página Código y prueba.
  2. Escriba la ruta de acceso del contenedor de entrada en Cuerpo en la pestaña Entrada .
  3. Seleccione Run (Ejecutar).

Después de unos segundos, se agrega al contenedor de salida el archivo con el reconocimiento óptico de caracteres aplicado. La información de registro se genera en la ventana inferior. El archivo entonces es visible y se puede recuperar en el Explorador de Storage.

Como alternativa, puede encontrar la información de registro en la página Supervisar:

2019-05-29T19:45:25.846 [Information] Creating job...
2019-05-29T19:45:25.847 [Information] Accessing input container <inputContainer>...
2019-05-29T19:45:25.847 [Information] Adding <fileName> as a resource file...
2019-05-29T19:45:25.848 [Information] Name of output text file: <outputTxtFile>
2019-05-29T19:45:25.848 [Information] Name of output PDF file: <outputPdfFile>
2019-05-29T19:45:26.200 [Information] Adding OCR task <taskID> for <fileName> <size of fileName>...

Para descargar los archivos de salida en el equipo local, vaya al contenedor de salida de la cuenta de almacenamiento. Seleccione más opciones en el archivo que desee y, a continuación, seleccione Descargar.

Sugerencia

Se puede buscar en los archivos descargados si se abren en un lector de PDF.

Limpieza de recursos

Se le cargará por el grupo mientras que los nodos estén en ejecución, aunque no haya trabajos programados. Cuando ya no necesite el grupo, pude eliminarlo mediante estos pasos.

  1. En la página Grupos de la cuenta de Batch, seleccione más opciones en el grupo.
  2. Seleccione Eliminar.

Al eliminar el grupo, las salidas de tarea de los nodos también se eliminan. Sin embargo, los archivos de salida permanecen en la cuenta de almacenamiento. Cuando ya no las necesite, también puede eliminar la cuenta de Batch y la cuenta de almacenamiento.

Pasos siguientes

Para más ejemplos de uso de la API de .NET para programar y procesar cargas de trabajo de Batch, consulte los ejemplos de GitHub.