Compartilhar via


DocumentAnalysisClient class

Um cliente para interagir com os recursos de análise do serviço Reconhecimento de Formulários.

Exemplos:

O serviço reconhecimento de formulários e clientes dão suporte a dois meios de autenticação:

Active Directory do Azure

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,
);

Chave de API (Chave de Assinatura)

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,
);

Construtores

DocumentAnalysisClient(string, KeyCredential, DocumentAnalysisClientOptions)

Criar uma instância DocumentAnalysisClient de um ponto de extremidade de recurso e uma chave de API estática (KeyCredential),

Exemplo:

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)

Crie uma instância de DocumentAnalysisClient de um ponto de extremidade de recurso e um TokenCredentialde Identidade do Azure.

Consulte o pacote @azure/identity para obter mais informações sobre como autenticar com o Azure Active Directory.

Exemplo:

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>>)

Extraia dados de uma entrada usando um modelo dado por sua ID exclusiva.

Essa operação dá suporte a modelos personalizados e predefinidos. Por exemplo, para usar o modelo de fatura predefinido, fornecer a ID do modelo "fatura predefinida" ou usar o modelo de layout predefinido mais simples, forneça a ID do modelo "predefinido-layout".

Os campos produzidos no AnalyzeResult dependem do modelo usado para análise e os valores nos campos de documentos extraídos dependem dos tipos de documento no modelo (se houver) e de seus esquemas de campo correspondentes.

Exemplos

Esse método dá suporte a corpos de solicitação que podem ser transmitidos (FormRecognizerRequestBody), como objetos Node.JS ReadableStream, Blobdo navegador e ArrayBuffers. O conteúdo do corpo será carregado no serviço para análise.

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>)

Extraia dados de uma entrada usando um modelo que tem um esquema de documento conhecido e fortemente tipado (um DocumentModel).

Os campos produzidos no AnalyzeResult dependem do modelo usado para análise. No TypeScript, o tipo do resultado para essa sobrecarga de método é inferido do tipo do DocumentModelde entrada.

Exemplos

Esse método dá suporte a corpos de solicitação que podem ser transmitidos (FormRecognizerRequestBody), como objetos Node.JS ReadableStream, Blobdo navegador e ArrayBuffers. O conteúdo do corpo será carregado no serviço para análise.

Se a entrada fornecida for uma cadeia de caracteres, ela será tratada como uma URL para o local de um documento a ser analisado. Consulte o método beginAnalyzeDocumentFromUrl para obter mais informações. O uso desse método é preferencial ao usar URLs e o suporte à URL só é fornecido neste método para compatibilidade com versões 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>>)

Extraia dados de uma entrada usando um modelo dado por sua ID exclusiva.

Essa operação dá suporte a modelos personalizados e predefinidos. Por exemplo, para usar o modelo de fatura predefinido, fornecer a ID do modelo "fatura predefinida" ou usar o modelo de layout predefinido mais simples, forneça a ID do modelo "predefinido-layout".

Os campos produzidos no AnalyzeResult dependem do modelo usado para análise e os valores nos campos de documentos extraídos dependem dos tipos de documento no modelo (se houver) e de seus esquemas de campo correspondentes.

Exemplos

Esse método dá suporte à extração de dados de um arquivo em uma determinada URL. O serviço Reconhecimento de Formulários tentará baixar um arquivo usando a URL enviada, portanto, a URL deve estar acessível na Internet pública. Por exemplo, um token SAS pode ser usado para conceder acesso de leitura a um blob no Armazenamento do Azure e o serviço usará a URL codificada em SAS para solicitar o arquivo.

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>)

Extraia dados de uma entrada usando um modelo que tem um esquema de documento conhecido e fortemente tipado (um DocumentModel).

Os campos produzidos no AnalyzeResult dependem do modelo usado para análise. No TypeScript, o tipo do resultado para essa sobrecarga de método é inferido do tipo do DocumentModelde entrada.

Exemplos

Esse método dá suporte à extração de dados de um arquivo em uma determinada URL. O serviço Reconhecimento de Formulários tentará baixar um arquivo usando a URL enviada, portanto, a URL deve estar acessível na Internet pública. Por exemplo, um token SAS pode ser usado para conceder acesso de leitura a um blob no Armazenamento do Azure e o serviço usará a URL codificada em SAS para solicitar o arquivo.

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)

Classifique um documento usando um classificador personalizado dado por sua ID.

Esse método produz uma operação de longa execução (poller) que eventualmente produzirá um AnalyzeResult. Esse é o mesmo tipo que beginAnalyzeDocument e beginAnalyzeDocumentFromUrl, mas o resultado conterá apenas um pequeno subconjunto de seus campos. Somente o campo documents e pages campo serão preenchidos e apenas informações mínimas de página serão retornadas. O campo documents conterá informações sobre todos os documentos identificados e os docType como os quais foram classificados.

Exemplo

