Klientská knihovna REST Azure DocumentIntelligence (dříve FormRecognizer) pro JavaScript – verze 1.0.0-beta.2
Extrahuje z dokumentů obsah, rozložení a strukturovaná data.
Při používání této knihovny se velmi spoléhejte na naši dokumentaci ke klientům REST .
POZNÁMKA: Rozpoznávání formulářů se přejmenovala na Funkce dokumentů. Projděte si průvodce migrací z
@azure/ai-form-recognizer
do@azure-rest/ai-document-intelligence
.
Klíčové odkazy:
- Zdrojový kód
- Balíček (NPM)
- Referenční dokumentace k rozhraní API
- ukázky
- Protokol změn
- Průvodce migrací z Rozpoznávání formulářů
Tato verze klientské knihovny je výchozí
"2024-02-29-preview"
verzí služby.
Tato tabulka ukazuje vztah mezi verzemi sady SDK a podporovanými verzemi rozhraní API služby:
SDK version (Verze sady SDK) | Podporovaná verze služby rozhraní API |
---|---|
1.0.0-beta.2 | 2024-02-29-preview |
1.0.0-beta.1 | 2023-10-31-preview |
Pro vyřazené modely, jako
"prebuilt-businessCard"
jsou a"prebuilt-document"
, využijte starší@azure/ai-form-recognizer
knihovnu prostřednictvím starších verzí rozhraní API služby. Další informace najdete v tématu Protokol změn.
Následující tabulka popisuje vztah jednotlivých klientů a podporované verze rozhraní API:
Verze rozhraní API služby | Podporovaní klienti | Balíček |
---|---|---|
2024-02-29-preview | DocumentIntelligenceClient | @azure-rest/ai-document-intelligence Verze 1.0.0-beta.2 |
2023-10-31-preview | DocumentIntelligenceClient | @azure-rest/ai-document-intelligence Verze 1.0.0-beta.1 |
2023-07-31 | DocumentAnalysisClient a DocumentModelAdministrationClient | @azure/ai-form-recognizer Verze ^5.0.0 |
2022-08-01 | DocumentAnalysisClient a DocumentModelAdministrationClient | @azure/ai-form-recognizer Verze ^4.0.0 |
Začínáme
Aktuálně podporovaná prostředí
- LtS verze Node.js
Požadavky
- Abyste mohli tento balíček používat, musíte mít předplatné Azure .
Nainstalujte balíček @azure-rest/ai-document-intelligence
.
Nainstalujte klientskou knihovnu REST REST Azure DocumentIntelligence(dříveFormRecognizer) pro JavaScript pomocí npm
příkazu :
npm install @azure-rest/ai-document-intelligence
Vytvoření a ověření DocumentIntelligenceClient
Pokud chcete použít přihlašovací údaje tokenu Azure Active Directory (AAD), zadejte instanci požadovaného typu přihlašovacích údajů získané z knihovny @azure/identity .
Abyste se mohli ověřit pomocí AAD, musíte nejdřív npm
nainstalovat. @azure/identity
Po nastavení můžete zvolit, jaký typ přihlašovacích údajů@azure/identity
se má použít.
Jako příklad lze k ověření klienta použít DefaultAzureCredential .
Nastavte hodnoty ID klienta, ID tenanta a tajného klíče klienta aplikace AAD jako proměnné prostředí: AZURE_CLIENT_ID, AZURE_TENANT_ID AZURE_CLIENT_SECRET
Použití přihlašovacích údajů tokenu
import DocumentIntelligence from "@azure-rest/ai-document-intelligence";
const client = DocumentIntelligence(
process.env["DOCUMENT_INTELLIGENCE_ENDPOINT"],
new DefaultAzureCredential()
);
Použití klíče rozhraní API
import DocumentIntelligence from "@azure-rest/ai-document-intelligence";
const client = DocumentIntelligence(process.env["DOCUMENT_INTELLIGENCE_ENDPOINT"], {
key: process.env["DOCUMENT_INTELLIGENCE_API_KEY"],
});
Modely dokumentů
Analýza předem připraveného rozložení (urlSource)
const initialResponse = await client
.path("/documentModels/{modelId}:analyze", "prebuilt-layout")
.post({
contentType: "application/json",
body: {
urlSource:
"https://raw.githubusercontent.com/Azure/azure-sdk-for-js/6704eff082aaaf2d97c1371a28461f512f8d748a/sdk/formrecognizer/ai-form-recognizer/assets/forms/Invoice_1.pdf",
},
queryParameters: { locale: "en-IN" },
});
Analýza předem připraveného rozložení (base64Source)
import fs from "fs";
import path from "path";
const filePath = path.join(ASSET_PATH, "forms", "Invoice_1.pdf");
const base64Source = fs.readFileSync(filePath, { encoding: "base64" });
const initialResponse = await client
.path("/documentModels/{modelId}:analyze", "prebuilt-layout")
.post({
contentType: "application/json",
body: {
base64Source,
},
queryParameters: { locale: "en-IN" },
});
Pokračovat ve vytváření poller z počáteční odpovědi
import {
getLongRunningPoller,
AnalyzeResultOperationOutput,
isUnexpected,
} from "@azure-rest/ai-document-intelligence";
if (isUnexpected(initialResponse)) {
throw initialResponse.body.error;
}
const poller = await getLongRunningPoller(client, initialResponse);
const result = (await poller.pollUntilDone()).body as AnalyzeResultOperationOutput;
console.log(result);
// {
// status: 'succeeded',
// createdDateTime: '2023-11-10T13:31:31Z',
// lastUpdatedDateTime: '2023-11-10T13:31:34Z',
// analyzeResult: {
// apiVersion: '2023-10-31-preview',
// .
// .
// .
// contentFormat: 'text'
// }
// }
Formát obsahu Markdownu
Podporuje výstup s formátem obsahu Markdown spolu s výchozím prostým textem. Prozatím je to podporováno pouze pro "předem připravené rozložení". Formát obsahu Markdown se považuje za přívětivější formát pro využívání LLM ve scénáři chatu nebo použití automatizace.
Služba se řídí specifikací GFM (GitHub Flavored Markdown) pro formát Markdown. Také zavádí novou vlastnost contentFormat s hodnotou "text" nebo "markdown" označující výsledný formát obsahu.
import DocumentIntelligence from "@azure-rest/ai-document-intelligence";
const client = DocumentIntelligence(process.env["DOCUMENT_INTELLIGENCE_ENDPOINT"], {
key: process.env["DOCUMENT_INTELLIGENCE_API_KEY"],
});
const initialResponse = await client
.path("/documentModels/{modelId}:analyze", "prebuilt-layout")
.post({
contentType: "application/json",
body: {
urlSource:
"https://raw.githubusercontent.com/Azure/azure-sdk-for-js/6704eff082aaaf2d97c1371a28461f512f8d748a/sdk/formrecognizer/ai-form-recognizer/assets/forms/Invoice_1.pdf",
},
queryParameters: { outputContentFormat: "markdown" }, // <-- new query parameter
});
Pole dotazu
Po zadání tohoto příznaku funkce služba dále extrahuje hodnoty polí zadaných prostřednictvím parametru dotazu queryFields, aby doplnila všechna existující pole definovaná modelem jako záložní.
await client.path("/documentModels/{modelId}:analyze", "prebuilt-layout").post({
contentType: "application/json",
body: { urlSource: "..." },
queryParameters: {
features: ["queryFields"],
queryFields: ["NumberOfGuests", "StoreNumber"],
}, // <-- new query parameter
});
Možnosti rozdělení
V předchozích verzích rozhraní API podporovaných starší @azure/ai-form-recognizer
knihovnou se operace rozdělení a klasifikace dokumentů ("/documentClassifiers/{classifierId}:analyze"
) vždy snažila rozdělit vstupní soubor do více dokumentů.
Aby bylo možné používat širší sadu scénářů, služba zavádí parametr rozděleného dotazu s novou verzí služby "2023-10-31-preview". Podporují se následující hodnoty:
split: "auto"
Nechte službu určit, kam se má rozdělit.
split: "none"
Celý soubor je považován za jeden dokument. Neprovádí se žádné rozdělení.
split: "perPage"
Každá stránka je považována za samostatný dokument. Každá prázdná stránka se zachová jako vlastní dokument.
#Build klasifikátorů dokumentů
import {
DocumentClassifierBuildOperationDetailsOutput,
getLongRunningPoller,
isUnexpected,
} from "@azure-rest/ai-document-intelligence";
const containerSasUrl = (): string =>
process.env["DOCUMENT_INTELLIGENCE_TRAINING_CONTAINER_SAS_URL"];
const initialResponse = await client.path("/documentClassifiers:build").post({
body: {
classifierId: `customClassifier${getRandomNumber()}`,
description: "Custom classifier description",
docTypes: {
foo: {
azureBlobSource: {
containerUrl: containerSasUrl(),
},
},
bar: {
azureBlobSource: {
containerUrl: containerSasUrl(),
},
},
},
},
});
if (isUnexpected(initialResponse)) {
throw initialResponse.body.error;
}
const poller = await getLongRunningPoller(client, initialResponse);
const response = (await poller.pollUntilDone())
.body as DocumentClassifierBuildOperationDetailsOutput;
console.log(response);
// {
// operationId: '31466834048_f3ee629e-73fb-48ab-993b-1d55d73ca460',
// kind: 'documentClassifierBuild',
// status: 'succeeded',
// .
// .
// result: {
// classifierId: 'customClassifier10978',
// createdDateTime: '2023-11-09T12:45:56Z',
// .
// .
// description: 'Custom classifier description'
// },
// apiVersion: '2023-10-31-preview'
// }
Získat informace
const response = await client.path("/info").get();
if (isUnexpected(response)) {
throw response.body.error;
}
console.log(response.body.customDocumentModels.limit);
// 20000
Výpis modelů dokumentů
import { paginate } from "@azure-rest/ai-document-intelligence";
const response = await client.path("/documentModels").get();
if (isUnexpected(response)) {
throw response.body.error;
}
const modelsInAccount: string[] = [];
for await (const model of paginate(client, response)) {
console.log(model.modelId);
}
Poradce při potížích
protokolování
Povolení protokolování může pomoct odhalit užitečné informace o selháních. Pokud chcete zobrazit protokol požadavků a odpovědí HTTP, nastavte proměnnou AZURE_LOG_LEVEL
prostředí na info
. Případně je možné protokolování povolit za běhu voláním setLogLevel
v :@azure/logger
const { setLogLevel } = require("@azure/logger");
setLogLevel("info");
Podrobnější pokyny k povolení protokolů najdete v dokumentaci k balíčkům @azure/protokolovacího nástroje.
Azure SDK for JavaScript