Поделиться через


DocumentAnalysisClient class

Клиент для взаимодействия с функциями анализа службы Распознавателя документов.

Примеры:

Служба распознавателя документов и клиенты поддерживают два способа проверки подлинности:

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

Ключ API (ключ подписки)

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, KeyCredential, DocumentAnalysisClientOptions)

Создание экземпляра DocumentAnalysisClient из конечной точки ресурса и статического ключа API (KeyCredential),

Пример:

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)

Создайте экземпляр DocumentAnalysisClient из конечной точки ресурса и TokenCredentialудостоверения Azure.

Дополнительные сведения о проверке подлинности с помощью Azure Active Directory см. в пакете @azure/identity.

Пример:

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

Методы

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

Извлеките данные из входных данных с помощью модели, заданной его уникальным идентификатором.

Эта операция поддерживает пользовательские и предварительно созданные модели. Например, чтобы использовать предварительно созданную модель счета, укажите идентификатор модели "предварительно созданный счет", или для использования более простой предварительно созданной модели макета укажите идентификатор модели "предварительно созданный макет".

Поля, созданные в AnalyzeResult, зависят от модели, используемой для анализа, а значения в полях извлеченных документов зависят от типов документов в модели (если таковые имеются) и соответствующих схем полей.

Примеры

Этот метод поддерживает потоковые тела запросов (FormRecognizerRequestBody), такие как объекты Node.JS ReadableStream, браузер Blobи ArrayBuffers. Содержимое текста будет отправлено в службу для анализа.

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

Извлеките данные из входных данных с помощью модели, которая имеет известную, строго типизированную схему документа (DocumentModel).

Поля, созданные в AnalyzeResult, зависят от модели, используемой для анализа. В TypeScript тип результата для этой перегрузки метода выводится из типа входных DocumentModel.

Примеры

Этот метод поддерживает потоковые тела запросов (FormRecognizerRequestBody), такие как объекты Node.JS ReadableStream, браузер Blobи ArrayBuffers. Содержимое текста будет отправлено в службу для анализа.

Если предоставленные входные данные представляют собой строку, она будет рассматриваться как URL-адрес расположения документа, который необходимо проанализировать. Дополнительные сведения см. в методе beginAnalyzeDocumentFromUrl. Использование этого метода предпочтительно при использовании URL-адресов, а поддержка URL-адресов предоставляется только в этом методе для обратной совместимости.

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

Извлеките данные из входных данных с помощью модели, заданной его уникальным идентификатором.

Эта операция поддерживает пользовательские и предварительно созданные модели. Например, чтобы использовать предварительно созданную модель счета, укажите идентификатор модели "предварительно созданный счет", или для использования более простой предварительно созданной модели макета укажите идентификатор модели "предварительно созданный макет".

Поля, созданные в AnalyzeResult, зависят от модели, используемой для анализа, а значения в полях извлеченных документов зависят от типов документов в модели (если таковые имеются) и соответствующих схем полей.

Примеры

Этот метод поддерживает извлечение данных из файла по указанному URL-адресу. Служба распознавателя документов попытается скачать файл с помощью отправленного URL-адреса, поэтому URL-адрес должен быть доступен из общедоступного Интернета. Например, маркер SAS можно использовать для предоставления доступа к большому двоичному объекту в службе хранилища Azure, а служба будет использовать URL-адрес, закодированный SAS, для запроса файла.

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

Извлеките данные из входных данных с помощью модели, которая имеет известную, строго типизированную схему документа (DocumentModel).

Поля, созданные в AnalyzeResult, зависят от модели, используемой для анализа. В TypeScript тип результата для этой перегрузки метода выводится из типа входных DocumentModel.

Примеры

Этот метод поддерживает извлечение данных из файла по указанному URL-адресу. Служба распознавателя документов попытается скачать файл с помощью отправленного URL-адреса, поэтому URL-адрес должен быть доступен из общедоступного Интернета. Например, маркер SAS можно использовать для предоставления доступа к большому двоичному объекту в службе хранилища Azure, а служба будет использовать URL-адрес, закодированный SAS, для запроса файла.

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)

Классифицируйте документ с помощью пользовательского классификатора, заданного его идентификатором.

Этот метод создает длительную операцию (опрос), которая в конечном итоге создаст AnalyzeResult. Это тот же тип, что и beginAnalyzeDocument и beginAnalyzeDocumentFromUrl, но результат будет содержать только небольшое подмножество полей. Будет заполнено только поле documents и pages, и будут возвращены только минимальные сведения о странице. Поле documents будет содержать сведения обо всех идентифицированных документах и docType, которые они были классифицированы как.

Пример

Этот метод поддерживает потоковые тела запросов (FormRecognizerRequestBody), такие как объекты Node.JS ReadableStream, браузер Blobи ArrayBuffers. Содержимое текста будет отправлено в службу для анализа.

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)

