Compartir a través de


DocumentAnalysisClient class

Un cliente para interactuar con las características de análisis del servicio Form Recognizer.

Ejemplos:

El servicio Form Recognizer y los clientes admiten dos medios de autenticación:

Azure Active Directory

import { DefaultAzureCredential } from "@azure/identity";
import { DocumentAnalysisClient } from "@azure/ai-form-recognizer";

const credential = new DefaultAzureCredential();
const client = new DocumentAnalysisClient(
  "https://<resource name>.cognitiveservices.azure.com",
  credential,
);

Clave de API (clave de suscripción)

import { AzureKeyCredential, DocumentAnalysisClient } from "@azure/ai-form-recognizer";

const credential = new AzureKeyCredential("<API key>");
const client = new DocumentAnalysisClient(
  "https://<resource name>.cognitiveservices.azure.com",
  credential,
);

Constructores

DocumentAnalysisClient(string, KeyCredential, DocumentAnalysisClientOptions)

Creación de una instancia de DocumentAnalysisClient a partir de un punto de conexión de recurso y una clave de API estática (KeyCredential),

Ejemplo:

import { AzureKeyCredential, DocumentAnalysisClient } from "@azure/ai-form-recognizer";

const credential = new AzureKeyCredential("<API key>");
const client = new DocumentAnalysisClient(
  "https://<resource name>.cognitiveservices.azure.com",
  credential,
);
DocumentAnalysisClient(string, TokenCredential, DocumentAnalysisClientOptions)

Cree una instancia de DocumentAnalysisClient a partir de un punto de conexión de recursos y una instancia de Azure Identity TokenCredential.

Consulte el paquete de @azure/identity para obtener más información sobre la autenticación con Azure Active Directory.

Ejemplo:

import { DefaultAzureCredential } from "@azure/identity";
import { DocumentAnalysisClient } from "@azure/ai-form-recognizer";

const credential = new DefaultAzureCredential();
const client = new DocumentAnalysisClient(
  "https://<resource name>.cognitiveservices.azure.com",
  credential,
);

Métodos

beginAnalyzeDocument(string, FormRecognizerRequestBody, AnalyzeDocumentOptions<AnalyzeResult<AnalyzedDocument>>)

Extraiga datos de una entrada mediante un modelo proporcionado por su identificador único.

Esta operación admite modelos personalizados y precompilados. Por ejemplo, para usar el modelo de factura precompilado, proporcione el identificador de modelo "factura precompilada" o para usar el modelo de diseño precompilado más sencillo, proporcione el identificador de modelo "diseño precompilado".

Los campos generados en el AnalyzeResult dependen del modelo que se usa para el análisis y los valores de los campos de los documentos extraídos dependen de los tipos de documento del modelo (si los hay) y sus esquemas de campo correspondientes.

Ejemplos

Este método admite cuerpos de solicitud que se pueden transmitir (FormRecognizerRequestBody), como objetos Node.JS ReadableStream, Blobs del explorador y ArrayBuffers. El contenido del cuerpo se cargará en el servicio para su análisis.

import { DefaultAzureCredential } from "@azure/identity";
import { DocumentAnalysisClient } from "@azure/ai-form-recognizer";
import { createReadStream } from "node:fs";
import { PrebuiltReceiptModel } from "../samples-dev/prebuilt/prebuilt-receipt.js";

const credential = new DefaultAzureCredential();
const client = new DocumentAnalysisClient(
  "https://<resource name>.cognitiveservices.azure.com",
  credential,
);

const path = "<path to a document>";
const readStream = createReadStream(path);

// The PrebuiltReceiptModel `DocumentModel` instance encodes both the model ID and a stronger return type for the operation
const poller = await client.beginAnalyzeDocument(PrebuiltReceiptModel, readStream, {
  onProgress: ({ status }) => {
    console.log(`status: ${status}`);
  },
});

const {
  documents: [receiptDocument],
} = await poller.pollUntilDone();

// The fields of the document constitute the extracted receipt data.
const receipt = receiptDocument.fields;

if (receipt === undefined) {
  throw new Error("Expected at least one receipt in analysis result.");
}

console.log(`Receipt data (${receiptDocument.docType})`);
console.log("  Merchant Name:", receipt.merchantName?.value);

// The items of the receipt are an example of a `DocumentArrayValue`
if (receipt.items !== undefined) {
  console.log("Items:");
  for (const { properties: item } of receipt.items.values) {
    console.log("- Description:", item.description?.value);
    console.log("  Total Price:", item.totalPrice?.value);
  }
}

