Rest-clientbibliotheek voor Azure DocumentIntelligence (voorheen FormRecognizer) voor JavaScript - versie 1.0.0-beta.2
Extraheert inhoud, indeling en gestructureerde gegevens uit documenten.
Vertrouw sterk op onze REST-clientdocumenten om deze bibliotheek te gebruiken
OPMERKING: Form Recognizer is gewijzigd in Document Intelligence. Raadpleeg de migratiehandleiding van
@azure/ai-form-recognizer
naar@azure-rest/ai-document-intelligence
.
Belangrijke koppelingen:
- Broncode
- Pakket (NPM)
- API-referentiedocumentatie
- Voorbeelden
- Wijzigingenlogboek
- Migratiehandleiding van Form Recognizer
Deze versie van de clientbibliotheek is standaard de
"2024-02-29-preview"
versie van de service.
In deze tabel ziet u de relatie tussen SDK-versies en ondersteunde API-versies van de service:
SDK-versie | Ondersteunde API-versie van de service |
---|---|
1.0.0-beta.2 | 29-02-2024-preview |
1.0.0-beta.1 | 2023-10-31-preview |
Vertrouw op de oudere
@azure/ai-form-recognizer
bibliotheek via de oudere service-API-versies voor buiten gebruik gestelde modellen, zoals"prebuilt-businessCard"
en"prebuilt-document"
. Zie Wijzigingenlogboek voor meer informatie.
In de onderstaande tabel wordt de relatie van elke client en de ondersteunde API-versie(s) beschreven:
Service-API-versie | Ondersteunde clients | Pakket |
---|---|---|
29-02-2024-preview | DocumentIntelligenceClient | @azure-rest/ai-document-intelligence Versie 1.0.0-beta.2 |
2023-10-31-preview | DocumentIntelligenceClient | @azure-rest/ai-document-intelligence Versie 1.0.0-beta.1 |
2023-07-31 | DocumentAnalysisClient en DocumentModelAdministrationClient | @azure/ai-form-recognizer Versie ^5.0.0 |
2022-08-01 | DocumentAnalysisClient en DocumentModelAdministrationClient | @azure/ai-form-recognizer Versie ^4.0.0 |
Aan de slag
Momenteel ondersteunde omgevingen
- LTS-versies van Node.js
Vereisten
- U moet een Azure-abonnement hebben om dit pakket te kunnen gebruiken.
Installeer het pakket @azure-rest/ai-document-intelligence
Installeer de REST-clientbibliotheek van Azure DocumentIntelligence(formerlyFormRecognizer) voor JavaScript met npm
:
npm install @azure-rest/ai-document-intelligence
Een maken en verifiëren DocumentIntelligenceClient
Als u een AAD-tokenreferentie (Azure Active Directory) wilt gebruiken, geeft u een exemplaar op van het gewenste referentietype dat is verkregen uit de bibliotheek @azure/identity .
Als u wilt verifiëren met AAD, moet u eerst npm
installeren @azure/identity
Na de installatie kunt u kiezen uit welk type referentie@azure/identity
u wilt gebruiken.
Als voorbeeld kan DefaultAzureCredential worden gebruikt om de client te verifiëren.
Stel de waarden van de client-id, tenant-id en clientgeheim van de AAD-toepassing in als omgevingsvariabelen: AZURE_CLIENT_ID, AZURE_TENANT_ID AZURE_CLIENT_SECRET
Een tokenreferentie gebruiken
import DocumentIntelligence from "@azure-rest/ai-document-intelligence";
const client = DocumentIntelligence(
process.env["DOCUMENT_INTELLIGENCE_ENDPOINT"],
new DefaultAzureCredential()
);
Een API-SLEUTEL gebruiken
import DocumentIntelligence from "@azure-rest/ai-document-intelligence";
const client = DocumentIntelligence(process.env["DOCUMENT_INTELLIGENCE_ENDPOINT"], {
key: process.env["DOCUMENT_INTELLIGENCE_API_KEY"],
});
Documentmodellen
Vooraf gemaakte indeling analyseren (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" },
});
Vooraf gemaakte indeling analyseren (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" },
});
Doorgaan met het maken van de poller vanaf de eerste reactie
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-inhoudsindeling
Ondersteunt uitvoer met Markdown-inhoudsindeling samen met de standaardtekst zonder opmaak. Op dit moment wordt dit alleen ondersteund voor 'vooraf gemaakte indeling'. Markdown-inhoudsindeling wordt beschouwd als een meer beschrijvende indeling voor LLM-verbruik in een chat- of automatiseringsscenario.
De service volgt de GFM-specificatie (GitHub Flavored Markdown) voor de Markdown-indeling. Introduceert ook een nieuwe eigenschap contentFormat met de waarde 'text' of 'markdown' om de indeling van de resultaatinhoud aan te geven.
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
});
Queryvelden
Wanneer deze functievlag is opgegeven, extraheert de service de waarden van de velden die zijn opgegeven via de queryparameter queryFields om bestaande velden aan te vullen die door het model als terugval zijn gedefinieerd.
await client.path("/documentModels/{modelId}:analyze", "prebuilt-layout").post({
contentType: "application/json",
body: { urlSource: "..." },
queryParameters: {
features: ["queryFields"],
queryFields: ["NumberOfGuests", "StoreNumber"],
}, // <-- new query parameter
});
Splitsopties
In de vorige API-versies die door de oudere @azure/ai-form-recognizer
bibliotheek worden ondersteund, heeft de bewerking voor het splitsen en classificeren van documenten ("/documentClassifiers/{classifierId}:analyze"
) altijd geprobeerd het invoerbestand in meerdere documenten te splitsen.
Om een bredere set scenario's mogelijk te maken, introduceert de service een 'gesplitste' queryparameter met de nieuwe serviceversie '2023-10-31-preview'. De volgende waarden worden ondersteund:
split: "auto"
Laat de service bepalen waar moet worden gesplitst.
split: "none"
Het hele bestand wordt behandeld als één document. Er wordt geen splitsing uitgevoerd.
split: "perPage"
Elke pagina wordt behandeld als een afzonderlijk document. Elke lege pagina wordt bewaard als een eigen document.
#Build voor documentclassificaties
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'
// }
Informatie ophalen
const response = await client.path("/info").get();
if (isUnexpected(response)) {
throw response.body.error;
}
console.log(response.body.customDocumentModels.limit);
// 20000
Documentmodellen weergeven
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);
}
Problemen oplossen
Logboekregistratie
Het inschakelen van logboekregistratie kan helpen bij het ontdekken van nuttige informatie over fouten. Als u een logboek met HTTP-aanvragen en -antwoorden wilt zien, stelt u de AZURE_LOG_LEVEL
omgevingsvariabele in op info
. Logboekregistratie kan ook worden ingeschakeld tijdens runtime door aan te roepen setLogLevel
in de @azure/logger
:
const { setLogLevel } = require("@azure/logger");
setLogLevel("info");
Voor meer gedetailleerde instructies over het inschakelen van logboeken kunt u de @azure-/loggerpakketdocumenten bekijken.
Azure SDK for JavaScript