Классификация документа из URL-адреса с помощью пользовательского классификатора, заданного его идентификатором.

Этот метод создает длительную операцию (опрос), которая в конечном итоге создаст AnalyzeResult. Это тот же тип, что и beginAnalyzeDocument и beginAnalyzeDocumentFromUrl, но результат будет содержать только небольшое подмножество полей. Будет заполнено только поле documents и pages, и будут возвращены только минимальные сведения о странице. Поле documents будет содержать сведения обо всех идентифицированных документах и docType, которые они были классифицированы как.

Пример

Этот метод поддерживает извлечение данных из файла по указанному URL-адресу. Служба распознавателя документов попытается скачать файл с помощью отправленного URL-адреса, поэтому URL-адрес должен быть доступен из общедоступного Интернета. Например, маркер SAS можно использовать для предоставления доступа к большому двоичному объекту в службе хранилища Azure, а служба будет использовать URL-адрес, закодированный SAS, для запроса файла.

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

Сведения о конструкторе

DocumentAnalysisClient(string, KeyCredential, DocumentAnalysisClientOptions)

Создание экземпляра DocumentAnalysisClient из конечной точки ресурса и статического ключа API (KeyCredential),

Пример:

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)

Параметры

endpoint

string

URL-адрес конечной точки экземпляра Azure Cognitive Services

credential
KeyCredential

KeyCredential, содержащий ключ подписки экземпляра Cognitive Services

options
DocumentAnalysisClientOptions

необязательные параметры для настройки всех методов в клиенте

DocumentAnalysisClient(string, TokenCredential, DocumentAnalysisClientOptions)

Создайте экземпляр DocumentAnalysisClient из конечной точки ресурса и TokenCredentialудостоверения Azure.

Дополнительные сведения о проверке подлинности с помощью Azure Active Directory см. в пакете @azure/identity.

Пример:

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)

Параметры

endpoint

string

URL-адрес конечной точки экземпляра Azure Cognitive Services

credential
TokenCredential

экземпляр TokenCredential из пакета @azure/identity

options
DocumentAnalysisClientOptions

необязательные параметры для настройки всех методов в клиенте

Сведения о методе

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

Извлеките данные из входных данных с помощью модели, заданной его уникальным идентификатором.

Эта операция поддерживает пользовательские и предварительно созданные модели. Например, чтобы использовать предварительно созданную модель счета, укажите идентификатор модели "предварительно созданный счет", или для использования более простой предварительно созданной модели макета укажите идентификатор модели "предварительно созданный макет".

Поля, созданные в AnalyzeResult, зависят от модели, используемой для анализа, а значения в полях извлеченных документов зависят от типов документов в модели (если таковые имеются) и соответствующих схем полей.

Примеры

Этот метод поддерживает потоковые тела запросов (FormRecognizerRequestBody), такие как объекты Node.JS ReadableStream, браузер Blobи ArrayBuffers. Содержимое текста будет отправлено в службу для анализа.

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

Параметры

modelId

string

уникальный идентификатор (имя) модели в ресурсе этого клиента

document
FormRecognizerRequestBody

FormRecognizerRequestBody, который будет отправлен с запросом

options

AnalyzeDocumentOptions<AnalyzeResult<AnalyzedDocument>>

необязательные параметры для операции анализа и опроса

Возвращаемое значение

длительная операция (опрашиватель), которая в конечном итоге создаст AnalyzeResult

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

Извлеките данные из входных данных с помощью модели, которая имеет известную, строго типизированную схему документа (DocumentModel).

Поля, созданные в AnalyzeResult, зависят от модели, используемой для анализа. В TypeScript тип результата для этой перегрузки метода выводится из типа входных DocumentModel.

Примеры

Этот метод поддерживает потоковые тела запросов (FormRecognizerRequestBody), такие как объекты Node.JS ReadableStream, браузер Blobи ArrayBuffers. Содержимое текста будет отправлено в службу для анализа.

Если предоставленные входные данные представляют собой строку, она будет рассматриваться как URL-адрес расположения документа, который необходимо проанализировать. Дополнительные сведения см. в методе beginAnalyzeDocumentFromUrl. Использование этого метода предпочтительно при использовании URL-адресов, а поддержка URL-адресов предоставляется только в этом методе для обратной совместимости.

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

Параметры

model

DocumentModel<Result>

DocumentModel, представляющую модель для анализа и ожидаемый тип выходных данных

document
FormRecognizerRequestBody

FormRecognizerRequestBody, который будет отправлен с запросом

options

AnalyzeDocumentOptions<Result>

необязательные параметры для операции анализа и опроса

Возвращаемое значение

Promise<AnalysisPoller<Result>>

длительная операция (опрашиватель), которая в конечном итоге создаст AnalyzeResult с документами, имеющими тип результата, связанный с входной моделью

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

Извлеките данные из входных данных с помощью модели, заданной его уникальным идентификатором.

