Compartir a través de


Tutorial: Desencadenamiento de un trabajo de Batch mediante Azure Functions

En este tutorial, aprenderá a desencadenar un trabajo de Batch mediante Azure Functions. En este artículo se explica un ejemplo que toma los documentos agregados a un contenedor de blobs de Azure Storage que aplica el reconocimiento óptico de caracteres (OCR) mediante Azure Batch. Para simplificar 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 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 por 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 sus credenciales de Azure.

  2. Cree un grupo seleccionando Grupos en el panel de navegación izquierdo y, a continuación, seleccione el botón Agregar situado encima del formulario de búsqueda.

    Recorte de pantalla de la página Grupos de una cuenta de Batch que resalta el botón Agregar.

    1. Escriba un identificador de grupo. En este ejemplo se denomina al grupo ocr-pool.
    2. Seleccione canónico como Publicador.
    3. Seleccione 0001-com-ubuntu-server-jammy como oferta.
    4. Seleccione 22_04-lts como Sku.
    5. Elija Standard_F2s_v2 - 2 vCPUs, 2 GB Memory como 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 como Habilitado para la tarea de inicio, y escriba el comando en /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"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. Selecciona Aceptar.

Crear 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 Grupo actual o cualquier nombre que elija para el grupo.
    3. Selecciona 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 todos los documentos sin OCR se cargan inicialmente para su procesamiento. El contenedor de salida se denomina output y es donde el trabajo de Batch escribe documentos procesados con OCR.

  1. Busque y seleccione Cuentas de almacenamiento en Azure Portal.

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

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

  4. Cree una firma de acceso compartido para su contenedor de salida seleccionándolo y, en la página Tokens de acceso compartido, seleccione Escribir en la lista desplegable Permisos. No se necesitan otros permisos.

  5. Seleccione Generar token y URL de SAS, y copie la URL SAS del Blob para usarla más adelante en su función.

    Recorte de pantalla de la página Tokens de acceso compartido que resalta la lista desplegable Permisos y el botón Generar token de SAS y URL.

Creación de una Función de Azure

En esta sección, creará la función de Azure que desencadena el trabajo de OCR Batch cada vez que se cargue un archivo en el contenedor de entrada.

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

    1. Para la 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.

    La captura de pantalla siguiente muestra la página Crear Función App en la pestaña Aspectos básicos utilizando 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 Desencadenador de Azure Blob Storage.

  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. Selecciona 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. Usa run.csx y function.proj desde GitHub en la función. function.proj no existe de forma predeterminada, por lo 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 función, por ejemplo, el SDK de Batch para .NET.
  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 encontrar las credenciales de las cuentas de almacenamiento y Batch en el portal de Azure en la sección Claves de sus cuentas de almacenamiento y Batch.

Desencadenamiento de la función y recuperación de resultados

Cargue cualquiera o todos los archivos escaneados desde el directorio input_files en GitHub a su 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 Ejecutar.

Después de unos segundos, el archivo con OCR aplicado se agrega al contenedor de salida. La información de registro se genera en la ventana inferior. A continuación, el archivo es visible y recuperable en el Explorador de Storage.

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

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 la máquina 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

Los archivos descargados se pueden buscar si se abren en un lector 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, todos los resultados de las tareas en los nodos también se eliminan. Sin embargo, los archivos de salida permanecen en la cuenta de almacenamiento. Cuando ya no sea necesario, también puede eliminar la cuenta de Batch y la cuenta de almacenamiento.

Pasos siguientes

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