UiPath Documentation
maestro
latest
false
Wichtig :
Es kann 1–2 Wochen dauern, bis die Lokalisierung neu veröffentlichter Inhalte verfügbar ist.

Benutzerhandbuch zu Maestro

Extrahieren

The Extract node pulls structured fields out of a document (an invoice, receipt, form, or contract) using a UiPath Intelligent eXtraction Platform (IXP) model, and returns the result for downstream nodes to act on. Use it when a step in your process needs typed data lifted out of an unstructured file.

Before you start: deploy an IXP model

The Extract node has no built-in extractor of its own. It surfaces the IXP models deployed in your organization, so you must deploy at least one IXP extraction model before any options appear under the node.

  • Build and deploy a model in IXP. Refer to the IXP documentation for more information.
  • The model must be deployed to a folder you can access. Models are listed by their fully qualified name, <Folder>/<ModelName> (for example, Shared/Finance/invoice-extraction).
  • If no model is deployed, the Extract category appears in the palette but is empty.

Your tenant must also have both IXP and Document Understanding services enabled (Admin → Tenant → Services). The Extract node depends on both being provisioned, even when you only use IXP models.

Wie es funktioniert

Extraction models load dynamically from your organization, the same way connector nodes load from Integration Service. In the node palette, deployed models appear under Document processing → Extract, each as its own node. Adding one to the canvas creates an Extract node bound to that specific model.

When the node runs, Flow sends the document to the IXP model, the model digitizes and extracts it, and the structured result returns on the node's output. Extraction runs asynchronously: the node waits for the model to finish before continuing, so allow time for large documents.

Konfiguration

Configure the Extract node in the properties panel after adding it to the canvas.

FeldErforderlichStandardBeschreibung
ModellJaSelected modelDeployed IXP model to run. This is set when you add the node from the palette, and the model's folder and version bind automatically.
DocumentJaKeineFile to extract from. Bind it to a file produced earlier in the flow, such as an attachment from a trigger or a prior node output.
Page rangeNeinLeerPages to extract from, for example 1-3. Leave it empty to process the whole document.

Ausgabe

The Extract node returns its result at $vars.<nodeName>.output.

VariableBeschreibung
outputExtraction result. Contains a single ExtractionResult object with document metadata, extracted fields, and per-field confidence scores. The shape is detailed in Reading the result.
errorError details when the node fails. Contains code, message, detail, category, and status. Available when the node's error handle is connected.

Reading the result

The extraction result is a nested structure. Extracted fields live under ExtractionResult.ResultsDocument.Fields, and each field's value is in a Values array, not directly on the field:

$vars.<nodeName>.output = {
  ExtractionResult: {
    DocumentId: "<id>",
    ResultsVersion: 0,
    ResultsDocument: {
      DocumentTypeField: { Value: "Invoice", Confidence: 1.0, OcrConfidence: -1.0 },
      Fields: [
        {
          FieldId: "Test.Financial.Invoice.Total", // model-qualified id
          FieldName: "Total",                        // leaf label, use this for lookups
          FieldType: "Text",
          IsMissing: false,
          Values: [
            { Value: "12.57", Confidence: 0.604, OcrConfidence: 0.604, Components: [], Reference: {} }
          ]
        }
        // ...one entry per field in the model schema
      ]
    }
  }
}
$vars.<nodeName>.output = {
  ExtractionResult: {
    DocumentId: "<id>",
    ResultsVersion: 0,
    ResultsDocument: {
      DocumentTypeField: { Value: "Invoice", Confidence: 1.0, OcrConfidence: -1.0 },
      Fields: [
        {
          FieldId: "Test.Financial.Invoice.Total", // model-qualified id
          FieldName: "Total",                        // leaf label, use this for lookups
          FieldType: "Text",
          IsMissing: false,
          Values: [
            { Value: "12.57", Confidence: 0.604, OcrConfidence: 0.604, Components: [], Reference: {} }
          ]
        }
        // ...one entry per field in the model schema
      ]
    }
  }
}

To read a single field's value in a downstream Script node, reach ExtractionResult.ResultsDocument.Fields, find the field by its FieldName, and read Values[0].Value:

const value =
  $vars.extract1.output
    ?.ExtractionResult?.ResultsDocument?.Fields
    ?.find((f) => f.FieldName === "Total")
    ?.Values?.[0]?.Value;
const value =
  $vars.extract1.output
    ?.ExtractionResult?.ResultsDocument?.Fields
    ?.find((f) => f.FieldName === "Total")
    ?.Values?.[0]?.Value;

Because field names carry spaces and casing from the model schema (Invoice No., Vendor Name), a normalized lookup is more robust:

const fields = $vars.extract1.output?.ExtractionResult?.ResultsDocument?.Fields || [];
const norm = (s) => String(s || "").toLowerCase().replace(/\s+/g, "");
const get = (name) => {
  const f = fields.find((x) => norm(x.FieldName) === norm(name));
  return f && Array.isArray(f.Values) && f.Values[0] ? f.Values[0].Value : undefined;
};

const total = get("Total");
const vendor = get("Vendor Name");
const fields = $vars.extract1.output?.ExtractionResult?.ResultsDocument?.Fields || [];
const norm = (s) => String(s || "").toLowerCase().replace(/\s+/g, "");
const get = (name) => {
  const f = fields.find((x) => norm(x.FieldName) === norm(name));
  return f && Array.isArray(f.Values) && f.Values[0] ? f.Values[0].Value : undefined;
};

const total = get("Total");
const vendor = get("Vendor Name");
Hinweis:

Common mistake: reading Fields.find((f) => f.FieldName === "Total").Value returns undefined. The fields sit under ResultsDocument.Fields (one level deeper than ExtractionResult), and the value lives in the Values array, not on the field directly. Examples copied from legacy Document Understanding workflows use a flatter shape and will not work here.

Missing fields

A field the model could not find has IsMissing: true and an empty or null Values array. Always guard with Values?.[0] (as the snippets above do) so a missing field reads as undefined rather than throwing.

Confidence scores

Each extracted value carries a Confidence and an OcrConfidence, both floats from 0 to 1 where higher is more certain. They sit on the value object, at Values[0].Confidence. A value of -1.0 is a sentinel meaning "not applicable" (for example, on table header rows), so filter those out before comparing. Use a Decision node to route low-confidence extractions to a Human Task for review.

Table fields

A field whose FieldType is Table holds its rows under Values, not the scalar shape above. Each table value carries a Components array (a Header row and a Body row), and each component in turn holds the cell fields under its own Components, each with the familiar Values[0].Value. Walk Components recursively to reach individual cells.

Fehlerbearbeitung

The Extract node supports an error handle. If extraction fails and the error handle is connected, execution routes to the error path with the error object at $vars.<nodeName>.error. Refer to Error handling for more information.

Hinweise

  • The list of models under the Extract category reflects what is deployed in your organization at design time. Deploy or redeploy a model in IXP, then reopen the palette to see the change.
  • Field values are always strings on Values[0].Value, even for dates and numbers. The model may also return parsed parts under DerivedFields (for example, Year, Month, Day on a date, or City and Country on an address).

War diese Seite hilfreich?

Verbinden

Benötigen Sie Hilfe? Support

Möchten Sie lernen? UiPath Academy

Haben Sie Fragen? UiPath-Forum

Auf dem neuesten Stand bleiben