Esse método dá suporte a corpos de solicitação que podem ser transmitidos (FormRecognizerRequestBody), como objetos Node.JS ReadableStream, Blobdo navegador e ArrayBuffers. O conteúdo do corpo será carregado no serviço para análise.

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)

Classifique um documento de uma URL usando um classificador personalizado dado por sua ID.

Esse método produz uma operação de longa execução (poller) que eventualmente produzirá um AnalyzeResult. Esse é o mesmo tipo que beginAnalyzeDocument e beginAnalyzeDocumentFromUrl, mas o resultado conterá apenas um pequeno subconjunto de seus campos. Somente o campo documents e pages campo serão preenchidos e apenas informações mínimas de página serão retornadas. O campo documents conterá informações sobre todos os documentos identificados e os docType como os quais foram classificados.

Exemplo

Esse método dá suporte à extração de dados de um arquivo em uma determinada URL. O serviço Reconhecimento de Formulários tentará baixar um arquivo usando a URL enviada, portanto, a URL deve estar acessível na Internet pública. Por exemplo, um token SAS pode ser usado para conceder acesso de leitura a um blob no Armazenamento do Azure e o serviço usará a URL codificada em SAS para solicitar o arquivo.

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})`,
  );
}

Detalhes do construtor

DocumentAnalysisClient(string, KeyCredential, DocumentAnalysisClientOptions)

Criar uma instância DocumentAnalysisClient de um ponto de extremidade de recurso e uma chave de API estática (KeyCredential),

Exemplo:

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

a URL do ponto de extremidade de uma instância dos Serviços Cognitivos do Azure

credential
KeyCredential

um KeyCredential que contém a chave de assinatura da instância dos Serviços Cognitivos

options
DocumentAnalysisClientOptions

configurações opcionais para configurar todos os métodos no cliente

DocumentAnalysisClient(string, TokenCredential, DocumentAnalysisClientOptions)

Crie uma instância de DocumentAnalysisClient de um ponto de extremidade de recurso e um TokenCredentialde Identidade do Azure.

Consulte o pacote @azure/identity para obter mais informações sobre como autenticar com o Azure Active Directory.

Exemplo:

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

a URL do ponto de extremidade de uma instância dos Serviços Cognitivos do Azure

credential
TokenCredential

uma instância tokenCredential do pacote @azure/identity

options
DocumentAnalysisClientOptions

configurações opcionais para configurar todos os métodos no cliente

Detalhes do método

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

Extraia dados de uma entrada usando um modelo dado por sua ID exclusiva.

Essa operação dá suporte a modelos personalizados e predefinidos. Por exemplo, para usar o modelo de fatura predefinido, fornecer a ID do modelo "fatura predefinida" ou usar o modelo de layout predefinido mais simples, forneça a ID do modelo "predefinido-layout".

Os campos produzidos no AnalyzeResult dependem do modelo usado para análise e os valores nos campos de documentos extraídos dependem dos tipos de documento no modelo (se houver) e de seus esquemas de campo correspondentes.

Exemplos

Esse método dá suporte a corpos de solicitação que podem ser transmitidos (FormRecognizerRequestBody), como objetos Node.JS ReadableStream, Blobdo navegador e ArrayBuffers. O conteúdo do corpo será carregado no serviço para análise.

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

a ID exclusiva (nome) do modelo dentro do recurso desse cliente

document
FormRecognizerRequestBody

um FormRecognizerRequestBody que será carregado com a solicitação

options

AnalyzeDocumentOptions<AnalyzeResult<AnalyzedDocument>>

configurações opcionais para a operação de análise e o sondador

Retornos

uma operação de longa execução (poller) que eventualmente produzirá uma AnalyzeResult

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

Extraia dados de uma entrada usando um modelo que tem um esquema de documento conhecido e fortemente tipado (um DocumentModel).

Os campos produzidos no AnalyzeResult dependem do modelo usado para análise. No TypeScript, o tipo do resultado para essa sobrecarga de método é inferido do tipo do DocumentModelde entrada.

Exemplos

Esse método dá suporte a corpos de solicitação que podem ser transmitidos (FormRecognizerRequestBody), como objetos Node.JS ReadableStream, Blobdo navegador e ArrayBuffers. O conteúdo do corpo será carregado no serviço para análise.

Se a entrada fornecida for uma cadeia de caracteres, ela será tratada como uma URL para o local de um documento a ser analisado. Consulte o método beginAnalyzeDocumentFromUrl para obter mais informações. O uso desse método é preferencial ao usar URLs e o suporte à URL só é fornecido neste método para compatibilidade com versões 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>

um DocumentModel que representa o modelo a ser usado para análise e o tipo de saída esperado

document
FormRecognizerRequestBody

um FormRecognizerRequestBody que será carregado com a solicitação

options

AnalyzeDocumentOptions<Result>

configurações opcionais para a operação de análise e o sondador

Retornos

Promise<AnalysisPoller<Result>>

uma operação de longa execução (poller) que eventualmente produzirá uma AnalyzeResult com documentos que têm o tipo de resultado associado ao modelo de entrada

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

Extraia dados de uma entrada usando um modelo dado por sua ID exclusiva.

Essa operação dá suporte a modelos personalizados e predefinidos. Por exemplo, para usar o modelo de fatura predefinido, fornecer a ID do modelo "fatura predefinida" ou usar o modelo de layout predefinido mais simples, forneça a ID do modelo "predefinido-layout".

Os campos produzidos no AnalyzeResult dependem do modelo usado para análise e os valores nos campos de documentos extraídos dependem dos tipos de documento no modelo (se houver) e de seus esquemas de campo correspondentes.

Exemplos

Esse método dá suporte à extração de dados de um arquivo em uma determinada URL. O serviço Reconhecimento de Formulários tentará baixar um arquivo usando a URL enviada, portanto, a URL deve estar acessível na Internet pública. Por exemplo, um token SAS pode ser usado para conceder acesso de leitura a um blob no Armazenamento do Azure e o serviço usará a URL codificada em SAS para solicitar o arquivo.

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

a ID exclusiva (nome) do modelo dentro do recurso desse cliente

documentUrl

string

uma URL (cadeia de caracteres) para um documento de entrada acessível da Internet pública

options

AnalyzeDocumentOptions<AnalyzeResult<AnalyzedDocument>>

configurações opcionais para a operação de análise e o sondador

Retornos

uma operação de longa execução (poller) que eventualmente produzirá uma AnalyzeResult

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

Extraia dados de uma entrada usando um modelo que tem um esquema de documento conhecido e fortemente tipado (um DocumentModel).

Os campos produzidos no AnalyzeResult dependem do modelo usado para análise. No TypeScript, o tipo do resultado para essa sobrecarga de método é inferido do tipo do DocumentModelde entrada.

Exemplos

Esse método dá suporte à extração de dados de um arquivo em uma determinada URL. O serviço Reconhecimento de Formulários tentará baixar um arquivo usando a URL enviada, portanto, a URL deve estar acessível na Internet pública. Por exemplo, um token SAS pode ser usado para conceder acesso de leitura a um blob no Armazenamento do Azure e o serviço usará a URL codificada em SAS para solicitar o arquivo.

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>

um DocumentModel que representa o modelo a ser usado para análise e o tipo de saída esperado

documentUrl

string

uma URL (cadeia de caracteres) para um documento de entrada acessível da Internet pública

options

AnalyzeDocumentOptions<Result>

configurações opcionais para a operação de análise e o sondador

Retornos

Promise<AnalysisPoller<Result>>

uma operação de longa execução (poller) que eventualmente produzirá uma AnalyzeResult

beginClassifyDocument(string, FormRecognizerRequestBody, ClassifyDocumentOptions)

Classifique um documento usando um classificador personalizado dado por sua ID.

Esse método produz uma operação de longa execução (poller) que eventualmente produzirá um AnalyzeResult. Esse é o mesmo tipo que beginAnalyzeDocument e beginAnalyzeDocumentFromUrl, mas o resultado conterá apenas um pequeno subconjunto de seus campos. Somente o campo documents e pages campo serão preenchidos e apenas informações mínimas de página serão retornadas. O campo documents conterá informações sobre todos os documentos identificados e os docType como os quais foram classificados.

Exemplo

Esse método dá suporte a corpos de solicitação que podem ser transmitidos (FormRecognizerRequestBody), como objetos Node.JS ReadableStream, Blobdo navegador e ArrayBuffers. O conteúdo do corpo será carregado no serviço para análise.

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

a ID do classificador personalizado a ser usado para análise

document
FormRecognizerRequestBody

o documento a ser classificado

options
ClassifyDocumentOptions

opções para a operação de classificação

Retornos

uma operação de longa execução (poller) que eventualmente produzirá uma AnalyzeResult

beginClassifyDocumentFromUrl(string, string, ClassifyDocumentOptions)

Classifique um documento de uma URL usando um classificador personalizado dado por sua ID.

Esse método produz uma operação de longa execução (poller) que eventualmente produzirá um AnalyzeResult. Esse é o mesmo tipo que beginAnalyzeDocument e beginAnalyzeDocumentFromUrl, mas o resultado conterá apenas um pequeno subconjunto de seus campos. Somente o campo documents e pages campo serão preenchidos e apenas informações mínimas de página serão retornadas. O campo documents conterá informações sobre todos os documentos identificados e os docType como os quais foram classificados.

Exemplo

Esse método dá suporte à extração de dados de um arquivo em uma determinada URL. O serviço Reconhecimento de Formulários tentará baixar um arquivo usando a URL enviada, portanto, a URL deve estar acessível na Internet pública. Por exemplo, um token SAS pode ser usado para conceder acesso de leitura a um blob no Armazenamento do Azure e o serviço usará a URL codificada em SAS para solicitar o arquivo.

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

a ID do classificador personalizado a ser usado para análise

documentUrl

string

a URL do documento a ser classificado

Retornos