Klientská knihovna REST Azure DocumentIntelligence (dříve FormRecognizer) pro JavaScript – verze 1.0.0-beta.2

Extrahuje z dokumentů obsah, rozložení a strukturovaná data.

Při používání této knihovny se velmi spoléhejte na naši dokumentaci ke klientům REST .

POZNÁMKA: Rozpoznávání formulářů se přejmenovala na Funkce dokumentů. Projděte si průvodce migrací z @azure/ai-form-recognizer do @azure-rest/ai-document-intelligence.

Klíčové odkazy:

Tato verze klientské knihovny je výchozí "2024-02-29-preview" verzí služby.

Tato tabulka ukazuje vztah mezi verzemi sady SDK a podporovanými verzemi rozhraní API služby:

SDK version (Verze sady SDK) Podporovaná verze služby rozhraní API
1.0.0-beta.2 2024-02-29-preview
1.0.0-beta.1 2023-10-31-preview

Pro vyřazené modely, jako "prebuilt-businessCard" jsou a "prebuilt-document", využijte starší @azure/ai-form-recognizer knihovnu prostřednictvím starších verzí rozhraní API služby. Další informace najdete v tématu Protokol změn.

Následující tabulka popisuje vztah jednotlivých klientů a podporované verze rozhraní API:

Verze rozhraní API služby Podporovaní klienti Balíček
2024-02-29-preview DocumentIntelligenceClient @azure-rest/ai-document-intelligence Verze 1.0.0-beta.2
2023-10-31-preview DocumentIntelligenceClient @azure-rest/ai-document-intelligence Verze 1.0.0-beta.1
2023-07-31 DocumentAnalysisClient a DocumentModelAdministrationClient @azure/ai-form-recognizer Verze ^5.0.0
2022-08-01 DocumentAnalysisClient a DocumentModelAdministrationClient @azure/ai-form-recognizer Verze ^4.0.0

Začínáme

Aktuálně podporovaná prostředí

  • LtS verze Node.js

Požadavky

Nainstalujte balíček @azure-rest/ai-document-intelligence.

Nainstalujte klientskou knihovnu REST REST Azure DocumentIntelligence(dříveFormRecognizer) pro JavaScript pomocí npmpříkazu :

npm install @azure-rest/ai-document-intelligence

Vytvoření a ověření DocumentIntelligenceClient

Pokud chcete použít přihlašovací údaje tokenu Azure Active Directory (AAD), zadejte instanci požadovaného typu přihlašovacích údajů získané z knihovny @azure/identity .

Abyste se mohli ověřit pomocí AAD, musíte nejdřív npm nainstalovat. @azure/identity

Po nastavení můžete zvolit, jaký typ přihlašovacích údajů@azure/identity se má použít. Jako příklad lze k ověření klienta použít DefaultAzureCredential .

Nastavte hodnoty ID klienta, ID tenanta a tajného klíče klienta aplikace AAD jako proměnné prostředí: AZURE_CLIENT_ID, AZURE_TENANT_ID AZURE_CLIENT_SECRET

Použití přihlašovacích údajů tokenu

import DocumentIntelligence from "@azure-rest/ai-document-intelligence";

const client = DocumentIntelligence(
  process.env["DOCUMENT_INTELLIGENCE_ENDPOINT"],
  new DefaultAzureCredential()
);

Použití klíče rozhraní API

import DocumentIntelligence from "@azure-rest/ai-document-intelligence";

const client = DocumentIntelligence(process.env["DOCUMENT_INTELLIGENCE_ENDPOINT"], {
  key: process.env["DOCUMENT_INTELLIGENCE_API_KEY"],
});

Modely dokumentů

Analýza předem připraveného rozložení (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" },
  });

Analýza předem připraveného rozložení (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" },
  });

Pokračovat ve vytváření poller z počáteční odpovědi

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'
//   }
// }

Formát obsahu Markdownu

Podporuje výstup s formátem obsahu Markdown spolu s výchozím prostým textem. Prozatím je to podporováno pouze pro "předem připravené rozložení". Formát obsahu Markdown se považuje za přívětivější formát pro využívání LLM ve scénáři chatu nebo použití automatizace.

Služba se řídí specifikací GFM (GitHub Flavored Markdown) pro formát Markdown. Také zavádí novou vlastnost contentFormat s hodnotou "text" nebo "markdown" označující výsledný formát obsahu.

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
  });

Pole dotazu

Po zadání tohoto příznaku funkce služba dále extrahuje hodnoty polí zadaných prostřednictvím parametru dotazu queryFields, aby doplnila všechna existující pole definovaná modelem jako záložní.

await client.path("/documentModels/{modelId}:analyze", "prebuilt-layout").post({
  contentType: "application/json",
  body: { urlSource: "..." },
  queryParameters: {
    features: ["queryFields"],
    queryFields: ["NumberOfGuests", "StoreNumber"],
  }, // <-- new query parameter
});

Možnosti rozdělení

V předchozích verzích rozhraní API podporovaných starší @azure/ai-form-recognizer knihovnou se operace rozdělení a klasifikace dokumentů ("/documentClassifiers/{classifierId}:analyze") vždy snažila rozdělit vstupní soubor do více dokumentů.

Aby bylo možné používat širší sadu scénářů, služba zavádí parametr rozděleného dotazu s novou verzí služby "2023-10-31-preview". Podporují se následující hodnoty:

  • split: "auto"

    Nechte službu určit, kam se má rozdělit.

  • split: "none"

    Celý soubor je považován za jeden dokument. Neprovádí se žádné rozdělení.

  • split: "perPage"

    Každá stránka je považována za samostatný dokument. Každá prázdná stránka se zachová jako vlastní dokument.

#Build klasifikátorů dokumentů

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'
//  }

Získat informace

const response = await client.path("/info").get();
if (isUnexpected(response)) {
  throw response.body.error;
}
console.log(response.body.customDocumentModels.limit);
// 20000

Výpis modelů dokumentů

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);
}

Poradce při potížích

protokolování

Povolení protokolování může pomoct odhalit užitečné informace o selháních. Pokud chcete zobrazit protokol požadavků a odpovědí HTTP, nastavte proměnnou AZURE_LOG_LEVEL prostředí na info. Případně je možné protokolování povolit za běhu voláním setLogLevel v :@azure/logger

const { setLogLevel } = require("@azure/logger");

setLogLevel("info");

Podrobnější pokyny k povolení protokolů najdete v dokumentaci k balíčkům @azure/protokolovacího nástroje.