Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tutorial, aprenderá a cargar una imagen en Azure Blob Storage y procesarla mediante Azure Functions y Computer Vision. También aprenderá a implementar desencadenadores y enlaces de Azure Functions como parte de este proceso. Juntos, estos servicios analizan una imagen cargada que contiene texto, extraen el texto de ella y, a continuación, almacenan el texto en una fila de base de datos para realizar análisis posteriores u otros fines.
Azure Blob Storage es la solución de almacenamiento de objetos escalable de Microsoft para la nube. Blob Storage está diseñado para almacenar imágenes y documentos, transmitir archivos multimedia, administrar datos de copia de seguridad y archivo, y mucho más. Puede obtener más información sobre Blob Storage en la página overview.
Azure Functions es una solución de equipo sin servidor que permite escribir y ejecutar pequeños bloques de código como funciones muy escalables, sin servidor y controladas por eventos. Puede obtener más información sobre Azure Functions en la página overview.
En este tutorial, aprenderá a:
- Carga de imágenes y archivos en Blob Storage
- Uso de un desencadenador de eventos Azure Function para procesar los datos cargados en Blob Storage
- Uso de las herramientas de Foundry para analizar una imagen
- Escritura de datos en Table Storage mediante enlaces de salida de función de Azure
Prerequisites
- Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
- Visual Studio 2022
Creación de una cuenta de almacenamiento y un contenedor
El primer paso es crear la cuenta de almacenamiento para almacenar los datos de blobs cargados, que en este escenario son imágenes que contienen texto. Una cuenta de almacenamiento ofrece varios servicios diferentes, pero en este tutorial se usan Blob Storage y Table Storage.
Inicie sesión en el portal Azure.
En la barra de búsqueda en la parte superior del portal, busque Almacenamiento y seleccione el resultado etiquetado como Cuentas de almacenamiento.
En la página Cuentas de almacenamiento, seleccione + Crear en la parte superior izquierda.
En la página Crear una cuenta de almacenamiento, escriba los siguientes valores:
- Suscripción: elija la suscripción preferida.
- Grupo de recursos: seleccione Create new (Crear nuevo) e ingrese un nombre de . Luego, seleccione OK.
- Nombre de la cuenta de almacenamiento: escriba un valor de . El nombre de la cuenta de almacenamiento debe ser único en Azure, por lo que es posible que tenga que agregar números después del nombre, como
msdocsstoragefunction123. - Región: Seleccione la región más cercana a usted.
- Rendimiento: elija Estándar.
- Redundancia: Deje el valor predeterminado seleccionado.
Seleccione Review + Create en la parte inferior y Azure valide la información que escribió. Una vez validada la configuración, elija Crear y Azure comience a aprovisionar la cuenta de almacenamiento, lo que puede tardar un momento.
Cree el contenedor.
Una vez aprovisionada la cuenta de almacenamiento, seleccione Ir al recurso. El siguiente paso es crear un contenedor de almacenamiento dentro de la cuenta para almacenar imágenes cargadas para su análisis.
En el panel de navegación, elija Contenedores.
En la página Contenedores, seleccione + Contenedor en la parte superior. En el panel de diapositivas, escriba un Nombre de imageanalysis y asegúrese de que el Nivel de acceso público esté establecido en Blob (acceso de lectura anónimo solo para blobs). Seleccione Crear.
Recorte de pantalla que muestra cómo crear un contenedor de almacenamiento.
Debería ver que el nuevo contenedor aparece en la lista de contenedores.
Recuperar la cadena de conexión
El último paso es recuperar nuestra cadena de conexión de la cuenta de almacenamiento.
En el panel de navegación de la izquierda, seleccione la pestaña Claves de acceso.
En la página Claves acceso, seleccione Mostrar claves. Copie el valor de la cadena de conexión en la sección key1 y pegue la clave en algún lugar para usarlo más adelante. Anote también el nombre de la cuenta de almacenamiento para más adelante.
Recorte de pantalla que muestra cómo acceder al contenedor de almacenamiento.
Estos valores son necesarios cuando es necesario conectar nuestra función de Azure a esta cuenta de almacenamiento.
Creación del servicio Computer Vision
A continuación, cree la cuenta de servicio Computer Vision que procesa nuestros archivos cargados. Computer Vision forma parte de Foundry Tools y ofrece varias características para extraer datos de imágenes. Puede obtener más información sobre Computer Vision en la página overview.
En la barra de búsqueda en la parte superior del portal, busque Equipo y seleccione el resultado etiquetado como Computer Vision.
En la página Computer Vision, seleccione + Crear.
En la página Crear Computer Vision, escriba los valores siguientes:
- Suscripción: elija la suscripción preferida.
- Grupo de recursos: use el grupo de recursos creado anteriormente.
- Región: Seleccione la región más cercana a usted.
- Nombre: escriba en un nombre de .
- Plan de tarifa: elija Gratis si está disponible; de lo contrario, elija Estándar S1.
- Active la casilla Aviso de IA responsable si acepta los términos.
Captura de pantalla que muestra cómo crear un nuevo servicio de Computer Vision.
En la parte inferior, seleccione Revisar y crear. Azure tarda un momento en validar la información que escribió. Una vez validada la configuración, elija Crear y Azure comience a aprovisionar el servicio Computer Vision, lo que puede tardar un momento.
Cuando se complete la operación, seleccione Ir al recurso.
Recuperación de las claves
A continuación, es necesario encontrar la clave secreta y la dirección URL del punto de conexión del servicio Computer Vision que se va a usar en nuestra aplicación Azure Function.
En la página de información general de Computer Vision, seleccione Keys and Endpoint.
En la página Claves y Punto de conexión, copie el valor clave 1 y los valores de EndPoint y péguelos en algún lugar para usarlos más adelante.
Captura de pantalla que muestra cómo recuperar las claves y el punto de conexión URL de un servicio de Computer Vision.
Descarga y configuración del proyecto de ejemplo
El código de la función de Azure que se usa en este tutorial se puede encontrar en este GitHub repositorio. También puede clonar el proyecto mediante el siguiente comando:
git clone https://github.com/Azure-Samples/msdocs-storage-bind-function-service.git \
cd msdocs-storage-bind-function-service/dotnet
El código de proyecto de ejemplo hace las siguientes tareas:
- Recupera variables de entorno para conectarse a la cuenta de almacenamiento y al servicio Computer Vision
- Acepta el archivo cargado como un parámetro de blob.
- Analiza el blob mediante el servicio Computer Vision
- Envía el texto de la imagen analizada a una nueva fila de tabla mediante enlaces de salida.
Una vez que descargue y abra el proyecto, hay algunos conceptos esenciales para comprender en el método principal que se muestra a continuación. La función Azure utiliza enlaces de desencadenador y salida, que se aplican mediante atributos en la firma del método Run.
El atributo usa dos parámetros. El primer parámetro especifica el nombre de la tabla para escribir el valor de texto de imagen analizado devuelto por la función. El segundo parámetro Connection extrae una cadena de conexión de Table Storage de las variables de entorno para que nuestra función de Azure tenga acceso a ella.
El atributo BlobTrigger se usa para enlazar nuestra función al evento de carga en Blob Storage y proporciona el blob cargado en la función Run. El desencadenador de blobs tiene dos parámetros propios: uno para el nombre del contenedor de blobs para supervisar las cargas y otro para la cadena de conexión de nuestra cuenta de almacenamiento.
// Azure Function name and output Binding to Table Storage
[FunctionName("ProcessImageUpload")]
[return: Table("ImageText", Connection = "StorageConnection")]
// Trigger binding runs when an image is uploaded to the blob container below
public async Task<ImageContent> Run([BlobTrigger("imageanalysis/{name}",
Connection = "StorageConnection")]Stream myBlob, string name, ILogger log)
{
// Get connection configurations
string subscriptionKey = Environment.GetEnvironmentVariable("ComputerVisionKey");
string endpoint = Environment.GetEnvironmentVariable("ComputerVisionEndpoint");
string imgUrl = $"https://{ Environment.GetEnvironmentVariable("StorageAccountName")}
.blob.core.windows.net/imageanalysis/{name}";
ComputerVisionClient client = new ComputerVisionClient(
new ApiKeyServiceClientCredentials(subscriptionKey)) { Endpoint = endpoint };
// Get the analyzed image contents
var textContext = await AnalyzeImageContent(client, imgUrl);
return new ImageContent {
PartitionKey = "Images",
RowKey = Guid.NewGuid().ToString(), Text = textContext
};
}
public class ImageContent
{
public string PartitionKey { get; set; }
public string RowKey { get; set; }
public string Text { get; set; }
}
Este código también recupera los valores de configuración esenciales de las variables de entorno, como la cadena de conexión de la cuenta de almacenamiento y la clave de Computer Vision. Agregaremos estas variables de entorno a nuestro entorno de Azure Function después de implementarla.
La función también utiliza un segundo método denominado . Este código usa el punto de conexión url y la clave de nuestra cuenta de Computer Vision para realizar una solicitud a ese servidor para procesar nuestra imagen. La solicitud devuelve todo el texto detectado en la imagen, que se escribe en Table Storage mediante el enlace de salida en el método .
static async Task<string> ReadFileUrl(ComputerVisionClient client, string urlFile)
{
// Analyze the file using Computer Vision Client
var textHeaders = await client.ReadAsync(urlFile);
string operationLocation = textHeaders.OperationLocation;
Thread.Sleep(2000);
// Complete code omitted for brevity, view in sample project
return text.ToString();
}
Ejecución local
Si desea ejecutar el proyecto localmente, puede propagar las variables de entorno mediante el archivo local.settings.json. Dentro de este archivo, rellene los valores de marcador de posición con los valores que guardó anteriormente al crear los recursos de Azure.
Aunque el código de Azure Function se ejecuta localmente, todavía se conecta a los servicios activos en Azure, en lugar de usar emuladores locales.
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"StorageConnection": "your-storage-account-connection-string",
"StorageAccountName": "your-storage-account-name",
"ComputerVisionKey": "your-computer-vision-key",
"ComputerVisionEndPoint": "your-computer-vision-endpoint"
}
}
Implementación del código en Azure Functions
Ya está listo para implementar nuestra aplicación en Azure mediante Visual Studio. También puede crear la aplicación Azure Functions en Azure al mismo tiempo que parte del proceso de implementación.
Para comenzar, seleccione el nodo del proyecto ProcessImage y seleccione Publicar.
En la pantalla de diálogo Publish, seleccione Azure y elija Siguiente.
Captura de pantalla que muestra cómo seleccionar Azure como destino de implementación.
Seleccione Azure Function App (Windows) o Azure Function App (Linux) en la pantalla siguiente y elija Next de nuevo.
Captura de pantalla que muestra cómo elegir Azure Functions como un objetivo específico de implementación.
En el paso instancia de Functions, asegúrese de elegir la suscripción en la que desea hacer la implementación. A continuación, seleccione el símbolo verde en el lado derecho del cuadro de diálogo.
Se abre un cuadro de diálogo nuevo. Escriba los siguientes valores para la nueva aplicación de funciones.
- Nombre: escriba msdocsprocessimage o algo similar.
- Nombre de la suscripción: elija la suscripción que quiera usar.
- Grupo de recursos: use el grupo de recursos creado anteriormente.
- Tipo de plan: seleccione Consumo.
- Ubicación: elija la región más cercana.
- Azure Storage: seleccione la cuenta de almacenamiento que creó anteriormente.
Captura de pantalla que muestra cómo crear una Function App en Azure.
Una vez que rellene todos esos valores, seleccione Crear. Visual Studio y Azure comenzar a aprovisionar los recursos solicitados, lo que tarda unos minutos en completarse.
Una vez finalizado el proceso, seleccione Finalizar para cerrar el flujo de trabajo del cuadro de diálogo.
El último paso para implementar la función Azure consiste en seleccionar Publish en la esquina superior derecha de la pantalla. La publicación de la función también puede tardar unos instantes en completarse. Una vez finalizada, la aplicación se ejecuta en Azure.
Conexión de los servicios
La función Azure se implementó correctamente, pero aún no se puede conectar a nuestra cuenta de almacenamiento ni a los servicios de Computer Vision. Las claves y las cadenas de conexión correctas deben agregarse primero a los valores de configuración de la aplicación Azure Functions.
En la parte superior del portal de Azure, busque function y seleccione Function App en los resultados.
En la pantalla Function App, seleccione la aplicación de funciones que creó en Visual Studio.
En la página información general de Function App , seleccione Configuración en el panel de navegación izquierdo para abrir una página donde podemos administrar varios tipos de opciones de configuración para nuestra aplicación. Por ahora, nos interesa la sección Configuración de la aplicación.
El siguiente paso consiste en agregar la configuración del nombre de la cuenta de almacenamiento y la cadena de conexión, la clave secreta de Computer Vision y el punto de conexión de Computer Vision.
En la pestaña Configuración de la aplicación, seleccione + Nueva configuración de la aplicación. En el control flotante que aparece, escriba los valores siguientes:
- Nombre: escriba un valor de ComputerVisionKey.
- Value: pega la clave de Computer Vision que guardaste anteriormente.
Seleccione Aceptar para agregar esta configuración a la aplicación.
Captura de pantalla que muestra cómo agregar una nueva configuración de aplicación a una Función Azure.
A continuación, repitamos este proceso para el punto de conexión de nuestro servicio de Computer Vision, con los siguientes valores:
- Nombre: escriba un valor de ComputerVisionKey.
- Valor: pegue la dirección URL del punto de conexión que guardó anteriormente.
Repita este paso de nuevo para la conexión de la cuenta de almacenamiento con los valores siguientes:
- Nombre: escriba un valor de StorageConnection.
- Value: Pegue la cadena de conexión que guardó anteriormente.
Por último, repita este proceso una vez más para el nombre de la cuenta de almacenamiento, con los valores siguientes:
- Nombre: escriba un valor de StorageAccountName.
- Valor: escriba el nombre de la cuenta de almacenamiento que creó.
Después de agregar esta configuración de aplicación, asegúrese de seleccionar Guardar en la parte superior de la página de configuración. Cuando se complete el guardado, también puede presionar Actualizar para asegurarse de que se selecciona la configuración.
Todas las variables de entorno necesarias para conectar nuestra función de Azure a diferentes servicios están ahora en vigor.
Carga de una imagen en Blob Storage
Ya está todo listo para probar nuestra aplicación. Puede cargar un blob en el contenedor y, a continuación, comprobar que el texto de la imagen se guardó en Table Storage.
En primer lugar, en la parte superior del portal de Azure, busque Storage y seleccione storage account. En la página cuenta de almacenamiento, seleccione la cuenta de almacenamiento que creó anteriormente.
A continuación, seleccione Contenedores en el panel de navegación izquierdo y, a continuación, vaya al contenedor ImageAnalysis que creó anteriormente. Desde aquí puede cargar una imagen de prueba directamente dentro del explorador.
Recorte de pantalla que muestra cómo navegar al contenedor de almacenamiento.
Puede encontrar algunas imágenes de ejemplo incluidas en la carpeta images en la raíz del proyecto de ejemplo descargable, o puede usar una de sus propias imágenes.
En la parte superior de la página ImageAnalysis, seleccione Upload. En el panel flotante que se abre, seleccione el icono de carpeta para abrir un navegador de archivos. Elija la imagen que desea cargar y, después, seleccione Upload.
Recorte de pantalla que muestra cómo cargar un blob en el contenedor de almacenamiento.
El archivo debe aparecer dentro del contenedor de blobs. A continuación, puede comprobar que la carga desencadenó la función Azure y que el texto de la imagen se analizó y guardó en Table Storage correctamente.
Con las rutas de navegación de la parte superior de la página, navegue por un nivel en la cuenta de almacenamiento. Busque y seleccione Explorador de almacenamiento en el panel de navegación izquierdo y, a continuación, seleccione Tablas.
Ahora debería haber disponible una tabla ImageText. Seleccione en la tabla para obtener una vista previa de las filas de datos dentro de ella. Debería ver una entrada para el texto de la imagen procesada de nuestra carga. Puede comprobarlo mediante la marca de tiempo o en el contenido de la columna Texto.
Captura de pantalla que muestra una entrada de texto en Azure Table Storage.
Congratulations! Ha realizado correctamente el procesamiento de una imagen que se cargó en Blob Storage mediante Azure Functions y Computer Vision.
Limpieza de recursos
Si no va a seguir usando esta aplicación, puede eliminar los recursos que ha creado al quitar el grupo de recursos.
- Seleccione Grupos de recursos en la navegación principal.
- Seleccione el grupo de recursos de la lista.
- Seleccione el botón Eliminar grupo de recursos en la parte superior de la página de información general del grupo de recursos.
- Escriba el nombre del grupo de recursos msdocs-storage-function en el cuadro de diálogo de confirmación.
- Seleccione Eliminar. El proceso para eliminar el grupo de recursos puede tardar unos minutos en completarse.