Biblioteca cliente REST de Azure DocumentIntelligence (anteriormente FormRecognizer) para JavaScript: versión 1.0.0-beta.2
Extrae contenido, diseño y datos estructurados de documentos.
Confíe en gran medida en nuestros documentos de cliente REST para usar esta biblioteca.
NOTA: Form Recognizer se ha cambiado el nombre a Document Intelligence. Consulte la Guía de migración de
@azure/ai-form-recognizer
a@azure-rest/ai-document-intelligence
.
Vínculos principales:
- Código fuente
- Paquete (NPM)
- Documentación de referencia de API
- Muestras
- Registro de cambios
- Guía de migración de Form Recognizer
Esta versión de la biblioteca cliente tiene como valor predeterminado la
"2024-02-29-preview"
versión del servicio.
En esta tabla se muestra la relación entre las versiones del SDK y las versiones de la API admitidas del servicio:
Versión del SDK | Versión de la API admitidas del servicio |
---|---|
1.0.0-beta.2 | 2024-02-29-preview |
1.0.0-beta.1 | 2023-10-31-preview |
Confíe en la biblioteca anterior
@azure/ai-form-recognizer
a través de las versiones anteriores de la API de servicio para los modelos retirados, como"prebuilt-businessCard"
y"prebuilt-document"
. Para obtener más información, consulte Registro de cambios.
En la tabla siguiente se describe la relación de cada cliente y sus versiones de API admitidas:
Versión de la API de servicio | Clientes compatibles | Paquete |
---|---|---|
2024-02-29-preview | DocumentIntelligenceClient | @azure-rest/ai-document-intelligence versión 1.0.0-beta.2 |
2023-10-31-preview | DocumentIntelligenceClient | @azure-rest/ai-document-intelligence versión 1.0.0-beta.1 |
2023-07-31 | DocumentAnalysisClient y DocumentModelAdministrationClient | @azure/ai-form-recognizer versión ^5.0.0 |
2022-08-01 | DocumentAnalysisClient y DocumentModelAdministrationClient | @azure/ai-form-recognizer versión ^4.0.0 |
Introducción
Entornos admitidos actualmente
- Versiones de LTS de Node.js
Requisitos previos
- Debe tener una suscripción de Azure para usar este paquete.
Instalar el paquete @azure-rest/ai-document-intelligence
Instale la biblioteca cliente REST rest DocumentIntelligence(formerlyFormRecognizer) de Azure DocumentIntelligence para JavaScript con npm
:
npm install @azure-rest/ai-document-intelligence
Crear y autenticar una DocumentIntelligenceClient
Para usar una credencial de token de Azure Active Directory (AAD), proporcione una instancia del tipo de credencial deseado obtenido de la biblioteca de @azure/identity .
Para autenticarse con AAD, primero npm
debe instalar @azure/identity
Después de la instalación, puede elegir el tipo de credencial de @azure/identity
que se va a usar.
Por ejemplo, Se puede usar DefaultAzureCredential para autenticar el cliente.
Establezca los valores del identificador de cliente, el identificador de inquilino y el secreto de cliente de la aplicación de AAD como variables de entorno: AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_CLIENT_SECRET
Uso de una credencial de token
import DocumentIntelligence from "@azure-rest/ai-document-intelligence";
const client = DocumentIntelligence(
process.env["DOCUMENT_INTELLIGENCE_ENDPOINT"],
new DefaultAzureCredential()
);
Uso de una CLAVE de API
import DocumentIntelligence from "@azure-rest/ai-document-intelligence";
const client = DocumentIntelligence(process.env["DOCUMENT_INTELLIGENCE_ENDPOINT"], {
key: process.env["DOCUMENT_INTELLIGENCE_API_KEY"],
});
Modelos de documentos
Análisis del diseño precompilado (urlSource)
const initialResponse = await client
.path("/documentModels/{modelId}:analyze", "prebuilt-layout")
.post({
contentType: "application/json",
body: {
urlSource:
"https://raw.githubusercontent.com/Azure/azure-sdk-for-js/6704eff082aaaf2d97c1371a28461f512f8d748a/sdk/formrecognizer/ai-form-recognizer/assets/forms/Invoice_1.pdf",
},
queryParameters: { locale: "en-IN" },
});
Análisis del diseño precompilado (base64Source)
import fs from "fs";
import path from "path";
const filePath = path.join(ASSET_PATH, "forms", "Invoice_1.pdf");
const base64Source = fs.readFileSync(filePath, { encoding: "base64" });
const initialResponse = await client
.path("/documentModels/{modelId}:analyze", "prebuilt-layout")
.post({
contentType: "application/json",
body: {
base64Source,
},
queryParameters: { locale: "en-IN" },
});
Continuar creando el sondeo a partir de la respuesta inicial
import {
getLongRunningPoller,
AnalyzeResultOperationOutput,
isUnexpected,
} from "@azure-rest/ai-document-intelligence";
if (isUnexpected(initialResponse)) {
throw initialResponse.body.error;
}
const poller = await getLongRunningPoller(client, initialResponse);
const result = (await poller.pollUntilDone()).body as AnalyzeResultOperationOutput;
console.log(result);
// {
// status: 'succeeded',
// createdDateTime: '2023-11-10T13:31:31Z',
// lastUpdatedDateTime: '2023-11-10T13:31:34Z',
// analyzeResult: {
// apiVersion: '2023-10-31-preview',
// .
// .
// .
// contentFormat: 'text'
// }
// }
Formato de contenido de Markdown
Admite la salida con formato de contenido de Markdown junto con el texto sin formato predeterminado. Por ahora, esto solo se admite para "diseño precompilado". El formato de contenido de Markdown se considera un formato más descriptivo para el consumo de LLM en un escenario de uso de chat o automatización.
El servicio sigue la especificación GFM (GitHub Flavored Markdown) para el formato Markdown. También presenta una nueva propiedad contentFormat con el valor "text" o "markdown" para indicar el formato de contenido del resultado.
import DocumentIntelligence from "@azure-rest/ai-document-intelligence";
const client = DocumentIntelligence(process.env["DOCUMENT_INTELLIGENCE_ENDPOINT"], {
key: process.env["DOCUMENT_INTELLIGENCE_API_KEY"],
});
const initialResponse = await client
.path("/documentModels/{modelId}:analyze", "prebuilt-layout")
.post({
contentType: "application/json",
body: {
urlSource:
"https://raw.githubusercontent.com/Azure/azure-sdk-for-js/6704eff082aaaf2d97c1371a28461f512f8d748a/sdk/formrecognizer/ai-form-recognizer/assets/forms/Invoice_1.pdf",
},
queryParameters: { outputContentFormat: "markdown" }, // <-- new query parameter
});
Campos de consulta
Cuando se especifica esta marca de característica, el servicio extraerá aún más los valores de los campos especificados a través del parámetro de consulta queryFields para complementar los campos existentes definidos por el modelo como reserva.
await client.path("/documentModels/{modelId}:analyze", "prebuilt-layout").post({
contentType: "application/json",
body: { urlSource: "..." },
queryParameters: {
features: ["queryFields"],
queryFields: ["NumberOfGuests", "StoreNumber"],
}, // <-- new query parameter
});
Opciones de división
En las versiones anteriores de la API compatibles con la biblioteca anterior @azure/ai-form-recognizer
, la operación de división y clasificación de documentos ("/documentClassifiers/{classifierId}:analyze"
) siempre intentó dividir el archivo de entrada en varios documentos.
Para habilitar un conjunto más amplio de escenarios, el servicio presenta un parámetro de consulta "dividido" con la nueva versión del servicio "2023-10-31-preview". Se admiten los valores siguientes:
split: "auto"
Deje que el servicio determine dónde dividir.
split: "none"
Todo el archivo se trata como un único documento. No se realiza ninguna división.
split: "perPage"
Cada página se trata como un documento independiente. Cada página vacía se mantiene como su propio documento.
Clasificadores de documentos #Build
import {
DocumentClassifierBuildOperationDetailsOutput,
getLongRunningPoller,
isUnexpected,
} from "@azure-rest/ai-document-intelligence";
const containerSasUrl = (): string =>
process.env["DOCUMENT_INTELLIGENCE_TRAINING_CONTAINER_SAS_URL"];
const initialResponse = await client.path("/documentClassifiers:build").post({
body: {
classifierId: `customClassifier${getRandomNumber()}`,
description: "Custom classifier description",
docTypes: {
foo: {
azureBlobSource: {
containerUrl: containerSasUrl(),
},
},
bar: {
azureBlobSource: {
containerUrl: containerSasUrl(),
},
},
},
},
});
if (isUnexpected(initialResponse)) {
throw initialResponse.body.error;
}
const poller = await getLongRunningPoller(client, initialResponse);
const response = (await poller.pollUntilDone())
.body as DocumentClassifierBuildOperationDetailsOutput;
console.log(response);
// {
// operationId: '31466834048_f3ee629e-73fb-48ab-993b-1d55d73ca460',
// kind: 'documentClassifierBuild',
// status: 'succeeded',
// .
// .
// result: {
// classifierId: 'customClassifier10978',
// createdDateTime: '2023-11-09T12:45:56Z',
// .
// .
// description: 'Custom classifier description'
// },
// apiVersion: '2023-10-31-preview'
// }
Obtener información
const response = await client.path("/info").get();
if (isUnexpected(response)) {
throw response.body.error;
}
console.log(response.body.customDocumentModels.limit);
// 20000
Enumerar modelos de documentos
import { paginate } from "@azure-rest/ai-document-intelligence";
const response = await client.path("/documentModels").get();
if (isUnexpected(response)) {
throw response.body.error;
}
const modelsInAccount: string[] = [];
for await (const model of paginate(client, response)) {
console.log(model.modelId);
}
Solución de problemas
Registro
La habilitación del registro puede ayudar a descubrir información útil sobre los errores. Para ver un registro de solicitudes y respuestas HTTP, establezca la variable de entorno AZURE_LOG_LEVEL
en info
. Como alternativa, el registro se puede habilitar en tiempo de ejecución llamando a setLogLevel
en @azure/logger
:
const { setLogLevel } = require("@azure/logger");
setLogLevel("info");
Para obtener instrucciones más detalladas sobre cómo habilitar los registros, consulte los documentos del paquete @azure/logger.
Azure SDK for JavaScript