console.log("  Total:", receipt.total?.value);
beginAnalyzeDocument<Result>(DocumentModel<Result>, FormRecognizerRequestBody, AnalyzeDocumentOptions<Result>)

Extraiga datos de una entrada mediante un modelo que tenga un esquema de documento conocido y fuertemente tipado (un DocumentModel).

Los campos generados en el AnalyzeResult dependen del modelo que se usa para el análisis. En TypeScript, el tipo del resultado de esta sobrecarga de método se deduce del tipo de la entrada DocumentModel.

Ejemplos

Este método admite cuerpos de solicitud que se pueden transmitir (FormRecognizerRequestBody), como objetos Node.JS ReadableStream, Blobs del explorador y ArrayBuffers. El contenido del cuerpo se cargará en el servicio para su análisis.

Si la entrada proporcionada es una cadena, se tratará como una dirección URL a la ubicación de un documento que se va a analizar. Consulte el método beginAnalyzeDocumentFromUrl para obtener más información. El uso de ese método es preferible cuando se usan direcciones URL y la compatibilidad con direcciones URL solo se proporciona en este método para la compatibilidad con versiones anteriores.

import { DefaultAzureCredential } from "@azure/identity";
import { DocumentAnalysisClient } from "@azure/ai-form-recognizer";
import { createReadStream } from "node:fs";
import { PrebuiltReceiptModel } from "../samples-dev/prebuilt/prebuilt-receipt.js";

const credential = new DefaultAzureCredential();
const client = new DocumentAnalysisClient(
  "https://<resource name>.cognitiveservices.azure.com",
  credential,
);

const path = "<path to a document>";
const readStream = createReadStream(path);

// The PrebuiltReceiptModel `DocumentModel` instance encodes both the model ID and a stronger return type for the operation
const poller = await client.beginAnalyzeDocument(PrebuiltReceiptModel, readStream, {
  onProgress: ({ status }) => {
    console.log(`status: ${status}`);
  },
});

const {
  documents: [receiptDocument],
} = await poller.pollUntilDone();

// The fields of the document constitute the extracted receipt data.
const receipt = receiptDocument.fields;

if (receipt === undefined) {
  throw new Error("Expected at least one receipt in analysis result.");
}

console.log(`Receipt data (${receiptDocument.docType})`);
console.log("  Merchant Name:", receipt.merchantName?.value);

// The items of the receipt are an example of a `DocumentArrayValue`
if (receipt.items !== undefined) {
  console.log("Items:");
  for (const { properties: item } of receipt.items.values) {
    console.log("- Description:", item.description?.value);
    console.log("  Total Price:", item.totalPrice?.value);
  }
}

console.log("  Total:", receipt.total?.value);
beginAnalyzeDocumentFromUrl(string, string, AnalyzeDocumentOptions<AnalyzeResult<AnalyzedDocument>>)

Extraiga datos de una entrada mediante un modelo proporcionado por su identificador único.

Esta operación admite modelos personalizados y precompilados. Por ejemplo, para usar el modelo de factura precompilado, proporcione el identificador de modelo "factura precompilada" o para usar el modelo de diseño precompilado más sencillo, proporcione el identificador de modelo "diseño precompilado".

Los campos generados en el AnalyzeResult dependen del modelo que se usa para el análisis y los valores de los campos de los documentos extraídos dependen de los tipos de documento del modelo (si los hay) y sus esquemas de campo correspondientes.

Ejemplos

Este método admite la extracción de datos de un archivo en una dirección URL determinada. El servicio Form Recognizer intentará descargar un archivo mediante la dirección URL enviada, por lo que la dirección URL debe ser accesible desde la red pública de Internet. Por ejemplo, se puede usar un token de SAS para conceder acceso de lectura a un blob en Azure Storage y el servicio usará la dirección URL codificada por SAS para solicitar el archivo.

import { DefaultAzureCredential } from "@azure/identity";
import {
  DocumentAnalysisClient,
  DocumentStringField,
  DocumentArrayField,
  DocumentObjectField,
} from "@azure/ai-form-recognizer";

const credential = new DefaultAzureCredential();
const client = new DocumentAnalysisClient(
  "https://<resource name>.cognitiveservices.azure.com",
  credential,
);

