UiPath Documentation
maestro
latest
false
Guide de l'utilisateur de Maestro
Important :
La localisation du contenu nouvellement publié peut prendre 1 à 2 semaines avant d’être disponible.

Extraire

Extrayez des champs structurés de documents à l'aide de modèles d'extraction basés sur l'Extraction et traitement intelligents (IXP).

Le nœud Extraire extrait des champs structurés d'un document (une facture, un reçu, un formulaire ou un contrat) à l'aide d'un modèle d'Extraction et de traitement intelligents (IXP) UiPath et renvoie le résultat pour que les nœuds en aval puissent agir en conséquence. Utilisez-le lorsqu'une étape de votre processus nécessite que des données typées soient retirées d'un fichier non structuré.

Avant de commencer : déployez un modèle d'extraction et traitement intelligents (IXP)​

Le nœud Extraire n'a aucun extracteur intégré. Il affiche les modèles d'extraction et traitement intelligents (IXP) en déploiement dans votre organisation, de sorte que vous devez effectuer un déploiement d'au moins un modèle d'extraction IXP avant que des options n'apparaissent sous le nœud.

  • Créez et déployez un modèle dans Extraction et traitement intelligents (IXP). Reportez-vous à la documentation IXP pour plus d'informations.
  • Le modèle doit être déployé dans un dossier auquel vous pouvez accéder. Les modèles sont répertoriés par leur nom entièrement qualifié, <Folder>/<ModelName> (par exemple, Shared/Finance/invoice-extraction).
  • Si aucun modèle n'est déployé, la catégorie Extraire apparaît dans la palette, mais est vide.

Votre locataire doit également avoir les services Extraction et traitement intelligents (IXP) et Document Understanding activés (Admin → Locataire → Services). Le nœud Extraction dépend du fait que les deux sont provisionnés, même lorsque vous utilisez uniquement des modèles d'extraction et traitement intelligents (IXP).

Mode de fonctionnement​

Les modèles d'extraction se chargent dynamiquement à partir de votre organisation, de la même manière que les nœuds de connecteur se chargent à partir d'Integration Service. Dans la palette de nœuds, les modèles déployés apparaissent sous Traitement du document → Extraire, chacun comme son propre nœud. L'ajout de l'un d'entre eux à la zone de dessin crée un nœud Extraire lié à ce modèle spécifique.

Lorsque le nœud s'exécute, Flow envoie le document au modèle d'extraction et traitement intelligents (IXP), le modèle le numérise et l'extrait, et le résultat structuré revient sur le output du nœud. L'extraction s'exécute de manière asynchrone : le nœud attend que le modèle se termine avant de continuer, afin de prévoir le temps pour les documents volumineux.

Configuration​

Configurez le nœud Extraire dans le panneau Propriétés après l'avoir ajouté à la zone de dessin.

ChampRequisDefaultDescription
ModèleOui (Yes)Modèle sélectionnéModèle d'extraction et traitement intelligents (IXP) déployé à exécuter. Cela est défini lorsque vous ajoutez le nœud à partir de la palette et que le dossier et la version du modèle se lient automatiquement.
DocumentOui (Yes)Aucun (None)Fichier à partir duquel extraire. Liez-le à un fichier produit plus tôt dans le flux, tel qu'une pièce jointe d'un déclencheur ou d'une sortie de nœud précédente.
Page RangeNon (No)VidePages à extraire, par exemple 1-3. Laissez-le vide pour traiter l'ensemble du document.

Sortie​

Le nœud Extraire renvoie son résultat à $vars.<nodeName>.output.

VariableDescription
outputRésultat de l'extraction. Contient un seul objet ExtractionResult avec des métadonnées de document, des champs extraits et des scores de confiance par champ. La forme est détaillée dans la section Lecture du résultat.
errorDétails de l'erreur lorsque le nœud échoue. Contient code, message, detail, category, et status. Disponible lorsque le gestionnaire d'erreurs du nœud est connecté.

Lecture du résultat​

Le résultat de l'extraction est une structure imbriquée. Les champs extraits sont disponibles sous ExtractionResult.ResultsDocument.Fields, et la valeur de chaque champ est dans un tableau Values, et non directement sur le champ :

$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
      ]
    }
  }
}

Pour lire la valeur d'un seul champ dans un nœud Script en aval, accédez à ExtractionResult.ResultsDocument.Fields, recherchez le champ par son FieldName, et lisez 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;

Étant donné que les noms de champs comportent des espaces et respectent la casse du schéma du modèle (Invoice No., Vendor Name), une recherche normalisée s'avère plus fiable :

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");
Remarque :

Erreur courante : la lecture de Fields.find((f) => f.FieldName === "Total").Value renvoie undefined. Les champs se trouvent sous ResultsDocument.Fields (un niveau plus bas que ExtractionResult) et la valeur se trouve dans le tableau Values, et non directement sur le champ. Les exemples copiés à partir de workflows Document Understanding hérités utilisent une forme plus plate et ne fonctionneront pas ici.

Champs manquants​

Un champ que le modèle n'a pas pu trouver contient IsMissing: true et un tableau Values vide ou nul. Protégez-vous toujours avec Values?.[0] (comme le font les extraits ci-dessus) afin qu'un champ manquant se lise comme undefined plutôt que de provoquer une exception.

Scores de confiance​

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 node for review.

Champs de table​

Un champ dont le FieldType est Table contient ses lignes sous Values, et non la forme scalaire ci-dessus. Chaque valeur de table porte un tableau Components (une ligne Header et une ligne Body) et chaque composant contient à son tour les champs de cellule sous son propre Components, chacun avec le Values[0].Value familier. Parcourez Components de manière récursive pour atteindre des cellules individuelles.

Gestion des erreurs​

Le nœud Extraire prend en charge un gestionnaire d'erreurs. Si l'extraction échoue et que le gestionnaire d'erreurs est connecté, l'exécution est acheminée vers le chemin d'erreur avec l'objet d'erreur à $vars.<nodeName>.error. Reportez-vous à la section Gestion des erreurs pour plus d'informations.

Remarques​

  • La liste de modèles sous la catégorie Extraire reflète ce qui est déployé dans votre organisation au moment de la conception. Effectuez le déploiement ou le redéploiement d'un modèle dans Extraction et traitement intelligents (IXP), puis rouvrez la palette pour voir la modification.
  • Les valeurs de champs sont toujours des chaînes sur Values[0].Value, même pour les dates et les nombres. Le modèle peut également renvoyer des parties analysées sous DerivedFields (par exemple, Year, Month, Day sur une date, ou City et Country sur une adresse).

Cette page vous a-t-elle été utile ?

Connecter

Besoin d'aide ? Assistance

Vous souhaitez apprendre ? UiPath Academy

Vous avez des questions ? UiPath Forum

Rester à jour