Aracılığıyla paylaş


JavaScript için Azure DocumentIntelligence (eski adıyla FormRecognizer) REST istemci kitaplığı - sürüm 1.0.0-beta.2

Belgelerden içerik, düzen ve yapılandırılmış verileri ayıklar.

Lütfen bu kitaplığı kullanmak için REST istemci belgelerimize yoğun bir şekilde güvenin

NOT: Form Tanıma Belge Zekası olarak yeniden markalanmıştır. Geçiş Kılavuzu'nu 'dan'a @azure/ai-form-recognizer@azure-rest/ai-document-intelligencedenetleyin.

Önemli bağlantılar:

İstemci kitaplığının bu sürümü varsayılan olarak "2024-02-29-preview" hizmetin sürümüne ayarlanır.

Bu tabloda, SDK sürümleri ile hizmetin desteklenen API sürümleri arasındaki ilişki gösterilmektedir:

SDK sürümü Hizmetin desteklenen API sürümü
1.0.0-beta.2 2024-02-29-önizleme
1.0.0-beta.1 2023-10-31-önizleme

Ve "prebuilt-document"gibi "prebuilt-businessCard" kullanımdan kaldırılacak modeller için lütfen eski @azure/ai-form-recognizer hizmet API'si sürümleri aracılığıyla eski kitaplığı kullanın. Daha fazla bilgi için bkz . Changelog.

Aşağıdaki tabloda her istemcinin ve desteklenen API sürümlerinin ilişkisi açıklanmaktadır:

Hizmet API'si sürümü Desteklenen istemciler Paket
2024-02-29-önizleme DocumentIntelligenceClient @azure-rest/ai-document-intelligence Sürüm 1.0.0-beta.2
2023-10-31-önizleme DocumentIntelligenceClient @azure-rest/ai-document-intelligence Sürüm 1.0.0-beta.1
2023-07-31 DocumentAnalysisClient ve DocumentModelAdministrationClient @azure/ai-form-recognizer Sürüm ^5.0.0
2022-08-01 DocumentAnalysisClient ve DocumentModelAdministrationClient @azure/ai-form-recognizer Sürüm ^4.0.0

Başlarken

Şu anda desteklenen ortamlar

  • Node.js LTS sürümleri

Önkoşullar

@azure-rest/ai-document-intelligence paketini yükleyin

ile npmJavaScript için Azure DocumentIntelligence(eski adıFormRecognizer) REST istemcisi REST istemci kitaplığını yükleyin:

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

Oluşturma ve kimlik doğrulaması DocumentIntelligenceClient

Azure Active Directory (AAD) belirteci kimlik bilgilerini kullanmak için, @azure/kimlik kitaplığından elde edilen istenen kimlik bilgisi türünün bir örneğini sağlayın.

AAD ile kimlik doğrulaması yapmak için önce npm@azure/identity

Kurulumdan sonra, hangi kimlik bilgisi@azure/identity türünü kullanacağınızı seçebilirsiniz. Örnek olarak, istemcinin kimliğini doğrulamak için DefaultAzureCredential kullanılabilir.

AAD uygulamasının istemci kimliği, kiracı kimliği ve istemci gizli dizisi değerlerini ortam değişkenleri olarak ayarlayın: AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_CLIENT_SECRET

Belirteç Kimlik Bilgisi Kullanma

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

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

API KEY kullanma

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

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

Belge Modelleri

Önceden oluşturulmuş düzeni analiz etme (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" },
  });

Önceden oluşturulmuş düzeni analiz etme (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" },
  });

İlk yanıttan poller oluşturmaya devam edin

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 içerik biçimi

Varsayılan düz metinle birlikte Markdown içerik biçimiyle çıkışı destekler. Şimdilik bu yalnızca "önceden oluşturulmuş düzen" için desteklenmektedir. Markdown içerik biçimi, sohbet veya otomasyon kullanım senaryosunda LLM kullanımı için daha kolay bir biçim olarak kabul edilir.

Hizmet, Markdown biçimi için GFM belirtimini (GitHub Flavored Markdown) izler. Sonuç içerik biçimini belirtmek için "text" veya "markdown" değerine sahip yeni bir contentFormat özelliği de sunar.

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

Sorgu Alanları

Bu özellik bayrağı belirtildiğinde, hizmet model tarafından geri dönüş olarak tanımlanan mevcut alanları desteklemek için queryFields sorgu parametresi aracılığıyla belirtilen alanların değerlerini daha fazla ayıklar.

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

Bölme Seçenekleri

Eski @azure/ai-form-recognizer kitaplık tarafından desteklenen önceki API sürümlerinde, belge bölme ve sınıflandırma işlemi ("/documentClassifiers/{classifierId}:analyze") her zaman giriş dosyasını birden çok belgeye bölmeyi denedi.

Daha geniş bir senaryo kümesini etkinleştirmek için hizmet, yeni "2023-10-31-preview" hizmet sürümüyle bir "bölünmüş" sorgu parametresi sunar. Aşağıdaki değerler desteklenir:

  • split: "auto"

    Hizmetin bölüneceği yeri belirlemesine izin verin.

  • split: "none"

    Dosyanın tamamı tek bir belge olarak kabul edilir. Bölme işlemi yapılmaz.

  • split: "perPage"

    Her sayfa ayrı bir belge olarak kabul edilir. Her boş sayfa kendi belgesi olarak tutulur.

Belge Sınıflandırıcıları #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'
//  }

Bilgi Al

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

Belge Modellerini Listele

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

Sorun giderme

Günlüğe Kaydetme

Günlüğün etkinleştirilmesi hatalarla ilgili yararlı bilgilerin ortaya çıkarılmasına yardımcı olabilir. HTTP isteklerinin ve yanıtlarının günlüğünü görmek için ortam değişkenini AZURE_LOG_LEVEL olarak infoayarlayın. Alternatif olarak, günlüğü çalışma zamanında içinde çağrılarak setLogLevel@azure/loggeretkinleştirilebilir:

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

setLogLevel("info");

Günlükleri etkinleştirme hakkında daha ayrıntılı yönergeler için @azure/günlükçü paketi belgelerine bakabilirsiniz.