const poller = await client.beginAnalyzeDocumentFromUrl(
  "prebuilt-receipt",
  // The Document Intelligence service will access the following URL to a receipt image and extract data from it
  "https://raw.githubusercontent.com/Azure/azure-sdk-for-js/main/sdk/formrecognizer/ai-form-recognizer/assets/receipt/contoso-receipt.png",
);
poller.onProgress((state) => console.log("Operation:", state.modelId, state.status));

const { documents } = await poller.pollUntilDone();

const result = documents && documents[0];
if (result) {
  const receipt = result.fields;
  console.log("=== Receipt Information ===");
  console.log("Type:", result.docType);
  console.log("Merchant:", (receipt["MerchantName"] as DocumentStringField).value);

  console.log("Items:");
  for (const { properties: item } of ((receipt["Items"] as DocumentArrayField).values ||
    []) as DocumentObjectField[]) {
    console.log("- Description:", (item["Description"] as DocumentStringField).value);
    console.log("  Total Price:", (item["TotalPrice"] as DocumentStringField).value);
  }
} else {
  throw new Error("Expected at least one receipt in the result.");
}
beginAnalyzeDocumentFromUrl<Result>(DocumentModel<Result>, string, AnalyzeDocumentOptions<Result>)

Extraiga datos de una entrada mediante un modelo que tenga un esquema de documento conocido y fuertemente tipado (un DocumentModel).

Los campos generados en el AnalyzeResult dependen del modelo que se usa para el análisis. En TypeScript, el tipo del resultado de esta sobrecarga de método se deduce del tipo de la entrada DocumentModel.

Ejemplos

Este método admite la extracción de datos de un archivo en una dirección URL determinada. El servicio Form Recognizer intentará descargar un archivo mediante la dirección URL enviada, por lo que la dirección URL debe ser accesible desde la red pública de Internet. Por ejemplo, se puede usar un token de SAS para conceder acceso de lectura a un blob en Azure Storage y el servicio usará la dirección URL codificada por SAS para solicitar el archivo.

import { DefaultAzureCredential } from "@azure/identity";
import { DocumentAnalysisClient } from "@azure/ai-form-recognizer";
import { PrebuiltReceiptModel } from "../samples-dev/prebuilt/prebuilt-receipt.js";

const credential = new DefaultAzureCredential();
const client = new DocumentAnalysisClient(
  "https://<resource name>.cognitiveservices.azure.com",
  credential,
);

const poller = await client.beginAnalyzeDocumentFromUrl(
  PrebuiltReceiptModel,
  // The Document Intelligence service will access the following URL to a receipt image and extract data from it
  "https://raw.githubusercontent.com/Azure/azure-sdk-for-js/main/sdk/formrecognizer/ai-form-recognizer/assets/receipt/contoso-receipt.png",
);

const {
  documents: [document],
} = await poller.pollUntilDone();

// Use of PrebuiltModels.Receipt above (rather than the raw model ID), as it adds strong typing of the model's output
if (document) {
  const { merchantName, items, total } = document.fields;

  console.log("=== Receipt Information ===");
  console.log("Type:", document.docType);
  console.log("Merchant:", merchantName && merchantName.value);

  console.log("Items:");
  for (const item of (items && items.values) || []) {
    const { description, totalPrice } = item.properties;

    console.log("- Description:", description && description.value);
    console.log("  Total Price:", totalPrice && totalPrice.value);
  }

  console.log("Total:", total && total.value);
} else {
  throw new Error("Expected at least one receipt in the result.");
}
beginClassifyDocument(string, FormRecognizerRequestBody, ClassifyDocumentOptions)

Clasifique un documento mediante un clasificador personalizado proporcionado por su identificador.

Este método genera una operación de larga duración (sondeo) que finalmente generará un AnalyzeResult. Este es el mismo tipo que beginAnalyzeDocument y beginAnalyzeDocumentFromUrl, pero el resultado solo contendrá un pequeño subconjunto de sus campos. Solo se rellenará el campo documents y pages, y solo se devolverá información mínima de página. El campo documents contendrá información sobre todos los documentos identificados y el docType que se clasificaron como.

Ejemplo

Este método admite cuerpos de solicitud que se pueden transmitir (FormRecognizerRequestBody), como objetos Node.JS ReadableStream, Blobs del explorador y ArrayBuffers. El contenido del cuerpo se cargará en el servicio para su análisis.

import { DefaultAzureCredential } from "@azure/identity";
import { DocumentAnalysisClient } from "@azure/ai-form-recognizer";
import { createReadStream } from "node:fs";

