Delen via


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:

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

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.