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

Extraire des champs structurés de documents à l’aide de modèles d’extraction IXP.

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

Avant de commencer: Déployer un modèle IXP

Le nœud d'extraction ne dispose pas d'extracteur intégré. Il fait apparaître les modèles IXP déployés dans votre organisation, de sorte que vous devez déployer au moins un modèle d'extraction IXP avant que les options n'apparaissent sous le nœud.

  • Créez et déployez un modèle dans IXP. Consultez la documentation IXP pour de plus amples 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 complet, <Folder>/<ModelName> (par exemple, Shared/Finance/invoice-extraction).
  • Si aucun modèle n'est déployé, la catégorie Extraire s'affiche dans la palette, mais reste vide.

Votre locataire doit également avoir activé les services IXP et Document Understanding (Admin → Locataire → Services). Le nœud d'extraction dépend de l'enregistrement des deux, même lorsque vous utilisez uniquement des modèles 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 chargent depuis Integration Service. Dans la palette des nœuds, les modèles déployés apparaissent sous Traitement des documents → Extraire, chacun comme son propre nœud. L'ajout d'un nœud à la zone de dessin crée un nœud d'extraction lié à ce modèle spécifique.

Lorsque le nœud s'exécute, Flow envoie le document au modèle IXP, le modèle le numérise et l'extraire, 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 la fin du modèle avant de continuer, prévoyez donc du temps pour les documents volumineux.

Configuration

Configurez le nœud d’extraction 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 IXP déployé à exécuter. Ceci est défini lorsque vous ajoutez le nœud depuis la palette, et le dossier et la version du modèle sont automatiquement liés.
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 antérieure.
Page RangeNon (No)VidePages à partir desquelles extraire, par exemple 1-3. Laissez ce champ vide pour traiter l'ensemble du document.

Sortie

Le nœud d'extraction 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 Lire le résultat.
errorDétails de l'erreur lorsque le nœud échoue. Contient code, message, detail, category et status. Disponible lorsque la gestion des erreurs du nœud est connectée.

Lire le résultat

L’extraction a pour résultat une structure imbriquée. Les champs extraits se trouvent sous ExtractionResult.ResultsDocument.Fields et la valeur de chaque champ se trouve 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 de 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 champ comportent des espaces et des casses du schéma du modèle (Invoice No., Vendor Name), une recherche normalisée est plus robuste:

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 profond 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 comporte IsMissing: true et un tableau Values vide ou nul. Protégez toujours avec Values?.[0] (comme le font les extraits ci-dessus) afin qu'un champ manquant soit lu comme undefined plutôt que d'être généré.

Scores de confiance

Chaque valeur extraite porte un Confidence et un OcrConfidence, tous deux flottants de 0 à 1 où le plus élevé est plus certain. Ils se trouvent sur l'objet de valeur, au niveau de Values[0].Confidence. Une valeur de -1.0 est un sentiment qui signifie « non applicable» (par exemple, sur les lignes d'en-tête du tableau). Filtrez-les avant de comparer. Utilisez un nœud de décision pour acheminer les extractions peu fiables vers une tâche humaine pour qu'elles soient révisées.

Champs de table

Un champ dont FieldType est Table tient ses lignes sous Values, et non sous 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 d’extraction prend en charge une gestion des erreurs. Si l'extraction échoue et que la gestion des erreurs est connectée, l'exécution est redirigée vers le chemin d'erreur avec l'objet d'erreur au niveau de $vars.<nodeName>.error. Reportez-vous à la section Gestion des erreurs pour de plus amples informations.

Remarques

  • La liste des modèles sous la catégorie Extraire reflète ce qui est déployé dans votre organisation au moment de la conception. Déployez ou redéployez un modèle dans IXP, puis rouvrez la palette pour voir la modification.
  • Les valeurs des champs sont toujours des chaînes sur Values[0].Value, même pour les dates et les chiffres. Le modèle peut également renvoyer des parties analysées sous DerivedFields (par exemple, Year, Month, Day à une date ou City et Country à 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