const credential = new DefaultAzureCredential();
const client = new DocumentAnalysisClient(
  "https://<resource name>.cognitiveservices.azure.com",
  credential,
);

const path = "<path to a document>";
const readStream = createReadStream(path);

const poller = await client.beginClassifyDocument("<classifier id>", readStream);

const result = await poller.pollUntilDone();

if (result?.documents?.length === 0) {
  throw new Error("Failed to extract any documents.");
}

for (const document of result.documents) {
  console.log(
    `Extracted a document with type '${document.docType}' on page ${document.boundingRegions?.[0].pageNumber} (confidence: ${document.confidence})`,
  );
}
beginClassifyDocumentFromUrl(string, string, ClassifyDocumentOptions)

Clasifique un documento de una dirección URL mediante un clasificador personalizado proporcionado por su identificador.

Este método genera una operación de larga duración (sondeo) que finalmente generará un AnalyzeResult. Este es el mismo tipo que beginAnalyzeDocument y beginAnalyzeDocumentFromUrl, pero el resultado solo contendrá un pequeño subconjunto de sus campos. Solo se rellenará el campo documents y pages, y solo se devolverá información mínima de página. El campo documents contendrá información sobre todos los documentos identificados y el docType que se clasificaron como.

Ejemplo

Este método admite la extracción de datos de un archivo en una dirección URL determinada. El servicio Form Recognizer intentará descargar un archivo mediante la dirección URL enviada, por lo que la dirección URL debe ser accesible desde la red pública de Internet. Por ejemplo, se puede usar un token de SAS para conceder acceso de lectura a un blob en Azure Storage y el servicio usará la dirección URL codificada por SAS para solicitar el archivo.

import { DefaultAzureCredential } from "@azure/identity";
import { DocumentAnalysisClient } from "@azure/ai-form-recognizer";

const credential = new DefaultAzureCredential();
const client = new DocumentAnalysisClient(
  "https://<resource name>.cognitiveservices.azure.com",
  credential,
);

const documentUrl =
  "https://raw.githubusercontent.com/Azure/azure-sdk-for-js/main/sdk/formrecognizer/ai-form-recognizer/assets/invoice/Invoice_1.pdf";

const poller = await client.beginClassifyDocumentFromUrl("<classifier id>", documentUrl);

const result = await poller.pollUntilDone();

if (result?.documents?.length === 0) {
  throw new Error("Failed to extract any documents.");
}

for (const document of result.documents) {
  console.log(
    `Extracted a document with type '${document.docType}' on page ${document.boundingRegions?.[0].pageNumber} (confidence: ${document.confidence})`,
  );
}

Detalles del constructor

DocumentAnalysisClient(string, KeyCredential, DocumentAnalysisClientOptions)

Creación de una instancia de DocumentAnalysisClient a partir de un punto de conexión de recurso y una clave de API estática (KeyCredential),

Ejemplo:

import { AzureKeyCredential, DocumentAnalysisClient } from "@azure/ai-form-recognizer";

const credential = new AzureKeyCredential("<API key>");
const client = new DocumentAnalysisClient(
  "https://<resource name>.cognitiveservices.azure.com",
  credential,
);
new DocumentAnalysisClient(endpoint: string, credential: KeyCredential, options?: DocumentAnalysisClientOptions)

Parámetros

endpoint

string

la dirección URL del punto de conexión de una instancia de Azure Cognitive Services

credential
KeyCredential

KeyCredential que contiene la clave de suscripción de la instancia de Cognitive Services

options
DocumentAnalysisClientOptions

opciones opcionales para configurar todos los métodos en el cliente

DocumentAnalysisClient(string, TokenCredential, DocumentAnalysisClientOptions)

Cree una instancia de DocumentAnalysisClient a partir de un punto de conexión de recursos y una instancia de Azure Identity TokenCredential.

Consulte el paquete de @azure/identity para obtener más información sobre la autenticación con Azure Active Directory.

Ejemplo:

import { DefaultAzureCredential } from "@azure/identity";
import { DocumentAnalysisClient } from "@azure/ai-form-recognizer";

const credential = new DefaultAzureCredential();
const client = new DocumentAnalysisClient(
  "https://<resource name>.cognitiveservices.azure.com",
  credential,
);
new DocumentAnalysisClient(endpoint: string, credential: TokenCredential, options?: DocumentAnalysisClientOptions)

Parámetros

endpoint

string

la dirección URL del punto de conexión de una instancia de Azure Cognitive Services

credential
TokenCredential

