Quickstart: Form Recognizer JavaScript-clientbibliotheek SDK's v3.0 | Voorbeeld

Notitie

Form Recognizer versie 3.0 is momenteel beschikbaar als openbare preview. Sommige functies worden mogelijk niet ondersteund of hebben beperkte mogelijkheden.

Referentiedocumentatie | Broncode van bibliotheek | Pakket (NuGet) | Voorbeelden

Ga aan de slag met Azure Form Recognizer de JavaScript-programmeertaal. Azure Form Recognizer is een cloudgebaseerde, door Azure toegepaste AI-service die gebruikmaakt van machine learning voor het extraheren en analyseren van formuliervelden, tekst en tabellen uit uw documenten. U kunt eenvoudig de Form Recognizer aanroepen door onze clientbibliotheek-SDK's te integreren in uw werkstromen en toepassingen. U wordt aangeraden de gratis service te gebruiken wanneer u de technologie leert. Houd er rekening mee dat het aantal gratis pagina's beperkt is tot 500 per maand.

Ga naar onze overzichtspagina Form Recognizer meer informatie over de functies en ontwikkelingsopties.

In deze quickstart gebruikt u de volgende functies om gegevens en waarden uit formulieren en documenten te analyseren en te extraheren:

  • 🆕 document :tekst, tabellen, structuur, sleutel-waardeparen en benoemde entiteiten analyseren en extraheren.

  • Indeling:tabellen, lijnen, woorden en selectiemarkeringen zoals keuzerondjes en selectievakjes in formulierendocumenten analyseren en extraheren, zonder dat u een model hoeft te trainen.

  • Vooraf gebouwde factuur Algemene velden analyseren en extraheren uit facturen met behulp van een vooraf getraind factuurmodel.

Vereisten

  • Azure-abonnement: Maak een gratis abonnement aan.

  • De nieuwste versie van Visual Studio Code of uw favoriete IDE.

  • De nieuwste LTS-versie vanNode.js

  • Een Cognitive Services of Form Recognizer resource. Zodra u uw Azure-abonnement hebt, maakt u een Form Recognizer-resource met één service of meerdere Azure Portal om uw sleutel en eindpunt op te halen. U kunt de gratis prijscategorie (F0) gebruiken om de service uit te proberen, en later upgraden naar een betaalde laag voor productie.

    Tip

    Maak een Cognitive Services als u van plan bent toegang te krijgen tot meerdere cognitieve services onder één eindpunt/sleutel. Als Form Recognizer alleen toegang hebt, maakt u een Form Recognizer resource. Houd er rekening mee dat u een resource voor één service nodig hebt als u van plan bent om Azure Active Directory gebruiken.

  • Nadat uw resource is geïmplementeerd, selecteert u Ga naar resource. U hebt de sleutel en het eindpunt nodig van de resource die u maakt om uw toepassing te verbinden met Form Recognizer API. U plakt uw sleutel en eindpunt later in de onderstaande code in de quickstart:

    Schermopname: sleutels en eindpuntlocatie in de Azure Portal.

Instellen

  1. Maak een nieuwe Node.js toepassing. Maak in een consolevenster (zoals cmd, PowerShell of Bash) een nieuwe map voor de app, en navigeer naar deze map.

    mkdir form-recognizer-app && cd form-recognizer-app
    
  2. Voer de opdracht npm init uit om een knooppunttoepassing te maken met een package.json-bestand.

    npm init
    
  3. Installeer het ai-form-recognizer npm-pakket van de clientbibliotheek:

    npm install @azure/ai-form-recognizer@4.0.0-beta.1 @azure/identity
    
    • Het package.json-bestand van uw app wordt bijgewerkt met de afhankelijkheden.
  4. Maak een bestand met de index.js naam , open het en voeg de volgende bibliotheken toe:

    const { AzureKeyCredential, DocumentAnalysisClient } = require("@azure/ai-form-recognizer");
    
  5. Maak variabelen voor het Azure-eindpunt en de Azure-sleutel van uw resource:

    const apiKey = "PASTE_YOUR_FORM_RECOGNIZER_SUBSCRIPTION_KEY_HERE";
    const endpoint = "PASTE_YOUR_FORM_RECOGNIZER_ENDPOINT_HERE";
    