Эта операция поддерживает пользовательские и предварительно созданные модели. Например, чтобы использовать предварительно созданную модель счета, укажите идентификатор модели "предварительно созданный счет", или для использования более простой предварительно созданной модели макета укажите идентификатор модели "предварительно созданный макет".

Поля, созданные в AnalyzeResult, зависят от модели, используемой для анализа, а значения в полях извлеченных документов зависят от типов документов в модели (если таковые имеются) и соответствующих схем полей.

Примеры

Этот метод поддерживает извлечение данных из файла по указанному URL-адресу. Служба распознавателя документов попытается скачать файл с помощью отправленного URL-адреса, поэтому URL-адрес должен быть доступен из общедоступного Интернета. Например, маркер SAS можно использовать для предоставления доступа к большому двоичному объекту в службе хранилища Azure, а служба будет использовать URL-адрес, закодированный SAS, для запроса файла.

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

Параметры

modelId

string

уникальный идентификатор (имя) модели в ресурсе этого клиента

documentUrl

string

URL-адрес (строка) входного документа, доступного из общедоступного Интернета

options

AnalyzeDocumentOptions<AnalyzeResult<AnalyzedDocument>>

необязательные параметры для операции анализа и опроса

Возвращаемое значение

длительная операция (опрашиватель), которая в конечном итоге создаст AnalyzeResult

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

Извлеките данные из входных данных с помощью модели, которая имеет известную, строго типизированную схему документа (DocumentModel).

Поля, созданные в AnalyzeResult, зависят от модели, используемой для анализа. В TypeScript тип результата для этой перегрузки метода выводится из типа входных DocumentModel.

Примеры

Этот метод поддерживает извлечение данных из файла по указанному URL-адресу. Служба распознавателя документов попытается скачать файл с помощью отправленного URL-адреса, поэтому URL-адрес должен быть доступен из общедоступного Интернета. Например, маркер SAS можно использовать для предоставления доступа к большому двоичному объекту в службе хранилища Azure, а служба будет использовать URL-адрес, закодированный SAS, для запроса файла.

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

Параметры

model

DocumentModel<Result>

DocumentModel, представляющую модель для анализа и ожидаемый тип выходных данных

documentUrl

string

URL-адрес (строка) входного документа, доступного из общедоступного Интернета

options

AnalyzeDocumentOptions<Result>

необязательные параметры для операции анализа и опроса

Возвращаемое значение

Promise<AnalysisPoller<Result>>

длительная операция (опрашиватель), которая в конечном итоге создаст AnalyzeResult

beginClassifyDocument(string, FormRecognizerRequestBody, ClassifyDocumentOptions)

Классифицируйте документ с помощью пользовательского классификатора, заданного его идентификатором.

Этот метод создает длительную операцию (опрос), которая в конечном итоге создаст AnalyzeResult. Это тот же тип, что и beginAnalyzeDocument и beginAnalyzeDocumentFromUrl, но результат будет содержать только небольшое подмножество полей. Будет заполнено только поле documents и pages, и будут возвращены только минимальные сведения о странице. Поле documents будет содержать сведения обо всех идентифицированных документах и docType, которые они были классифицированы как.

Пример

Этот метод поддерживает потоковые тела запросов (FormRecognizerRequestBody), такие как объекты Node.JS ReadableStream, браузер Blobи ArrayBuffers. Содержимое текста будет отправлено в службу для анализа.

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

Параметры

classifierId

string

Идентификатор пользовательского классификатора для анализа

document
FormRecognizerRequestBody

Документ для классификации

options
ClassifyDocumentOptions

параметры для операции классификации

Возвращаемое значение

длительная операция (опрашиватель), которая в конечном итоге создаст AnalyzeResult

beginClassifyDocumentFromUrl(string, string, ClassifyDocumentOptions)

Классификация документа из URL-адреса с помощью пользовательского классификатора, заданного его идентификатором.

Этот метод создает длительную операцию (опрос), которая в конечном итоге создаст AnalyzeResult. Это тот же тип, что и beginAnalyzeDocument и beginAnalyzeDocumentFromUrl, но результат будет содержать только небольшое подмножество полей. Будет заполнено только поле documents и pages, и будут возвращены только минимальные сведения о странице. Поле documents будет содержать сведения обо всех идентифицированных документах и docType, которые они были классифицированы как.

Пример

Этот метод поддерживает извлечение данных из файла по указанному URL-адресу. Служба распознавателя документов попытается скачать файл с помощью отправленного URL-адреса, поэтому URL-адрес должен быть доступен из общедоступного Интернета. Например, маркер SAS можно использовать для предоставления доступа к большому двоичному объекту в службе хранилища Azure, а служба будет использовать URL-адрес, закодированный SAS, для запроса файла.

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

Параметры

classifierId

string

Идентификатор пользовательского классификатора для анализа

documentUrl

string

URL-адрес документа для классификации

Возвращаемое значение