una instancia de TokenCredential del paquete de @azure/identity

options
DocumentAnalysisClientOptions

opciones opcionales para configurar todos los métodos en el cliente

Detalles del método

beginAnalyzeDocument(string, FormRecognizerRequestBody, AnalyzeDocumentOptions<AnalyzeResult<AnalyzedDocument>>)

Extraiga datos de una entrada mediante un modelo proporcionado por su identificador único.

Esta operación admite modelos personalizados y precompilados. Por ejemplo, para usar el modelo de factura precompilado, proporcione el identificador de modelo "factura precompilada" o para usar el modelo de diseño precompilado más sencillo, proporcione el identificador de modelo "diseño precompilado".

Los campos generados en el AnalyzeResult dependen del modelo que se usa para el análisis y los valores de los campos de los documentos extraídos dependen de los tipos de documento del modelo (si los hay) y sus esquemas de campo correspondientes.

Ejemplos

Este método admite cuerpos de solicitud que se pueden transmitir (FormRecognizerRequestBody), como objetos Node.JS ReadableStream, Blobs del explorador y ArrayBuffers. El contenido del cuerpo se cargará en el servicio para su análisis.

import { DefaultAzureCredential } from "@azure/identity";
import { DocumentAnalysisClient } from "@azure/ai-form-recognizer";
import { createReadStream } from "node:fs";
import { PrebuiltReceiptModel } from "../samples-dev/prebuilt/prebuilt-receipt.js";

const credential = new DefaultAzureCredential();
const client = new DocumentAnalysisClient(
  "https://<resource name>.cognitiveservices.azure.com",
  credential,
);

const path = "<path to a document>";
const readStream = createReadStream(path);

// The PrebuiltReceiptModel `DocumentModel` instance encodes both the model ID and a stronger return type for the operation
const poller = await client.beginAnalyzeDocument(PrebuiltReceiptModel, readStream, {
  onProgress: ({ status }) => {
    console.log(`status: ${status}`);
  },
});

const {
  documents: [receiptDocument],
} = await poller.pollUntilDone();

// The fields of the document constitute the extracted receipt data.
const receipt = receiptDocument.fields;

if (receipt === undefined) {
  throw new Error("Expected at least one receipt in analysis result.");
}

console.log(`Receipt data (${receiptDocument.docType})`);
console.log("  Merchant Name:", receipt.merchantName?.value);

// The items of the receipt are an example of a `DocumentArrayValue`
if (receipt.items !== undefined) {
  console.log("Items:");
  for (const { properties: item } of receipt.items.values) {
    console.log("- Description:", item.description?.value);
    console.log("  Total Price:", item.totalPrice?.value);
  }
}

console.log("  Total:", receipt.total?.value);
function beginAnalyzeDocument(modelId: string, document: FormRecognizerRequestBody, options?: AnalyzeDocumentOptions<AnalyzeResult<AnalyzedDocument>>): Promise<AnalysisPoller<AnalyzeResult<AnalyzedDocument>>>

Parámetros

modelId

string

el identificador único (nombre) del modelo dentro del recurso de este cliente

document
FormRecognizerRequestBody

un FormRecognizerRequestBody que se cargará con la solicitud

options

AnalyzeDocumentOptions<AnalyzeResult<AnalyzedDocument>>

configuración opcional para la operación de análisis y el sondeo

Devoluciones

una operación de larga duración (sondeo) que finalmente generará un AnalyzeResult

beginAnalyzeDocument<Result>(DocumentModel<Result>, FormRecognizerRequestBody, AnalyzeDocumentOptions<Result>)

Extraiga datos de una entrada mediante un modelo que tenga un esquema de documento conocido y fuertemente tipado (un DocumentModel).

Los campos generados en el AnalyzeResult dependen del modelo que se usa para el análisis. En TypeScript, el tipo del resultado de esta sobrecarga de método se deduce del tipo de la entrada DocumentModel.

Ejemplos

Este método admite cuerpos de solicitud que se pueden transmitir (FormRecognizerRequestBody), como objetos Node.JS ReadableStream, Blobs del explorador y ArrayBuffers. El contenido del cuerpo se cargará en el servicio para su análisis.

Si la entrada proporcionada es una cadena, se tratará como una dirección URL a la ubicación de un documento que se va a analizar. Consulte el método beginAnalyzeDocumentFromUrl para obtener más información. El uso de ese método es preferible cuando se usan direcciones URL y la compatibilidad con direcciones URL solo se proporciona en este método para la compatibilidad con versiones anteriores.