Op dit moment moet uw JavaScript-toepassing de volgende regels code bevatten:

const { AzureKeyCredential, DocumentAnalysisClient } = require("@azure/ai-form-recognizer");

const endpoint = "PASTE_YOUR_FORM_RECOGNIZER_ENDPOINT_HERE";
const apiKey = "PASTE_YOUR_FORM_RECOGNIZER_SUBSCRIPTION_KEY_HERE";

Selecteer een codevoorbeeld dat u in uw toepassing wilt kopiëren en plakken:

Belangrijk

Vergeet niet de sleutel uit uw code te verwijderen wanneer u klaar bent, en plaats deze sleutel nooit in het openbaar. Gebruik voor productie beveiligde methoden om uw referenties op te slaan en te openen. Zie ons artikel Cognitive Services beveiliging voor meer informatie.

Probeer het: Algemeen documentmodel

  • Voor dit voorbeeld hebt u een formulierdocumentbestand op een URI nodig. U kunt ons voorbeeldformulierdocument gebruiken voor deze quickstart.
  • Als u een bepaald bestand op een URI wilt analyseren, gebruikt u de beginExtractGenericDocument methode .
  • We hebben de bestands-URI-waarde toegevoegd aan de formUrl variabele bovenaan het bestand.
  • Zie de pagina Algemeen documentconcept voor een overzicht van alle ondersteunde velden en bijbehorende typen.

Voeg de volgende code toe aan uw algemene documenttoepassing op de regel onder de apiKey variabele


const formUrl = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-REST-api-samples/master/curl/form-recognizer/sample-layout.pdf"

async function main() {
    const client = new DocumentAnalysisClient(endpoint, new DefaultAzureCredential(apiKey));

    const poller = await client.beginExtractGenericDocument(formUrl);

    const {
        keyValuePairs,
        entities
    } = await poller.pollUntilDone();

    if (keyValuePairs.length <= 0) {
        console.log("No key-value pairs were extracted from the document.");
    } else {
        console.log("Key-Value Pairs:");
        for (const {
                key,
                value,
                confidence
            } of keyValuePairs) {
            console.log("- Key  :", `"${key.content}"`);
            console.log("  Value:", `"${value?.content ?? "<undefined>"}" (${confidence})`);
        }
    }

    if (entities.length <= 0) {
        console.log("No entities were extracted from the document.");
    } else {
        console.log("Entities:");
        for (const entity of entities) {
            console.log(
                `- "${entity.content}" ${entity.category} - ${entity.subCategory ?? "<none>"} (${
          entity.confidence
        })`
            );
        }
    }
}

main().catch((error) => {
    console.error("An error occurred:", error);
    process.exit(1);
});

Probeer het: Indelingsmodel

  • Voor dit voorbeeld hebt u een formulierdocumentbestand op een URI nodig. U kunt ons voorbeeldformulierdocument gebruiken voor deze quickstart.
  • We hebben de bestands-URI-waarde toegevoegd aan de formUrl variabele bovenaan het bestand.
  • Als u een bepaald bestand op een URI wilt analyseren, gebruikt u de beginExtractLayout methode .

Voeg de volgende code toe aan uw indelingstoepassing op de regel onder de apiKey variabele


const formUrl = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-REST-api-samples/master/curl/form-recognizer/sample-layout.pdf"

async function main() {
    const client = new DocumentAnalysisClient(endpoint, new AzureKeyCredential(apiKey));

    const poller = await client.beginExtractLayout(formUrl);

    const {
        pages,
        tables
    } = await poller.pollUntilDone();

    if (pages.length <= 0) {
        console.log("No pages were extracted from the document.");
    } else {
        console.log("Pages:");
        for (const page of pages) {
            console.log("- Page", page.pageNumber, `(unit: ${page.unit})`);
            console.log(`  ${page.width}x${page.height}, angle: ${page.angle}`);
            console.log(`  ${page.lines.length} lines, ${page.words.length} words`);
        }
    }

    if (tables.length <= 0) {
        console.log("No tables were extracted from the document.");
    } else {
        console.log("Tables:");
        for (const table of tables) {
            console.log(
                `- Extracted table: ${table.columnCount} columns, ${table.rowCount} rows (${table.cells.length} cells)`
            );
        }
    }
}

