El enriquecimiento de Inteligencia Artificial es una capacidad de indexación de Azure Cognitive Search que habilita la extracción de información en imágenes, archivos y otras fuentes de datos no estructurados.
Las tareas de extracción y enriquecimiento se implementan a través de habilidades cognitivas, tales como el procesamiento del lenguaje natural y el procesamiento de imágenes con varias posibilidades: reconocimiento de entidades, detección de lenguaje, detección de sentimientos, OCR, detección de rostros, etc.
En este taller se describirá el servicio Azure Cognitive Search y se construirá un pipeline de enriquecimiento capaz de extraer información de documentos PDF con el cual se generará un sitio web o una app móvil para realizar búsquedas de información.
Tutorial - Búsquedas inteligentes con Azure Cognitive Search
1. Tutorial – Búsquedas inteligentes con Azure Cognitive Search
Luis Beltrán (luis@luisbeltran.mx)
En esta guía paso a paso aprenderás a implementar Azure Cognitive Search para encontrar
información en datos no estructurados, como puede ser imágenes, documentos PDF, de texto y
otros distintos a una tradicional base de datos. Posteriormente, construirás un sitio web que usa
dicho servicio para permitir que tus usuarios realicen las búsquedas inteligentes de información.
Parte 1 – Creación del servicio inteligente de Search en Azure
Requisitos: Cuenta de Azure
Paso 1. Ingresa al portal de Azure (https://portal.azure.com) y da clic en Create a resource.
2. En el buscador, ingresa Azure Cognitive Search y selecciónalo de la lista una vez localizado.
Aparecerá la siguiente ventana, simplemente da clic en el botón Create.
3. En la pestaña de información básica del servicio, da clic en Create new.
Y escribe el nombre SmartSearchRG, dando clic en OK para confirmar.
4. A continuación, ingresa la siguiente información:
• URL: smartsearchtunombre (por ejemplo smeartsearchluisbeltran)
• Location: Elige la región (South America) Brazil South
Y da clic en Change Pricing Tier
5. Selecciona el plan gratuito (Free), confirmando la opción dando clic en el botón Select.
Ahora sí da clic en Review + create:
6. Comenzará un proceso de validación de la información; en caso de ser exitoso este proceso, se
habilitará el botón Create. Haz clic en él y espera a que el aprovisionamiento de recursos finalice.
Cuando la operación finalice, aparecerá la siguiente información, confirmando el resultado. Da
clic en Go to resource en caso de que se haya completado el proceso con éxito.
7. Aparecerá la información del recurso Search que acabas de crear. Copia la URL de tu servicio en
la sección Overview y pégala en un bloc de notas, la utilizaremos más adelante.
Da clic en la sección Keys y copia la llave principal del servicio. También pégala en el bloc de notas
para utilizarla más adelante:
8. Paso 2. Accede a este enlace y descarga los archivos incluidos en dicha carpeta compartida. Como
puedes ver en la siguiente imagen, es una colección de distintos formatos: imágenes, archivos
pdf, documentos de texto, etc.
Regresa al portal de Azure y en esta ocasión vamos a crear un recurso Storage account – blob,
file, table, queue. Primero, lo buscamos de la lista:
9. Una vez localizado, da clic en él y en la pantalla de descripción simplemente da clic en Create:
10. En la sección de datos básicos, comienza ingresando la siguiente información:
• Resource group: SmartSearchRG (selecciónalo de la lista)
• Storage account name: storagetunombre (por ejemplo, storageluisbeltran)
• Location: (South America) Brazil South
• El resto de las propiedades se quedan igual
• Da clic en Review + créate.
11. Haz clic en Create en caso de que la validación de información sea exitosa.
12. El recurso comenzará a provisionarse en Azure. Da clic en Go to resource si la operación también
fue finalizada sin errores:
13. Paso 3. Vamos a subir los archivos descargados en el paso anterior. Para ello, en la vista de tu
cuenta de almacenamiento (storage), da clic en la sección Containers
En la siguiente pantalla, agrega un nuevo contenedor dando clic en el botón + Container, coloca
el nombre documents y da clic en Create.
14. Podrás ver que se agregó el contenedor con éxito. Da clic en él para acceder a su contenido.
El cual, por supuesto, está vacío. Da clic en el botón Upload.
En la siguiente pantalla, da clic en el ícono de la carpeta
15. Selecciona los 14 archivos descargados en el paso anterior y da clic en el botón Open/Add
Ahora haz clic en el botón Upload:
17. Cuando este proceso finalice, el contenedor documents tendrá la siguiente apariencia.
18. Paso 4. Es hora de generar nuestro proceso de búsqueda inteligente. Regresa al recurso
smartsearchtunombre creado en el paso 1 y da clic en Import data.
En la sección Connect to your data, ingresa la siguiente información:
• Data Source: selecciona Azure Blob Storage
• Data source name: Ingresa storagetunombre (lo definiste en el paso 2)
• Data to extract: Content and metadata
• Connection string: Da clic en el botón Choose an existing connection
19. Selecciona tu cuenta de almacenamiento creada en el paso 2 (la misma que acabas de escribir
en Data source name):
Se te solicitará seleccionar un contenedor donde están los archivos. Elige documents y confirma
haciendo clic en Select
20. Una vez obtenida la cadena de conexión a tu cuenta de almacenamiento y contenedor, da clic en
Next: Add cognitive skills (Optional).
21. En la sección Add cognitive skills (Optional), expande la pestaña Attach Cognitive Services y
asegúrate de que está seleccionada la opción Free
22. Ahora expande la pestaña Add enrichments, coloca el nombre azureblob-skillset al skillset y
selecciona las siguientes opciones:
• Enable OCR and merge all text into merged content field
• Pages (5000 characters chunks) en Enrichment granularity level
• Bajo Text Cognitive Skills, activa Extract people, organization y location names.
• Bajo Image Cognitive Skills, activa Generate tags y captions from images.
Y da clic en Next: Customize target index
23. En la siguiente pantalla, realiza los siguientes cambios:
• Desactiva el checkbox en la columna Retrievable del campo content.
• Activa el checkbox en la columna Retrievable del campo metadata_storage_name
• Activa (aunque ya deberían venir por defecto) los siguientes campos en la columna
Retrievable: people, organizations, locations, merged_content, text, layoutText,
imageTags e imageCaption.
Da clic en Next: Create an indexer una vez realizado lo anterior:
24. Ya para finalizar, coloca el nombre azureblob-indexer a tu indexador y en la calendarización
selecciona Once (solo se generará una vez el índice, justo ahora). Da clic en Submit.
Comenzará el proceso de generación del indexador. Si regresas a la sección Overview de tu
servicio Search y seleccionas Indexers, observarás que hay una tarea en proceso:
25. Después de unos segundos, actualiza la vista con el botón Refresh y observarás que los 14
documentos han sido procesados. Si el status aparece en Warning, no te preocupes, se ha
completado con éxito, aunque es importante revisarlo y entender las advertencias, a fin de
mejorar nuestro buscador.
26. Paso 5. Vamos a probar nuestro buscador. Para ello, da clic en el botón Search explorer:
27. En la sección Query string escribe la siguiente cadena de búsqueda:
$select=people,organizations,locations,imageTags,metadata_storage_name&search=satya
Da clic en el botón Search y observa que se devuelven dos resultados (documentos). Cada uno a
su vez contiene información extraída del documento original (cuyo nombre también se incluye
en los resultados), tal como los nombres de las personas identificadas, los nombres de empresas
u organizaciones, ciudades e información descriptiva de la imagen, etc.
El primer documento es un archivo de texto:
28. Mientras que el segundo documento que incluye el término de búsqueda es una imagen:
29. Paso 6. A fin de integrar este servicio de búsqueda en tus proyectos, necesitas incluir lo siguiente
en tu petición HTTP:
• Agregar una cabecera llamada api-key, cuyo valor es la llave principal que obtuviste al
visitar la sección Keys de tu recurso Search.
• Realizar una petición de tipo GET a la Request URL que aparece el paso 5 después de dar
clic en Search al incluir la query string.
Observa que la URL incluye la query string, por lo que puedes reemplazar los campos del $select
(la información que quieres que el servicio devuelva en los resultados) y el valor del parámetro
search (el término de búsqueda).