import { DefaultAzureCredential } from "@azure/identity";
import { DocumentAnalysisClient } from "@azure/ai-form-recognizer";
import { createReadStream } from "node:fs";
import { PrebuiltReceiptModel } from "../samples-dev/prebuilt/prebuilt-receipt.js";

const credential = new DefaultAzureCredential();
const client = new DocumentAnalysisClient(
  "https://<resource name>.cognitiveservices.azure.com",
  credential,
);

const path = "<path to a document>";
const readStream = createReadStream(path);

// The PrebuiltReceiptModel `DocumentModel` instance encodes both the model ID and a stronger return type for the operation
const poller = await client.beginAnalyzeDocument(PrebuiltReceiptModel, readStream, {
  onProgress: ({ status }) => {
    console.log(`status: ${status}`);
  },
});

const {
  documents: [receiptDocument],
} = await poller.pollUntilDone();

// The fields of the document constitute the extracted receipt data.
const receipt = receiptDocument.fields;

if (receipt === undefined) {
  throw new Error("Expected at least one receipt in analysis result.");
}

console.log(`Receipt data (${receiptDocument.docType})`);
console.log("  Merchant Name:", receipt.merchantName?.value);

// The items of the receipt are an example of a `DocumentArrayValue`
if (receipt.items !== undefined) {
  console.log("Items:");
  for (const { properties: item } of receipt.items.values) {
    console.log("- Description:", item.description?.value);
    console.log("  Total Price:", item.totalPrice?.value);
  }
}

console.log("  Total:", receipt.total?.value);
function beginAnalyzeDocument<Result>(model: DocumentModel<Result>, document: FormRecognizerRequestBody, options?: AnalyzeDocumentOptions<Result>): Promise<AnalysisPoller<Result>>

Parámetros

model

DocumentModel<Result>

un DocumentModel que representa el modelo que se va a usar para el análisis y el tipo de salida esperado

document
FormRecognizerRequestBody

un FormRecognizerRequestBody que se cargará con la solicitud

options

AnalyzeDocumentOptions<Result>

configuración opcional para la operación de análisis y el sondeo

Devoluciones

Promise<AnalysisPoller<Result>>

una operación de larga duración (sondeo) que finalmente generará un AnalyzeResult con documentos que tengan el tipo de resultado asociado al modelo de entrada.

beginAnalyzeDocumentFromUrl(string, string, AnalyzeDocumentOptions<AnalyzeResult<AnalyzedDocument>>)

Extraiga datos de una entrada mediante un modelo proporcionado por su identificador único.

Esta operación admite modelos personalizados y precompilados. Por ejemplo, para usar el modelo de factura precompilado, proporcione el identificador de modelo "factura precompilada" o para usar el modelo de diseño precompilado más sencillo, proporcione el identificador de modelo "diseño precompilado".

Los campos generados en el AnalyzeResult dependen del modelo que se usa para el análisis y los valores de los campos de los documentos extraídos dependen de los tipos de documento del modelo (si los hay) y sus esquemas de campo correspondientes.

Ejemplos

Este método admite la extracción de datos de un archivo en una dirección URL determinada. El servicio Form Recognizer intentará descargar un archivo mediante la dirección URL enviada, por lo que la dirección URL debe ser accesible desde la red pública de Internet. Por ejemplo, se puede usar un token de SAS para conceder acceso de lectura a un blob en Azure Storage y el servicio usará la dirección URL codificada por SAS para solicitar el archivo.

import { DefaultAzureCredential } from "@azure/identity";
import {
  DocumentAnalysisClient,
  DocumentStringField,
  DocumentArrayField,
  DocumentObjectField,
} from "@azure/ai-form-recognizer";

const credential = new DefaultAzureCredential();
const client = new DocumentAnalysisClient(
  "https://<resource name>.cognitiveservices.azure.com",
  credential,
);

const poller = await client.beginAnalyzeDocumentFromUrl(
  "prebuilt-receipt",
  // The Document Intelligence service will access the following URL to a receipt image and extract data from it
  "https://raw.githubusercontent.com/Azure/azure-sdk-for-js/main/sdk/formrecognizer/ai-form-recognizer/assets/receipt/contoso-receipt.png",
);
poller.onProgress((state) => console.log("Operation:", state.modelId, state.status));

const { documents } = await poller.pollUntilDone();

