Bibliothèque de client REST Azure DocumentIntelligence (anciennement FormRecognizer) pour JavaScript - version 1.0.0-beta.2
Extrait le contenu, la disposition et les données structurées des documents.
S’il vous plaît s’appuyer largement sur nos documents clients REST pour utiliser cette bibliothèque
REMARQUE : Form Recognizer a été renommé Document Intelligence. Veuillez case activée le Guide de migration de
@azure/ai-form-recognizer
à@azure-rest/ai-document-intelligence
.
Liens clés :
- Code source
- Package (NPM)
- Documentation de référence de l’API
- Exemples
- Journal des modifications
- Guide de migration à partir de Form Recognizer
Cette version de la bibliothèque cliente utilise par défaut la
"2024-02-29-preview"
version du service.
Ce tableau montre la relation entre les versions du kit de développement logiciel (SDK) et les versions d’API prises en charge du service :
Version du SDK | Version d’API prise en charge du service |
---|---|
1.0.0-beta.2 | 2024-02-29-preview |
1.0.0-beta.1 | 2023-10-31-preview |
Appuyez-vous sur l’ancienne
@azure/ai-form-recognizer
bibliothèque via les anciennes versions de l’API de service pour les modèles mis hors service, tels que"prebuilt-businessCard"
et"prebuilt-document"
. Pour plus d’informations, consultez Journal des modifications.
Le tableau ci-dessous décrit la relation entre chaque client et ses versions d’API prises en charge :
Version de l’API de service | Clients pris en charge | Paquet |
---|---|---|
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 et DocumentModelAdministrationClient | @azure/ai-form-recognizer version ^5.0.0 |
2022-08-01 | DocumentAnalysisClient et DocumentModelAdministrationClient | @azure/ai-form-recognizer version ^4.0.0 |
Prise en main
Environnements actuellement pris en charge
- Versions LTS de Node.js
Prérequis
- Vous devez disposer d’un abonnement Azure pour utiliser ce package.
Installez le package @azure-rest/ai-document-intelligence
Installez la bibliothèque de client REST du client REST Azure DocumentIntelligence(anciennementFormRecognizer) pour JavaScript avec npm
:
npm install @azure-rest/ai-document-intelligence
Créez et authentifiez unDocumentIntelligenceClient
Pour utiliser des informations d’identification de jeton Azure Active Directory (AAD), fournissez une instance du type d’informations d’identification souhaité obtenu à partir de la bibliothèque @azure/identité.
Pour vous authentifier auprès d’AAD, vous devez d’abord npm
installer @azure/identity
Après l’installation, vous pouvez choisir le type d’informations d’identification@azure/identity
à utiliser.
Par exemple, DefaultAzureCredential peut être utilisé pour authentifier le client.
Définissez les valeurs de l’ID client, de l’ID de locataire et de la clé secrète client de l’application AAD en tant que variables d’environnement : AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_CLIENT_SECRET
Utilisation d’informations d’identification de jeton
import DocumentIntelligence from "@azure-rest/ai-document-intelligence";
const client = DocumentIntelligence(
process.env["DOCUMENT_INTELLIGENCE_ENDPOINT"],
new DefaultAzureCredential()
);
Utilisation d’une clé API
import DocumentIntelligence from "@azure-rest/ai-document-intelligence";
const client = DocumentIntelligence(process.env["DOCUMENT_INTELLIGENCE_ENDPOINT"], {
key: process.env["DOCUMENT_INTELLIGENCE_API_KEY"],
});
Modèles de document
Analyser la disposition prédéfinie (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" },
});
Analyser la disposition prédéfinie (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" },
});
Continuer à créer l’polleur à partir de la réponse initiale
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'
// }
// }
Format de contenu Markdown
Prend en charge la sortie avec le format de contenu Markdown avec le texte brut par défaut. Pour l’instant, cette option est uniquement prise en charge pour la « disposition prédéfinie ». Le format de contenu Markdown est considéré comme un format plus convivial pour la consommation LLM dans un scénario d’utilisation de conversation ou d’automatisation.
Le service suit la spécification GFM (GitHub Flavored Markdown) pour le format Markdown. Introduit également une nouvelle propriété contentFormat avec la valeur « text » ou « markdown » pour indiquer le format de contenu du résultat.
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
});
Champs de requête
Lorsque cet indicateur de fonctionnalité est spécifié, le service extrait davantage les valeurs des champs spécifiés via le paramètre de requête queryFields pour compléter tous les champs existants définis par le modèle comme secours.
await client.path("/documentModels/{modelId}:analyze", "prebuilt-layout").post({
contentType: "application/json",
body: { urlSource: "..." },
queryParameters: {
features: ["queryFields"],
queryFields: ["NumberOfGuests", "StoreNumber"],
}, // <-- new query parameter
});
Options de fractionnement
Dans les versions précédentes de l’API prises en charge par l’ancienne @azure/ai-form-recognizer
bibliothèque, l’opération de division et de classification des documents ("/documentClassifiers/{classifierId}:analyze"
) a toujours essayé de fractionner le fichier d’entrée en plusieurs documents.
Pour activer un ensemble plus large de scénarios, le service introduit un paramètre de requête « fractionné » avec la nouvelle version du service « 2023-10-31-preview ». Les valeurs suivantes sont admises :
split: "auto"
Laissez le service déterminer où se fractionner.
split: "none"
Le fichier entier est traité comme un seul document. Aucun fractionnement n’est effectué.
split: "perPage"
Chaque page est traitée comme un document distinct. Chaque page vide est conservée comme son propre document.
Classifieurs de documents #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'
// }
Obtenir des informations
const response = await client.path("/info").get();
if (isUnexpected(response)) {
throw response.body.error;
}
console.log(response.body.customDocumentModels.limit);
// 20000
Répertorier les modèles de document
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);
}
Résolution des problèmes
Journalisation
L’activation de la journalisation peut vous aider à mieux comprendre les échecs. Pour avoir un journal des requêtes et réponses HTTP, définissez la variable d’environnement AZURE_LOG_LEVEL
sur info
. Vous pouvez également activer la journalisation au moment de l’exécution en appelant setLogLevel
dans @azure/logger
:
const { setLogLevel } = require("@azure/logger");
setLogLevel("info");
Pour obtenir des instructions plus détaillées sur l’activation des journaux, consultez les documents relatifs au package @azure/logger.
Azure SDK for JavaScript