Compatibilidad de documentos nativos con Lenguaje de Azure AI (versión preliminar)
Importante
La compatibilidad con documentos nativos es una versión preliminar validada. Para solicitar acceso a la característica de compatibilidad con documentos nativos, complete y envíe el formulario Solicitar acceso a las versiones preliminares del servicio de lenguaje.
Las versiones preliminares públicas de Lenguaje de Azure AI proporcionan acceso anticipado a las características que están en desarrollo activo.
Antes de la disponibilidad general (GA), las características, los enfoques y los procesos podrían cambiar en función de los comentarios de los usuarios.
Lenguaje de Azure AI es un servicio basado en la nube que aplica características de procesamiento del lenguaje natural (NLP) a datos basados en texto. La funcionalidad de compatibilidad con documentos nativos permite enviar solicitudes de API de forma asincrónica, empleando un cuerpo de solicitud HTTP POST para enviar los datos y una cadena de consulta de solicitud HTTP GET para recuperar los resultados del estado. Los documentos procesados se encuentran en el contenedor de destino de Azure Blob Storage.
Un documento nativo hace referencia al formato de archivo usado para crear el documento original, como Microsoft Word (docx) o un archivo de documento portátil (pdf). La compatibilidad con documentos nativos elimina la necesidad de preprocesamiento de texto antes de usar las funcionalidades de recursos de Lenguaje de Azure AI. Actualmente, la compatibilidad con documentos nativos está disponible para las siguientes funcionalidades:
Información de identificación personal (PII). La característica de detección de DCP puede identificar, clasificar y censurar información confidencial en texto no estructurado. La API
PiiEntityRecognition
admite el procesamiento nativo de documentos.Resumen de documentos. El resumen de documentos usa el procesamiento de lenguaje natural para generar resúmenes mediante extracción (extracción de frases destacadas) o abstracción (extracción de palabras contextuales) para documentos. Las API
AbstractiveSummarization
yExtractiveSummarization
admiten el procesamiento nativo de documentos.
Formatos de documento admitidos
Las aplicaciones usan formatos de archivo nativos para crear, guardar o abrir documentos nativos. Actualmente, las funcionalidades de PII y resumen de documentos admiten los siguientes formatos de documento nativos:
Tipo de archivo | Extensión de archivo | Descripción |
---|---|---|
Texto | .txt |
Documento de texto sin formato |
PDF de Adobe | .pdf |
Un documento portátil con formato de archivo de documento. |
Microsoft Word | .docx |
Un archivo de documento de Microsoft Word. |
Directrices de entrada
Formatos de archivos admitidos
Tipo | Compatibilidad y limitaciones |
---|---|
No se admiten archivos PDF totalmente digitalizados. | |
Texto dentro de imágenes | No se admiten imágenes digitales con texto incrustado. |
Tablas digitales | No se admiten tablas en documentos digitalizados. |
Tamaño del documento
Attribute | Límite de entrada |
---|---|
Número total de documentos por solicitud | ≤ 20 |
Tamaño total del contenido por solicitud | ≤ 1 MB |
Incluir documentos nativos con una solicitud HTTP
Comencemos:
Para este proyecto, usaremos la herramienta de línea de comandos cURL para realizar llamadas a la API REST.
Nota:
El paquete cURL está preinstalado en la mayoría de las distribuciones tanto de Windows 10 y Windows 11 como de macOS y Linux. Puede comprobar la versión del paquete con los siguientes comandos: Windows:
curl.exe -V
macOScurl -V
Linux:curl --version
Si cURL no está instalada, estos son los vínculos de instalación para su plataforma:
Una cuenta de Azure activa. En caso de no tener ninguna, puede crear una cuenta gratuita.
Una cuenta de Azure Blob Storage. También tendrá que crear contenedores en la cuenta de Azure Blob Storage para los archivos de origen y destino:
- Contenedor de origen. En este contenedor se cargan los archivos nativos para su análisis (obligatorio).
- Contenedor de destino. En este contenedor se almacenan los archivos traducidos (obligatorio).
Un recurso de Lenguaje de servicio único (no un recurso multiservicio de servicios de Azure AI):
Complete los campos de detalles de proyecto e instancia de Lenguaje de la siguiente manera:
Suscripción. Seleccione una de las suscripciones de Azure disponibles.
Grupo de recursos. Puede crear un nuevo grupo de recursos o agregar el recurso a un grupo ya existente que comparta el mismo ciclo de vida, permisos y directivas.
Región del recurso. Elija Global a menos que su empresa o aplicación requiera una región específica. Si planea usar una identidad administrada asignada por el sistema para la autenticación, elija una región geográfica como Oeste de EE. UU.
Nombre. Escriba el nombre que eligió para el recurso. El nombre que elija debe ser único en Azure.
Plan de tarifa. Puede usar el plan de tarifa gratis (
Free F0
) para probar el servicio y actualizarlo más adelante a un plan de pago para producción.Seleccione Revisar + crear.
Revise los términos de servicio y seleccione Crear para implementar el recurso.
Una vez que el recurso se implemente correctamente, seleccione Ir al recurso.
Recuperación de la clave y del punto de conexión de servicio de lenguaje
Las solicitudes al servicio de lenguaje requieren una clave de solo lectura y un punto de conexión personalizado para autenticar el acceso.
Si ha creado un nuevo recurso, después de implementarlo, seleccione Ir al recurso. Si ya tiene un recurso del servicio de lenguaje, vaya directamente a la página del recurso.
En el raíl izquierdo, en Administración de recursos, seleccione Claves y punto de conexión.
Puede copiar y pegar
key
ylanguage service instance endpoint
en los ejemplos de código para autenticar la solicitud en el servicio de lenguaje. Solo se necesita una clave para realizar una llamada API.
Creación de contenedores de Azure Blob Storage
Cree contenedores en la cuenta de Azure Blob Storage de los archivos de origen y destino.
- Contenedor de origen. En este contenedor se cargan los archivos nativos para su análisis (obligatorio).
- Contenedor de destino. En este contenedor se almacenan los archivos traducidos (obligatorio).
Autenticación
Debe conceder al recurso de lenguaje acceso a su cuenta de almacenamiento antes de que pueda crear, leer o eliminar blobs. Hay dos métodos principales que puede usar para conceder acceso a los datos de almacenamiento:
Tokens de firma de acceso compartido (SAS). Los tokens de SAS de delegación de usuarios se protegen con credenciales de Microsoft Entra. Un token de SAS proporciona acceso delegado y seguro a los recursos de la cuenta de almacenamiento de Azure.
Control de acceso basado en roles (RBAC) de identidad administrada. Las identidades administradas para los recursos de Azure son entidades de servicio que crean una identidad de Microsoft Entra y permisos específicos para los recursos administrados de Azure.
Para este proyecto, autenticamos el acceso a las direcciones URL de source location
y target location
con tokens de firma de acceso compartido (SAS) anexados como cadenas de consulta. Cada token se asigna a un blob (archivo) específico.
- El contenedor de origen o blob debe designar acceso de lectura y de lista.
- El destino contenedor o blob debe designar escritura y acceso.
Sugerencia
Dado que estamos procesando un solo archivo (blob), se recomienda el acceso SAS delegado en el nivel de blob.
Parámetros y encabezados de solicitud
parámetro | Descripción |
---|---|
-X POST <endpoint> |
Especifica el punto de conexión del recurso de lenguaje para acceder a la API. |
--header Content-Type: application/json |
Tipo de contenido para enviar datos JSON. |
--header "Ocp-Apim-Subscription-Key:<key> |
Especifica la clave del recurso de lenguaje para acceder a la API. |
-data |
Archivo JSON que contiene los datos que desea pasar con la solicitud. |
Los siguientes comandos de cURL se ejecutan desde un shell de BASH. Edite estos comandos con sus propios valores de nombre de recurso, clave de recurso y JSON. Pruebe a analizar documentos nativos seleccionando el proyecto de ejemplo de código Personally Identifiable Information (PII)
o Document Summarization
:
Documento de ejemplo de PII
Para este inicio rápido, necesita un documento de origen cargado en el contenedor de origen. Puede descargar nuestro documento de ejemplo de Microsoft Word o Adobe PDF para este proyecto. El idioma de origen es inglés.
Creación de la solicitud POST
Utilice el editor o IDE que prefiera para crear un directorio para la aplicación denominado
native-document
.Cree un nuevo archivo JSON denominado pii-detection.json en el directorio de documentos nativos.
Copie y pegue la siguiente solicitud de ejemplo de información de identificación personal (PII) en el archivo
pii-detection.json
. Sustituya{your-source-container-SAS-URL}
y{your-target-container-SAS-URL}
por los valores de la instancia de contenedores de la cuenta de almacenamiento de Azure Portal:
Solicitud de ejemplo
{
"displayName": "Extracting Location & US Region",
"analysisInput": {
"documents": [
{
"language": "en-US",
"id": "Output-excel-file",
"source": {
"location": "{your-source-blob-with-SAS-URL}"
},
"target": {
"location": "{your-target-container-with-SAS-URL}"
}
}
]
},
"tasks": [
{
"kind": "PiiEntityRecognition",
"parameters":{
"excludePiiCategories" : ["PersonType", "Category2", "Category3"],
"redactionPolicy": "UseRedactionCharacterWithRefId"
}
}
]
}
El valor del
location
de origen es la dirección URL de SAS del documento de origen (blob), no la dirección URL de SAS del contenedor de origen.Los posibles valores de
redactionPolicy
sonUseRedactionCharacterWithRefId
(valor predeterminado) oUseEntityTypeName
. Para obtener más información, vea parámetros PiiTask.
Ejecución de la solicitud POST
Esta es la estructura preliminar de la solicitud POST:
POST {your-language-endpoint}/language/analyze-documents/jobs?api-version=2023-11-15-preview
Antes de ejecutar la solicitud POST, reemplace
{your-language-resource-endpoint}
y{your-key}
por los valores de la instancia del servicio de lenguaje de Azure Portal.Importante
Recuerde quitar la clave del código cuando haya terminado y no hacerla nunca pública. En el caso de producción, use una forma segura de almacenar sus credenciales y acceder a ellas, como Azure Key Vault. Para más información, consulteSeguridad de servicios de Azure AI.
PowerShell
cmd /c curl "{your-language-resource-endpoint}/language/analyze-documents/jobs?api-version=2023-11-15-preview" -i -X POST --header "Content-Type: application/json" --header "Ocp-Apim-Subscription-Key: {your-key}" --data "@pii-detection.json"
command prompt/terminal
curl -v -X POST "{your-language-resource-endpoint}/language/analyze-documents/jobs?api-version=2023-11-15-preview" --header "Content-Type: application/json" --header "Ocp-Apim-Subscription-Key: {your-key}" --data "@pii-detection.json"
Esta es una respuesta de ejemplo:
HTTP/1.1 202 Accepted Content-Length: 0 operation-location: https://{your-language-resource-endpoint}/language/analyze-documents/jobs/f1cc29ff-9738-42ea-afa5-98d2d3cabf94?api-version=2023-11-15-preview apim-request-id: e7d6fa0c-0efd-416a-8b1e-1cd9287f5f81 x-ms-region: West US 2 Date: Thu, 25 Jan 2024 15:12:32 GMT
Respuesta (POST) (jobId)
Recibe una respuesta 202 (Success) que incluye un encabezado Operation-Location de solo lectura. El valor de este encabezado contiene un valor jobId que se puede consultar para obtener el estado de la operación asincrónica y recuperar los resultados mediante una solicitud GET:
Obtención de los resultados del análisis (solicitud GET)
Después de que la solicitud POST se haya ejecutado correctamente, sondee el encabezado operation-location devuelto en la solicitud POST para ver los datos procesados.
Esta es la estructura preliminar de la solicitud GET:
GET {your-language-endpoint}/language/analyze-documents/jobs/{jobId}?api-version=2023-11-15-preview
Antes de ejecutar el comando, realice estos cambios:
Reemplace {jobId} por el encabezado Operation-Location de la respuesta POST.
Reemplace {your-language-resource-endpoint} y {your-key} por los valores de la instancia de servicio de lenguaje en Azure Portal.
Solicitud GET
cmd /c curl "{your-language-resource-endpoint}/language/analyze-documents/jobs/{jobId}?api-version=2023-11-15-preview" -i -X GET --header "Content-Type: application/json" --header "Ocp-Apim-Subscription-Key: {your-key}"
curl -v -X GET "{your-language-resource-endpoint}/language/analyze-documents/jobs/{jobId}?api-version=2023-11-15-preview" --header "Content-Type: application/json" --header "Ocp-Apim-Subscription-Key: {your-key}"
Examen de la respuesta
Recibe una respuesta 200 (Success) con la salida JSON. El campo estado indica el resultado de la operación. Si la operación no está completa, el valor de estado es "running" o "notStarted", y debe volver a llamar a la API, ya sea manualmente o mediante un script. Se recomienda un intervalo de uno o varios segundos entre llamadas.
Respuesta de muestra
{
"jobId": "f1cc29ff-9738-42ea-afa5-98d2d3cabf94",
"lastUpdatedDateTime": "2024-01-24T13:17:58Z",
"createdDateTime": "2024-01-24T13:17:47Z",
"expirationDateTime": "2024-01-25T13:17:47Z",
"status": "succeeded",
"errors": [],
"tasks": {
"completed": 1,
"failed": 0,
"inProgress": 0,
"total": 1,
"items": [
{
"kind": "PiiEntityRecognitionLROResults",
"lastUpdateDateTime": "2024-01-24T13:17:58.33934Z",
"status": "succeeded",
"results": {
"documents": [
{
"id": "doc_0",
"source": {
"kind": "AzureBlob",
"location": "https://myaccount.blob.core.windows.net/sample-input/input.pdf"
},
"targets": [
{
"kind": "AzureBlob",
"location": "https://myaccount.blob.core.windows.net/sample-output/df6611a3-fe74-44f8-b8d4-58ac7491cb13/PiiEntityRecognition-0001/input.result.json"
},
{
"kind": "AzureBlob",
"location": "https://myaccount.blob.core.windows.net/sample-output/df6611a3-fe74-44f8-b8d4-58ac7491cb13/PiiEntityRecognition-0001/input.docx"
}
],
"warnings": []
}
],
"errors": [],
"modelVersion": "2023-09-01"
}
}
]
}
}
Tras completarse correctamente:
- Los documentos analizados se pueden encontrar en el contenedor de destino.
- El método POST correcto devuelve un código de respuesta
202 Accepted
que indica que el servicio ha creado la solicitud por lotes. - La solicitud POST también ha devuelto encabezados de respuesta, entre los que se incluye
Operation-Location
, que proporciona un valor utilizado en las solicitudes GET posteriores.
Limpieza de recursos
Si quiere limpiar y eliminar una suscripción de servicios de Azure AI, puede eliminar el recurso o el grupo de recursos. Al eliminar el grupo de recursos, también se elimina cualquier otro recurso que esté asociado a él.