const result = documents && documents[0];
if (result) {
  const receipt = result.fields;
  console.log("=== Receipt Information ===");
  console.log("Type:", result.docType);
  console.log("Merchant:", (receipt["MerchantName"] as DocumentStringField).value);

  console.log("Items:");
  for (const { properties: item } of ((receipt["Items"] as DocumentArrayField).values ||
    []) as DocumentObjectField[]) {
    console.log("- Description:", (item["Description"] as DocumentStringField).value);
    console.log("  Total Price:", (item["TotalPrice"] as DocumentStringField).value);
  }
} else {
  throw new Error("Expected at least one receipt in the result.");
}
function beginAnalyzeDocumentFromUrl(modelId: string, documentUrl: string, options?: AnalyzeDocumentOptions<AnalyzeResult<AnalyzedDocument>>): Promise<AnalysisPoller<AnalyzeResult<AnalyzedDocument>>>

Parámetros

modelId

string

el identificador único (nombre) del modelo dentro del recurso de este cliente

documentUrl

string

una dirección URL (cadena) a un documento de entrada accesible desde la red pública de Internet

options

AnalyzeDocumentOptions<AnalyzeResult<AnalyzedDocument>>

configuración opcional para la operación de análisis y el sondeo

Devoluciones

una operación de larga duración (sondeo) que finalmente generará un AnalyzeResult

beginAnalyzeDocumentFromUrl<Result>(DocumentModel<Result>, string, AnalyzeDocumentOptions<Result>)

Extraiga datos de una entrada mediante un modelo que tenga un esquema de documento conocido y fuertemente tipado (un DocumentModel).

Los campos generados en el AnalyzeResult dependen del modelo que se usa para el análisis. En TypeScript, el tipo del resultado de esta sobrecarga de método se deduce del tipo de la entrada DocumentModel.

Ejemplos

Este método admite la extracción de datos de un archivo en una dirección URL determinada. El servicio Form Recognizer intentará descargar un archivo mediante la dirección URL enviada, por lo que la dirección URL debe ser accesible desde la red pública de Internet. Por ejemplo, se puede usar un token de SAS para conceder acceso de lectura a un blob en Azure Storage y el servicio usará la dirección URL codificada por SAS para solicitar el archivo.

import { DefaultAzureCredential } from "@azure/identity";
import { DocumentAnalysisClient } from "@azure/ai-form-recognizer";
import { PrebuiltReceiptModel } from "../samples-dev/prebuilt/prebuilt-receipt.js";

const credential = new DefaultAzureCredential();
const client = new DocumentAnalysisClient(
  "https://<resource name>.cognitiveservices.azure.com",
  credential,
);

const poller = await client.beginAnalyzeDocumentFromUrl(
  PrebuiltReceiptModel,
  // The Document Intelligence service will access the following URL to a receipt image and extract data from it
  "https://raw.githubusercontent.com/Azure/azure-sdk-for-js/main/sdk/formrecognizer/ai-form-recognizer/assets/receipt/contoso-receipt.png",
);

const {
  documents: [document],
} = await poller.pollUntilDone();

// Use of PrebuiltModels.Receipt above (rather than the raw model ID), as it adds strong typing of the model's output
if (document) {
  const { merchantName, items, total } = document.fields;

  console.log("=== Receipt Information ===");
  console.log("Type:", document.docType);
  console.log("Merchant:", merchantName && merchantName.value);

  console.log("Items:");
  for (const item of (items && items.values) || []) {
    const { description, totalPrice } = item.properties;

    console.log("- Description:", description && description.value);
    console.log("  Total Price:", totalPrice && totalPrice.value);
  }

  console.log("Total:", total && total.value);
} else {
  throw new Error("Expected at least one receipt in the result.");
}
function beginAnalyzeDocumentFromUrl<Result>(model: DocumentModel<Result>, documentUrl: string, options?: AnalyzeDocumentOptions<Result>): Promise<AnalysisPoller<Result>>

Parámetros

model

DocumentModel<Result>

un DocumentModel que representa el modelo que se va a usar para el análisis y el tipo de salida esperado

documentUrl

string

una dirección URL (cadena) a un documento de entrada accesible desde la red pública de Internet

options

AnalyzeDocumentOptions<Result>

configuración opcional para la operación de análisis y el sondeo

Devoluciones

Promise<AnalysisPoller<Result>>

una operación de larga duración (sondeo) que finalmente generará un AnalyzeResult

beginClassifyDocument(string, FormRecognizerRequestBody, ClassifyDocumentOptions)

