Share via


Azure DocumentIntelligence (korábbi nevén FormRecognizer) REST-ügyfélkódtár JavaScripthez – 1.0.0-beta.2-es verzió

Tartalom, elrendezés és strukturált adatok kinyerése a dokumentumokból.

A kódtár használatához nagy mértékben támaszkodjon a REST-ügyfél dokumentációjára

MEGJEGYZÉS: Form Recognizer át lett alakítva a Dokumentumintelligencia szolgáltatásra. Ellenőrizze a migrálási útmutatót a-ról @azure/ai-form-recognizer a-ra @azure-rest/ai-document-intelligence.

Főbb hivatkozások:

Az ügyfélkódtár ezen verziója alapértelmezés szerint a "2024-02-29-preview" szolgáltatás verziójára van bekapcsolva.

Ez a táblázat a szolgáltatás SDK-verziói és támogatott API-verziói közötti kapcsolatot mutatja be:

SDK verziója A szolgáltatás támogatott API-verziója
1.0.0-beta.2 2024-02-29-preview
1.0.0-beta.1 2023-10-31-preview

Támaszkodjon a régebbi @azure/ai-form-recognizer kódtárra a régebbi szolgáltatási API-verziókon keresztül a kivezetett modellekhez, például "prebuilt-businessCard" a és "prebuilt-document"a verzióhoz. További információ: Változásnapló.

Az alábbi táblázat az egyes ügyfelek és a támogatott API-verzió(k) kapcsolatát ismerteti:

A Service API verziója Támogatott kliensek Csomag
2024-02-29-preview DocumentIntelligenceClient @azure-rest/ai-document-intelligence Változat 1.0.0-beta.2
2023-10-31-preview DocumentIntelligenceClient @azure-rest/ai-document-intelligence Változat 1.0.0-beta.1
2023-07-31 DocumentAnalysisClient és DocumentModelAdministrationClient @azure/ai-form-recognizer Változat ^5.0.0
2022-08-01 DocumentAnalysisClient és DocumentModelAdministrationClient @azure/ai-form-recognizer Változat ^4.0.0

Első lépések

Jelenleg támogatott környezetek

  • A Node.js LTS-verziói

Előfeltételek

Telepítse a(z) @azure-rest/ai-document-intelligence csomagot

Telepítse a JavaScripthez készült Azure DocumentIntelligence(korábbi nevénFormRecognizer) REST-ügyfél REST ügyféloldali kódtárát a következővel npm:

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

Hozzon létre és hitelesítsen egy DocumentIntelligenceClient

Az Azure Active Directory- (AAD-) jogkivonat hitelesítő adatainak használatához adja meg a kívánt hitelesítőadat-típus egy példányát a @azure/identitástárból.

Az AAD-vel való hitelesítéshez először npm telepítenie kell a @azure/identity

A beállítás után kiválaszthatja, hogy milyen típusú hitelesítő@azure/identity adatokat használjon. Példaként a DefaultAzureCredential használható az ügyfél hitelesítésére.

Állítsa be az AAD-alkalmazás ügyfél-azonosítójának, bérlőazonosítójának és titkos ügyfélkulcsának értékeit környezeti változókként: AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_CLIENT_SECRET

Jogkivonat hitelesítő adatainak használata

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

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

API-KULCS használata

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

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

Dokumentummodellek

Előre összeállított elrendezés elemzése (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" },
  });

Előre összeállított elrendezés elemzése (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" },
  });

A lekérdezés kezdeti válaszból történő létrehozásának folytatása

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-tartalomformátum

Támogatja a Markdown-tartalomformátumú kimenetet az alapértelmezett egyszerű szöveggel együtt. Ez egyelőre csak az "előre összeállított elrendezés" esetében támogatott. A Markdown-tartalomformátum az LLM-használat szempontjából barátságosabb formátum a csevegési vagy automatizálási használati forgatókönyvekben.

A szolgáltatás a GFM-specifikációt (GitHub Flavored Markdown) követi Markdown formátumban. Emellett egy új contentFormat tulajdonságot is bevezet a "text" vagy a "markdown" értékkel az eredmény tartalomformátumának jelzéséhez.

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

Lekérdezésmezők

Ha ez a funkciójelölő meg van adva, a szolgáltatás tovább kinyeri a queryFields lekérdezési paraméterrel megadott mezők értékeit, hogy kiegészítse a modell által tartalékként definiált meglévő mezőket.

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

Felosztási beállítások

A régebbi kódtár által támogatott korábbi @azure/ai-form-recognizer API-verziókban a dokumentumfelosztási és -besorolási művelet ("/documentClassifiers/{classifierId}:analyze") mindig több dokumentumra próbálta felosztani a bemeneti fájlt.

A forgatókönyvek szélesebb halmazának lehetővé tétele érdekében a szolgáltatás bevezet egy "split" lekérdezési paramétert az új "2023-10-31-preview" szolgáltatásverzióval. A következő értékek támogatottak:

  • split: "auto"

    A szolgáltatás határozza meg a felosztás helyét.

  • split: "none"

    A rendszer a teljes fájlt egyetlen dokumentumként kezeli. Nem történik felosztás.

  • split: "perPage"

    Minden lap külön dokumentumként lesz kezelve. Minden üres lap saját dokumentumként van tárolva.

Dokumentumosztályozók #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'
//  }

Információ lekérése

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

Dokumentummodellek listázása

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

Hibaelhárítás

Naplózás

A naplózás engedélyezése hasznos információkat deríthet fel a hibákról. A HTTP-kérések és -válaszok naplójának megtekintéséhez állítsa a környezeti változót értékre AZURE_LOG_LEVELinfo. A naplózás futásidőben is engedélyezhető a következő hívásával setLogLevel@azure/logger:

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

setLogLevel("info");

A naplók engedélyezésére vonatkozó részletesebb utasításokért tekintse meg a @azure/logger csomag dokumentációját.