main().catch((error) => {
    console.error("An error occurred:", error);
    process.exit(1);
});

Probeer het: Vooraf gebouwd model

In dit voorbeeld wordt gedemonstreerd hoe u gegevens van bepaalde algemene documenttypen kunt analyseren met een vooraf getraind model, met behulp van een factuur als voorbeeld.

  • In dit voorbeeld analyseren we een factuurdocument met behulp van een vooraf gebouwd model. U kunt ons voorbeeld van een factuurdocument gebruiken voor deze quickstart.
  • We hebben de bestands-URI-waarde toegevoegd aan de invoiceUrl variabele bovenaan het bestand.
  • Als u een bepaald bestand op een URI wilt analyseren, gebruikt u de beginAnalyzeDocuments methode en door te geven als de PrebuiltModels.Invoice model-id. De geretourneerde waarde is result een object met gegevens over het ingediende document.
  • Ter vereenvoudiging worden alle sleutel-waardeparen die de service retourneert, hier niet weergegeven. Zie onze pagina Factuurconcept voor een overzicht van alle ondersteunde velden en bijbehorende typen.

De vooraf gebouwde model-id voor facturen kiezen

U bent niet beperkt tot facturen: er zijn verschillende vooraf gebouwde modellen waaruit u kunt kiezen, die elk een eigen set ondersteunde velden hebben. Het model dat voor de analysebewerking moet worden gebruikt, is afhankelijk van het type document dat moet worden geanalyseerd. Dit zijn de model-ID's voor de vooraf gebouwde modellen die momenteel worden ondersteund door de Form Recognizer service:

Voeg de volgende code toe aan uw vooraf gebouwde factuurtoepassing onder de apiKey variabele


const {PreBuiltModels} = require("@azure/ai-form-recognizer");

// Use of PrebuiltModels.Receipt above (rather than the raw model ID), adds strong typing of the model's output

const invoiceUrl = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-REST-api-samples/master/curl/form-recognizer/sample-invoice.pdf";

async function main() {

    const client = new DocumentAnalysisClient(endpoint, new AzureKeyCredential(apiKey));

    const poller = await client.beginAnalyzeDocuments(PrebuiltModels.Invoice, invoiceUrl);

    const {
        documents: [result]
    } = await poller.pollUntilDone();

    if (result) {
        const invoice = result.fields;

        console.log("Vendor Name:", invoice.vendorName?.value);
        console.log("Customer Name:", invoice.customerName?.value);
        console.log("Invoice Date:", invoice.invoiceDate?.value);
        console.log("Due Date:", invoice.dueDate?.value);

        console.log("Items:");
        for (const {
                properties: item
            } of invoice.items?.values ?? []) {
            console.log("-", item.productCode?.value ?? "<no product code>");
            console.log("  Description:", item.description?.value);
            console.log("  Quantity:", item.quantity?.value);
            console.log("  Date:", item.date?.value);
            console.log("  Unit:", item.unit?.value);
            console.log("  Unit Price:", item.unitPrice?.value);
            console.log("  Tax:", item.tax?.value);
            console.log("  Amount:", item.amount?.value);
        }

        console.log("Subtotal:", invoice.subTotal?.value);
        console.log("Previous Unpaid Balance:", invoice.previousUnpaidBalance?.value);
        console.log("Tax:", invoice.totalTax?.value);
        console.log("Amount Due:", invoice.amountDue?.value);
    } else {
        throw new Error("Expected at least one receipt in the result.");
    }
}

main().catch((error) => {
    console.error("An error occurred:", error);
    process.exit(1);
});

Uw toepassing uitvoeren

  1. Navigeer naar de map waar u uw toepassing voor formulier-herkennen (form-recognizer-app) hebt.

  2. Typ de volgende opdracht in uw terminal:

node index.js

Gefeliciteerd In deze quickstart hebt u de javascript Form Recognizer-SDK gebruikt om verschillende formulieren op verschillende manieren te analyseren. Bekijk vervolgens de referentiedocumentatie voor meer informatie over Form Recognizer v3.0 API.

Volgende stappen