Clasifique un documento mediante un clasificador personalizado proporcionado por su identificador.

Este método genera una operación de larga duración (sondeo) que finalmente generará un AnalyzeResult. Este es el mismo tipo que beginAnalyzeDocument y beginAnalyzeDocumentFromUrl, pero el resultado solo contendrá un pequeño subconjunto de sus campos. Solo se rellenará el campo documents y pages, y solo se devolverá información mínima de página. El campo documents contendrá información sobre todos los documentos identificados y el docType que se clasificaron como.

Ejemplo

Este método admite cuerpos de solicitud que se pueden transmitir (FormRecognizerRequestBody), como objetos Node.JS ReadableStream, Blobs del explorador y ArrayBuffers. El contenido del cuerpo se cargará en el servicio para su análisis.

import { DefaultAzureCredential } from "@azure/identity";
import { DocumentAnalysisClient } from "@azure/ai-form-recognizer";
import { createReadStream } from "node:fs";

const credential = new DefaultAzureCredential();
const client = new DocumentAnalysisClient(
  "https://<resource name>.cognitiveservices.azure.com",
  credential,
);

const path = "<path to a document>";
const readStream = createReadStream(path);

const poller = await client.beginClassifyDocument("<classifier id>", readStream);

const result = await poller.pollUntilDone();

if (result?.documents?.length === 0) {
  throw new Error("Failed to extract any documents.");
}

for (const document of result.documents) {
  console.log(
    `Extracted a document with type '${document.docType}' on page ${document.boundingRegions?.[0].pageNumber} (confidence: ${document.confidence})`,
  );
}
function beginClassifyDocument(classifierId: string, document: FormRecognizerRequestBody, options?: ClassifyDocumentOptions): Promise<AnalysisPoller<AnalyzeResult<AnalyzedDocument>>>

Parámetros

classifierId

string

el identificador del clasificador personalizado que se va a usar para el análisis.

document
FormRecognizerRequestBody

el documento que se va a clasificar

options
ClassifyDocumentOptions

opciones para la operación de clasificación

Devoluciones

una operación de larga duración (sondeo) que finalmente generará un AnalyzeResult

beginClassifyDocumentFromUrl(string, string, ClassifyDocumentOptions)

Clasifique un documento de una dirección URL mediante un clasificador personalizado proporcionado por su identificador.

Este método genera una operación de larga duración (sondeo) que finalmente generará un AnalyzeResult. Este es el mismo tipo que beginAnalyzeDocument y beginAnalyzeDocumentFromUrl, pero el resultado solo contendrá un pequeño subconjunto de sus campos. Solo se rellenará el campo documents y pages, y solo se devolverá información mínima de página. El campo documents contendrá información sobre todos los documentos identificados y el docType que se clasificaron como.

Ejemplo

Este método admite la extracción de datos de un archivo en una dirección URL determinada. El servicio Form Recognizer intentará descargar un archivo mediante la dirección URL enviada, por lo que la dirección URL debe ser accesible desde la red pública de Internet. Por ejemplo, se puede usar un token de SAS para conceder acceso de lectura a un blob en Azure Storage y el servicio usará la dirección URL codificada por SAS para solicitar el archivo.

import { DefaultAzureCredential } from "@azure/identity";
import { DocumentAnalysisClient } from "@azure/ai-form-recognizer";

const credential = new DefaultAzureCredential();
const client = new DocumentAnalysisClient(
  "https://<resource name>.cognitiveservices.azure.com",
  credential,
);

const documentUrl =
  "https://raw.githubusercontent.com/Azure/azure-sdk-for-js/main/sdk/formrecognizer/ai-form-recognizer/assets/invoice/Invoice_1.pdf";

const poller = await client.beginClassifyDocumentFromUrl("<classifier id>", documentUrl);

const result = await poller.pollUntilDone();

if (result?.documents?.length === 0) {
  throw new Error("Failed to extract any documents.");
}

for (const document of result.documents) {
  console.log(
    `Extracted a document with type '${document.docType}' on page ${document.boundingRegions?.[0].pageNumber} (confidence: ${document.confidence})`,
  );
}
function beginClassifyDocumentFromUrl(classifierId: string, documentUrl: string, options?: ClassifyDocumentOptions): Promise<AnalysisPoller<AnalyzeResult<AnalyzedDocument>>>

Parámetros

classifierId

string

el identificador del clasificador personalizado que se va a usar para el análisis.

documentUrl

string

la dirección URL del documento que se va a clasificar

Devoluciones