Biblioteka klienta REST usługi Azure DocumentIntelligence (dawniej FormRecognizer) dla języka JavaScript — wersja 1.0.0-beta.2
Wyodrębnia zawartość, układ i dane ustrukturyzowane z dokumentów.
Skorzystaj z tej biblioteki w dużej mierze na naszych dokumentach klienta REST
UWAGA: Form Recognizer została zmieniona na analizę dokumentów. Sprawdź przewodnik migracji z
@azure/ai-form-recognizer
do@azure-rest/ai-document-intelligence
.
Kluczowe linki:
- Kod źródłowy
- Pakiet (NPM)
- Dokumentacja referencyjna interfejsu API
- Samples
- Dziennik zmian
- Przewodnik migracji z Form Recognizer
Ta wersja biblioteki klienta jest domyślnie ustawiona na
"2024-02-29-preview"
wersję usługi.
W tej tabeli przedstawiono relację między wersjami zestawu SDK i obsługiwanymi wersjami interfejsu API usługi:
Wersja zestawu SDK | Obsługiwana wersja usługi interfejsu API |
---|---|
1.0.0-beta.2 | 2024-02-29-preview |
1.0.0-beta.1 | 2023-10-31-preview |
Skorzystaj ze starszej biblioteki za pośrednictwem starszych
@azure/ai-form-recognizer
wersji interfejsu API usługi dla wycofanych modeli, takich jak"prebuilt-businessCard"
i"prebuilt-document"
. Aby uzyskać więcej informacji, zobacz Dziennik zmian.
W poniższej tabeli opisano relację poszczególnych klientów i obsługiwanych wersji interfejsu API:
Wersja interfejsu API usługi | Obsługiwani klienci | Pakiet |
---|---|---|
2024-02-29-preview | DocumentIntelligenceClient | @azure-rest/ai-document-intelligence Wersja 1.0.0-beta.2 |
2023-10-31-preview | DocumentIntelligenceClient | @azure-rest/ai-document-intelligence Wersja 1.0.0-beta.1 |
2023-07-31 | DocumentAnalysisClient i DocumentModelAdministrationClient | @azure/ai-form-recognizer Wersja ^5.0.0 |
2022-08-01 | DocumentAnalysisClient i DocumentModelAdministrationClient | @azure/ai-form-recognizer Wersja ^4.0.0 |
Wprowadzenie
Obecnie obsługiwane środowiska
- Wersje ltS Node.js
Wymagania wstępne
- Aby użyć tego pakietu, musisz mieć subskrypcję platformy Azure .
Instalowanie pakietu @azure-rest/ai-document-intelligence
Zainstaluj bibliotekę klienta REST klienta REST usługi Azure DocumentIntelligence(dawniejFormRecognizer) dla języka JavaScript przy użyciu polecenia npm
:
npm install @azure-rest/ai-document-intelligence
Tworzenie i uwierzytelnianie DocumentIntelligenceClient
Aby użyć poświadczeń tokenu usługi Azure Active Directory (AAD), podaj wystąpienie żądanego typu poświadczeń uzyskanego z biblioteki @azure/tożsamości .
Aby uwierzytelnić się za pomocą usługi AAD, należy najpierw npm
zainstalować @azure/identity
Po skonfigurowaniu można wybrać typ poświadczeń@azure/identity
do użycia.
Na przykład wartość DefaultAzureCredential może służyć do uwierzytelniania klienta.
Ustaw wartości identyfikatora klienta, identyfikatora dzierżawy i wpisu tajnego klienta aplikacji usługi AAD jako zmienne środowiskowe: AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_CLIENT_SECRET
Używanie poświadczeń tokenu
import DocumentIntelligence from "@azure-rest/ai-document-intelligence";
const client = DocumentIntelligence(
process.env["DOCUMENT_INTELLIGENCE_ENDPOINT"],
new DefaultAzureCredential()
);
Używanie klucza interfejsu API
import DocumentIntelligence from "@azure-rest/ai-document-intelligence";
const client = DocumentIntelligence(process.env["DOCUMENT_INTELLIGENCE_ENDPOINT"], {
key: process.env["DOCUMENT_INTELLIGENCE_API_KEY"],
});
Modele dokumentów
Analizowanie wstępnie utworzonego układu (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" },
});
Analizowanie wstępnie utworzonego układu (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" },
});
Kontynuuj tworzenie elementu poller na podstawie początkowej odpowiedzi
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 zawartości języka Markdown
Obsługuje dane wyjściowe z formatem zawartości języka Markdown wraz z domyślnym tekstem zwykłym. Na razie jest to obsługiwane tylko w przypadku "wstępnie utworzonego układu". Format zawartości języka Markdown jest uznawany za bardziej przyjazny dla użycia usługi LLM w scenariuszu użycia czatu lub automatyzacji.
Usługa jest zgodna ze specyfikacją GFM (GitHub Flavored Markdown) dla formatu Markdown. Wprowadzono również nową właściwość contentFormat z wartością "text" lub "markdown", aby wskazać format zawartości wynikowej.
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
});
Pola zapytania
Po określeniu tej flagi funkcji usługa będzie dodatkowo wyodrębniać wartości pól określonych za pośrednictwem parametru zapytania QueryFields w celu uzupełnienia wszystkich istniejących pól zdefiniowanych przez model jako rezerwowy.
await client.path("/documentModels/{modelId}:analyze", "prebuilt-layout").post({
contentType: "application/json",
body: { urlSource: "..." },
queryParameters: {
features: ["queryFields"],
queryFields: ["NumberOfGuests", "StoreNumber"],
}, // <-- new query parameter
});
Opcje podziału
W poprzednich wersjach interfejsu API obsługiwanych przez starszą @azure/ai-form-recognizer
bibliotekę operacja dzielenia dokumentów i klasyfikacji ("/documentClassifiers/{classifierId}:analyze"
) zawsze próbowała podzielić plik wejściowy na wiele dokumentów.
Aby włączyć szerszy zestaw scenariuszy, usługa wprowadza parametr zapytania "split" z nową wersją usługi "2023-10-31-preview". Obsługiwane są następujące wartości:
split: "auto"
Pozwól usłudze określić, gdzie należy podzielić.
split: "none"
Cały plik jest traktowany jako pojedynczy dokument. Nie jest wykonywane dzielenie.
split: "perPage"
Każda strona jest traktowana jako oddzielny dokument. Każda pusta strona jest przechowywana jako własny dokument.
Klasyfikatory dokumentów #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'
// }
Pobieranie informacji
const response = await client.path("/info").get();
if (isUnexpected(response)) {
throw response.body.error;
}
console.log(response.body.customDocumentModels.limit);
// 20000
Wyświetlanie listy modeli dokumentów
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);
}
Rozwiązywanie problemów
Rejestrowanie
Włączenie rejestrowania może pomóc odkryć przydatne informacje o błędach. Aby wyświetlić dziennik żądań HTTP i odpowiedzi, ustaw zmienną AZURE_LOG_LEVEL
środowiskową na info
. Możesz też włączyć rejestrowanie w czasie wykonywania, wywołując polecenie w elemecie setLogLevel
@azure/logger
:
const { setLogLevel } = require("@azure/logger");
setLogLevel("info");
Aby uzyskać bardziej szczegółowe instrukcje dotyczące włączania dzienników, zapoznaj się z dokumentami dotyczącymi pakietu @azure/rejestratora.
Azure SDK for JavaScript