Azure DocumentIntelligence (tidigare FormRecognizer) REST-klientbibliotek för JavaScript – version 1.0.0-beta.2
Extraherar innehåll, layout och strukturerade data från dokument.
Förlita dig starkt på våra REST-klientdokument för att använda det här biblioteket
Obs! Formigenkänning har bytt namn till Dokumentinformation. Kontrollera migreringsguiden från
@azure/ai-form-recognizer
till@azure-rest/ai-document-intelligence
.
Nyckellänkar:
- Källkod
- Paket (NPM)
- Referensdokumentation för API
- Exempel
- Ändringslogg
- Migreringsguide från Formigenkänning
Den här versionen av klientbiblioteket är standard för
"2024-02-29-preview"
tjänstens version.
Den här tabellen visar relationen mellan SDK-versioner och API-versioner som stöds av tjänsten:
SDK-version | API-version av tjänsten som stöds |
---|---|
1.0.0-beta.2 | 2024-02-29-preview |
1.0.0-beta.1 | 2023-10-31-preview |
Förlita dig på det äldre
@azure/ai-form-recognizer
biblioteket via de äldre api-versionerna för tjänsten för tillbakadragna modeller, till exempel"prebuilt-businessCard"
och"prebuilt-document"
. Mer information finns i Ändringslogg.
I tabellen nedan beskrivs relationen mellan varje klient och dess API-versioner som stöds:
Tjänst-API-version | Klienter som stöds | Paket |
---|---|---|
2024-02-29-preview | DocumentIntelligenceClient | @azure-rest/ai-document-intelligence Version 1.0.0-beta.2 |
2023-10-31-preview | DocumentIntelligenceClient | @azure-rest/ai-document-intelligence Version 1.0.0-beta.1 |
2023-07-31 | DocumentAnalysisClient och DocumentModelAdministrationClient | @azure/ai-form-recognizer Version ^5.0.0 |
2022-08-01 | DocumentAnalysisClient och DocumentModelAdministrationClient | @azure/ai-form-recognizer Version ^4.0.0 |
Komma igång
Miljöer som stöds för närvarande
- LTS-versioner av Node.js
Förutsättningar
- Du måste ha en Azure-prenumeration för att kunna använda det här paketet.
Installera @azure-rest/ai-document-intelligence
-paketet
Installera REST-klientbiblioteket för REST-klienten i Azure DocumentIntelligence(tidigareFormRecognizer) för JavaScript med npm
:
npm install @azure-rest/ai-document-intelligence
Skapa och autentisera en DocumentIntelligenceClient
Om du vill använda en AAD-tokenautentisering (Azure Active Directory) anger du en instans av önskad typ av autentiseringsuppgifter som hämtats från @azure/identitetsbiblioteket .
Om du vill autentisera med AAD måste du först npm
installera @azure/identity
Efter installationen kan du välja vilken typ av autentiseringsuppgifter du @azure/identity
vill använda.
StandardAzureCredential kan till exempel användas för att autentisera klienten.
Ange värdena för klient-ID, klient-ID och klienthemlighet för AAD-programmet som miljövariabler: AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_CLIENT_SECRET
Använda en tokenautentiseringsuppgift
import DocumentIntelligence from "@azure-rest/ai-document-intelligence";
const client = DocumentIntelligence(
process.env["DOCUMENT_INTELLIGENCE_ENDPOINT"],
new DefaultAzureCredential()
);
Använda en API-NYCKEL
import DocumentIntelligence from "@azure-rest/ai-document-intelligence";
const client = DocumentIntelligence(process.env["DOCUMENT_INTELLIGENCE_ENDPOINT"], {
key: process.env["DOCUMENT_INTELLIGENCE_API_KEY"],
});
Dokumentmodeller
Analysera fördefinierad layout (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" },
});
Analysera fördefinierad layout (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" },
});
Fortsätt att skapa poller från det första svaret
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'
// }
// }
Markdown-innehållsformat
Stöder utdata med Markdown-innehållsformat tillsammans med standardformatet oformaterad text. För tillfället stöds detta endast för "fördefinierad layout". Markdown-innehållsformatet anses vara ett mer användarvänligt format för LLM-förbrukning i ett chatt- eller automatiseringsscenario.
Tjänsten följer GFM-specifikationen (GitHub Flavored Markdown) för Markdown-formatet. Introducerar även en ny contentFormat-egenskap med värdet "text" eller "markdown" för att ange resultatinnehållsformatet.
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
});
Frågefält
När den här funktionsflaggan anges extraherar tjänsten ytterligare värdena för de fält som anges via frågeparametern queryFields för att komplettera befintliga fält som definierats av modellen som reserv.
await client.path("/documentModels/{modelId}:analyze", "prebuilt-layout").post({
contentType: "application/json",
body: { urlSource: "..." },
queryParameters: {
features: ["queryFields"],
queryFields: ["NumberOfGuests", "StoreNumber"],
}, // <-- new query parameter
});
Delningsalternativ
I de tidigare API-versionerna som stöds av det äldre @azure/ai-form-recognizer
biblioteket försökte dokumentdelnings- och klassificeringsåtgärden ("/documentClassifiers/{classifierId}:analyze"
) alltid dela upp indatafilen i flera dokument.
För att möjliggöra en bredare uppsättning scenarier introducerar tjänsten en "delad" frågeparameter med den nya tjänstversionen "2023-10-31-preview". Följande värden stöds:
split: "auto"
Låt tjänsten avgöra var du ska dela.
split: "none"
Hela filen behandlas som ett enda dokument. Ingen delning utförs.
split: "perPage"
Varje sida behandlas som ett separat dokument. Varje tom sida behålls som ett eget dokument.
Dokumentklassificerare #Build
import {
DocumentClassifierBuildOperationDetailsOutput,
getLongRunningPoller,
isUnexpected,
} from "@azure-rest/ai-document-intelligence";
const containerSasUrl = (): string =>
process.env["DOCUMENT_INTELLIGENCE_TRAINING_CONTAINER_SAS_URL"];
const initialResponse = await client.path("/documentClassifiers:build").post({
body: {
classifierId: `customClassifier${getRandomNumber()}`,
description: "Custom classifier description",
docTypes: {
foo: {
azureBlobSource: {
containerUrl: containerSasUrl(),
},
},
bar: {
azureBlobSource: {
containerUrl: containerSasUrl(),
},
},
},
},
});
if (isUnexpected(initialResponse)) {
throw initialResponse.body.error;
}
const poller = await getLongRunningPoller(client, initialResponse);
const response = (await poller.pollUntilDone())
.body as DocumentClassifierBuildOperationDetailsOutput;
console.log(response);
// {
// operationId: '31466834048_f3ee629e-73fb-48ab-993b-1d55d73ca460',
// kind: 'documentClassifierBuild',
// status: 'succeeded',
// .
// .
// result: {
// classifierId: 'customClassifier10978',
// createdDateTime: '2023-11-09T12:45:56Z',
// .
// .
// description: 'Custom classifier description'
// },
// apiVersion: '2023-10-31-preview'
// }
Hämta information
const response = await client.path("/info").get();
if (isUnexpected(response)) {
throw response.body.error;
}
console.log(response.body.customDocumentModels.limit);
// 20000
Lista dokumentmodeller
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);
}
Felsökning
Loggning
Aktivering av loggning kan hjälpa dig att hitta användbar information om fel. Om du vill se en logg över HTTP-begäranden och svar anger du AZURE_LOG_LEVEL
miljövariabeln till info
. Du kan också aktivera loggning vid körning genom att anropa setLogLevel
i @azure/logger
:
const { setLogLevel } = require("@azure/logger");
setLogLevel("info");
Mer detaljerade anvisningar om hur du aktiverar loggar finns i @azure-/loggningspaketdokumenten.
Azure SDK for JavaScript