Libreria client REST di Azure DocumentIntelligence (in precedenza FormRecognizer) per JavaScript - versione 1.0.0-beta.2
Estrae contenuto, layout e dati strutturati dai documenti.
Per usare questa libreria, fare affidamento principalmente sulla documentazione del client REST
NOTA: Riconoscimento modulo è stato rinominato in Document Intelligence. Consultare la Guida alla migrazione da
@azure/ai-form-recognizer
a@azure-rest/ai-document-intelligence
.
Collegamenti principali:
- Codice sorgente
- Pacchetto (NPM)
- Documentazione di riferimento delle API
- Esempi
- Log delle modifiche
- Guida alla migrazione da Riconoscimento modulo
Per impostazione predefinita, questa versione della libreria client è la
"2024-02-29-preview"
versione del servizio.
Questa tabella illustra la relazione tra le versioni dell'SDK e le versioni API supportate del servizio:
Versione dell'SDK | Versione api supportata del servizio |
---|---|
1.0.0-beta.2 | Anteprima 2024-02-29 |
1.0.0-beta.1 | Anteprima 2023-10-31 |
Usare la libreria precedente
@azure/ai-form-recognizer
tramite le versioni precedenti dell'API del servizio per i modelli ritirati, ad esempio"prebuilt-businessCard"
e"prebuilt-document"
. Per altre informazioni, vedere Log delle modifiche.
La tabella seguente descrive la relazione tra ogni client e le relative versioni API supportate:
Versione dell'API del servizio | Client supportati | Pacchetto |
---|---|---|
Anteprima 2024-02-29 | DocumentIntelligenceClient | @azure-rest/ai-document-intelligence Versione 1.0.0-beta.2 |
Anteprima 2023-10-31 | DocumentIntelligenceClient | @azure-rest/ai-document-intelligence Versione 1.0.0-beta.1 |
2023-07-31 | DocumentAnalysisClient e DocumentModelAdministrationClient | @azure/ai-form-recognizer Versione ^5.0.0 |
2022-08-01 | DocumentAnalysisClient e DocumentModelAdministrationClient | @azure/ai-form-recognizer Versione ^4.0.0 |
Introduzione
Ambienti attualmente supportati
- Versioni LTS di Node.js
Prerequisiti
- Per usare questo pacchetto, è necessario avere una sottoscrizione di Azure .
Installare il pacchetto @azure-rest/ai-document-intelligence
Installare la libreria client REST client REST DocumentIntelligence(in precedenzaFormRecognizer) per JavaScript con npm
:
npm install @azure-rest/ai-document-intelligence
Creare e autenticare un oggetto DocumentIntelligenceClient
Per usare una credenziale del token di Azure Active Directory (AAD), specificare un'istanza del tipo di credenziale desiderato ottenuto dalla libreria di @azure/identità .
Per eseguire l'autenticazione con AAD, è prima necessario npm
installare @azure/identity
Dopo l'installazione, è possibile scegliere il tipo di credenziale da @azure/identity
usare.
Ad esempio, DefaultAzureCredential può essere usato per autenticare il client.
Impostare i valori dell'ID client, dell'ID tenant e del segreto client dell'applicazione AAD come variabili di ambiente: AZURE_CLIENT_ID, AZURE_TENANT_ID AZURE_CLIENT_SECRET
Uso di credenziali dei token
import DocumentIntelligence from "@azure-rest/ai-document-intelligence";
const client = DocumentIntelligence(
process.env["DOCUMENT_INTELLIGENCE_ENDPOINT"],
new DefaultAzureCredential()
);
Uso di una CHIAVE API
import DocumentIntelligence from "@azure-rest/ai-document-intelligence";
const client = DocumentIntelligence(process.env["DOCUMENT_INTELLIGENCE_ENDPOINT"], {
key: process.env["DOCUMENT_INTELLIGENCE_API_KEY"],
});
Modelli di documento
Analizzare il layout predefinito (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" },
});
Analizzare il layout predefinito (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" },
});
Continuare a creare il poller dalla risposta iniziale
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'
// }
// }
Formato del contenuto Markdown
Supporta l'output con il formato di contenuto Markdown insieme al testo normale predefinito. Per il momento, questo è supportato solo per "precompilt-layout". Il formato di contenuto Markdown viene considerato un formato più descrittivo per l'utilizzo di LLM in uno scenario di utilizzo di chat o automazione.
Il servizio segue la specifica GFM (GitHub Flavored Markdown) per il formato Markdown. Introduce anche una nuova proprietà contentFormat con valore "text" o "markdown" per indicare il formato del contenuto del risultato.
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
});
Campi query
Quando viene specificato questo flag di funzionalità, il servizio estrae ulteriormente i valori dei campi specificati tramite il parametro di query queryFields per integrare tutti i campi esistenti definiti dal modello come fallback.
await client.path("/documentModels/{modelId}:analyze", "prebuilt-layout").post({
contentType: "application/json",
body: { urlSource: "..." },
queryParameters: {
features: ["queryFields"],
queryFields: ["NumberOfGuests", "StoreNumber"],
}, // <-- new query parameter
});
Opzioni di divisione
Nelle versioni precedenti dell'API supportate dalla raccolta precedente @azure/ai-form-recognizer
, l'operazione di suddivisione e classificazione dei documenti ("/documentClassifiers/{classifierId}:analyze"
) ha sempre tentato di suddividere il file di input in più documenti.
Per abilitare un set più ampio di scenari, il servizio introduce un parametro di query "split" con la nuova versione del servizio "2023-10-31-preview". Sono supportati i valori seguenti:
split: "auto"
Consentire al servizio di determinare dove suddividere.
split: "none"
L'intero file viene considerato come un singolo documento. Non viene eseguita alcuna suddivisione.
split: "perPage"
Ogni pagina viene considerata come un documento separato. Ogni pagina vuota viene mantenuta come documento.
#Build classificatori di documenti
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'
// }
Ottenere informazioni
const response = await client.path("/info").get();
if (isUnexpected(response)) {
throw response.body.error;
}
console.log(response.body.customDocumentModels.limit);
// 20000
Elencare i modelli di documento
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);
}
Risoluzione dei problemi
Registrazione
L'abilitazione della registrazione consente di individuare informazioni utili sugli errori. Per visualizzare un log di richieste e risposte HTTP, impostare la variabile di ambiente AZURE_LOG_LEVEL
su info
. In alternativa, la registrazione può essere abilitata in fase di esecuzione chiamando setLogLevel
in @azure/logger
:
const { setLogLevel } = require("@azure/logger");
setLogLevel("info");
Per istruzioni più dettagliate su come abilitare i log, è possibile esaminare la documentazione del pacchetto di @azure/logger.
Azure SDK for JavaScript