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:

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

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.