Compétence de mise en page de document

La compétence Document Layout utilise le modèle layout issu de Azure Document Intelligence dans Foundry Tools pour analyser un document, détecter sa structure et ses caractéristiques, et produire une représentation syntaxique au format Markdown ou texte. Cette compétence permet l’extraction de texte et d’images, cette dernière incluant les métadonnées de localisation qui conservent la position de l’image dans un document. La proximité des images avec le contenu apparenté est bénéfique dans les scénarios de génération augmentée par récupération (RAG) et de recherche multimodale .

Pour les transactions qui dépassent 20 documents par indexeur par jour, cette compétence exige que vous associer une ressource facturable Microsoft Foundry à votre ensemble de compétences. L’exécution des compétences intégrées est facturée au prix standard actuel de Foundry Tools.

Cet article est la documentation de référence pour la compétence Mise en page de documents. Pour des informations d’utilisation, voir Comment fragmenter et vectoriser par disposition de document.

Tip

Il est courant d’utiliser cette compétence sur des contenus structurés et avec des images, comme les PDF. Le tutoriel multimodal démontre la verbalisation d’images avec deux stratégies différentes de fragmentation de données.

Limitations

Cette compétence présente les limitations suivantes :

  • Cette compétence n'est pas adaptée aux gros documents nécessitant plus de cinq minutes de traitement dans le modèle de mise en page Azure Document Intelligence. La compétence expire, mais les frais s’appliquent toujours à la ressource Foundry si elle est rattachée à l’ensemble des compétences pour la facturation. Assurez-vous que les documents sont optimisés pour respecter les limites de traitement afin d’éviter des coûts inutiles.

  • Parce que cette compétence appelle le modèle de mise en page Azure Document Intelligence, tous les comportements service documentés pour différents types de documents pour différents types de fichiers s’appliquent à sa sortie. Par exemple, Word (DOCX) et les fichiers PDF peuvent produire des résultats différents en raison de la manière dont les images sont traitées. Si un comportement cohérent des images entre DOCX et PDF est nécessaire, envisagez de convertir des documents en PDF ou de consulter la documentation de recherche multimodale pour trouver d’autres approches.

Supported regions

Les appels de compétence Mise en page de documents v4.0 (30-11-2024) de l’API REST Azure Document Intelligence REST.

Les régions prises en charge varient selon la modalité et la manière dont la compétence se connecte au modèle de mise en page Azure Document Intelligence. Actuellement, la version implémentée du modèle de mise en page ne prend pas en charge les régions 21Vianet .

Approach Requirement
Assistant d’importation de données Créez un service Recherche Azure AI et Azure compte multiservices IA dans l’une des régions suivantes : Est des États-Unis, Europe de l’Ouest 2 ou Nord-Centre des États-Unis.
Programmatique, utilisant une clé de ressource Foundry Microsoft pour la facturation Créez un service Recherche Azure AI et une ressource Microsoft Foundry dans la même région. La région doit soutenir à la fois Recherche Azure AI et Azure renseignement documentaire.
Programmatique, utilisant Microsoft Entra ID authentification (aperçu) pour la facturation Aucune exigence de même région. Créez un service Recherche Azure AI et Microsoft ressource Foundry dans toute région où chaque service est disponible.

Formats de fichiers pris en charge

Cette compétence reconnaît les formats de fichiers suivants :

  • .PDF
  • .JPEG
  • .JPG
  • .PNG
  • .BMP
  • .TIFF
  • .DOCX
  • .XLSX
  • .PPTX
  • .HTML

Supported languages

Pour le texte imprimé, voir Azure Document Intelligence support model languages support.

@odata.type

Microsoft.Skills.Util.DocumentIntelligenceLayoutSkill

Data limits

  • Pour PDF et TIFF, jusqu’à 2 000 pages peuvent être traitées (avec un abonnement de niveau gratuit, seules les deux premières pages sont traitées).
  • Même si la taille du fichier pour analyser des documents est de 500 Mo pour le niveau payé Azure Document Intelligence (S0) et 4 Mo pour le niveau Azure sans Document Intelligence (F0), l’indexation est soumise aux indexer de votre niveau de service de recherche.
  • Les dimensions de l’image doivent être comprises entre 50 pixels x 50 pixels ou 10 000 pixels x 10 000 pixels.
  • Si vos PDF sont verrouillés par mot de passe, retirez le verrou avant d’exécuter l’indexeur.

Skill parameters

Les paramètres sont sensibles à la casse.

Parameter name Allowed values Description
outputMode oneToMany Contrôle la cardinalité de la sortie produite par la compétence.
markdownHeaderDepth h1, h2, h3, h4, h5, ( h6 par défaut) Ne s’applique que si outputFormat est défini à markdown. Ce paramètre décrit le niveau d’imbriquage le plus profond à considérer. Par exemple, si markdownHeaderDepth est h3, toutes les sections plus profondes, telles que h4, sont roulées dans h3.
outputFormat markdown (par défaut), text Contrôle le format de la sortie générée par la compétence.
extractionOptions ["images"], , ["images", "locationMetadata"]["locationMetadata"] Identifiez tout contenu supplémentaire extrait du document. Définissez un tableau d’enums correspondant au contenu à inclure dans la sortie. Par exemple, si extractionOptions est ["images", "locationMetadata"], la sortie inclut des images et des métadonnées de localisation qui fournissent des informations sur l’emplacement de la page concernant l’extraction du contenu, comme un numéro de page ou une section. Ce paramètre s’applique aux deux formats de sortie.
chunkingProperties Voir le tableau suivant. Ne s’applique que si outputFormat est défini à text. Des options qui résument comment fragmenter le contenu du texte tout en recalculant d’autres métadonnées.
chunkingProperties Paramètre Allowed values Description
unit characters Contrôle la cardinalité de l’unité chunk. La longueur du morceau est mesurée en caractères, par opposition à des mots ou des jetons.
maximumLength Un entier compris entre 300 et 50 000. La longueur maximale du chunk en caractères mesurée par String.Length.
overlapLength Un entier inférieur à la moitié de maximumLength. La longueur du chevauchement fournie entre deux blocs de texte.

Skill inputs

Input name Description
file_data Le fichier dont le contenu doit être extrait.

L’entrée « file_data » doit être un objet défini comme :

{
  "$type": "file",
  "data": "BASE64 encoded string of the file"
}

Alternativement, elle peut être définie comme suit :

{
  "$type": "file",
  "url": "URL to download file",
  "sasToken": "OPTIONAL: SAS token for authentication if the URL provided is for a file in blob storage"
}

L’objet de référence de fichier peut être généré de l’une des manières suivantes :

  • Définir le allowSkillsetToReadFileData paramètre de votre indexeur sur true. Ce paramètre crée un chemin /document/file_data représentant les données originales du fichier téléchargées depuis votre source de données blob. Ce paramètre ne s’applique qu’aux fichiers dans le stockage Azure Blob.

  • Avoir une compétence personnalisée retournant une définition d’objet JSON qui fournit $type, data, ou url et sastoken. Le $type paramètre doit être fixé à file, et data doit être le tableau d’octets encodé de base de 64 du contenu du fichier. Le url paramètre doit être une URL valide avec accès au téléchargement du fichier à cet endroit.

Skill outputs

Output name Description
markdown_document Ne s’applique que si outputFormat est défini à markdown. Une collection d’objets « sections », qui représentent chaque section individuelle du document Markdown.
text_sections Ne s’applique que si outputFormat est défini à text. Une collection d’objets de blocs de texte, qui représentent le texte à l’intérieur des limites d’une page (en tenant compte de toute configuration supplémentaire de fragments), incluant les en-têtes de section eux-mêmes. L’objet bloc de texte inclut locationMetadata si applicable.
normalized_images Ne s’applique que si outputFormat est défini à text et extractionOptions inclut images. Une collection d’images extraites du document, y compris locationMetadata le cas échéant.

Définition de l’échantillon pour le mode de sortie à marquage

{
  "skills": [
    {
      "description": "Analyze a document",
      "@odata.type": "#Microsoft.Skills.Util.DocumentIntelligenceLayoutSkill",
      "context": "/document",
      "outputMode": "oneToMany", 
      "markdownHeaderDepth": "h3", 
      "inputs": [
        {
          "name": "file_data",
          "source": "/document/file_data"
        }
      ],
      "outputs": [
        {
          "name": "markdown_document", 
          "targetName": "markdown_document" 
        }
      ]
    }
  ]
}

Sortie d’échantillon pour le mode de sortie à remarques

{
  "markdown_document": [
    { 
      "content": "Hi this is Jim \r\nHi this is Joe", 
      "sections": { 
        "h1": "Foo", 
        "h2": "Bar", 
        "h3": "" 
      },
      "ordinal_position": 0
    }, 
    { 
      "content": "Hi this is Lance",
      "sections": { 
         "h1": "Foo", 
         "h2": "Bar", 
         "h3": "Boo" 
      },
      "ordinal_position": 1,
    } 
  ] 
}

La valeur de la markdownHeaderDepth commande contrôle le nombre de clés dans le dictionnaire des « sections ». Dans la définition de compétence d’exemple, puisque le markdownHeaderDepth est « h3 », il y a trois clés dans le dictionnaire des « sections » : h1, h2, h3.

Exemple pour le mode de sortie texte et l’extraction d’images et de métadonnées

Cet exemple montre comment produire du contenu textuel en blocs de taille fixe et extraire des images ainsi que les métadonnées de localisation du document.

Définition d’exemple pour le mode de sortie texte et l’extraction d’images et de métadonnées

{
  "skills": [
    {
      "description": "Analyze a document",
      "@odata.type": "#Microsoft.Skills.Util.DocumentIntelligenceLayoutSkill",
      "context": "/document",
      "outputMode": "oneToMany",
      "outputFormat": "text",
      "extractionOptions": ["images", "locationMetadata"],
      "chunkingProperties": {     
          "unit": "characters",
          "maximumLength": 2000, 
          "overlapLength": 200
      },
      "inputs": [
        {
          "name": "file_data",
          "source": "/document/file_data"
        }
      ],
      "outputs": [
        { 
          "name": "text_sections", 
          "targetName": "text_sections" 
        }, 
        { 
          "name": "normalized_images", 
          "targetName": "normalized_images" 
        } 
      ]
    }
  ]
}

Sortie d’exemple pour le mode de sortie texte et l’extraction d’images et de métadonnées

{
  "text_sections": [
      {
        "id": "1_7e6ef1f0-d2c0-479c-b11c-5d3c0fc88f56",
        "content": "the effects of analyzers using Analyze Text (REST). For more information about analyzers, see Analyzers for text processing.During indexing, an indexer only checks field names and types. There's no validation step that ensures incoming content is correct for the corresponding search field in the index.Create an indexerWhen you're ready to create an indexer on a remote search service, you need a search client. A search client can be the Azure portal, a REST client, or code that instantiates an indexer client. We recommend the Azure portal or REST APIs for early development and proof-of-concept testing.Azure portal1. Sign in to the Azure portal 2, then find your search service.2. On the search service Overview page, choose from two options:· Import data wizard: The wizard is unique in that it creates all of the required elements. Other approaches require a predefined data source and index.All services > Azure Al services | Al Search >demo-search-svc Search serviceSearchAdd indexImport dataImport and vectorize dataOverviewActivity logEssentialsAccess control (IAM)Get startedPropertiesUsageMonitoring· Add indexer: A visual editor for specifying an indexer definition.",
        "locationMetadata": {
          "pageNumber": 1,
          "ordinalPosition": 0,
          "boundingPolygons": "[[{\"x\":1.5548,\"y\":0.4036},{\"x\":6.9691,\"y\":0.4033},{\"x\":6.9691,\"y\":0.8577},{\"x\":1.5548,\"y\":0.8581}],[{\"x\":1.181,\"y\":1.0627},{\"x\":7.1393,\"y\":1.0626},{\"x\":7.1393,\"y\":1.7363},{\"x\":1.181,\"y\":1.7365}],[{\"x\":1.1923,\"y\":2.1466},{\"x\":3.4585,\"y\":2.1496},{\"x\":3.4582,\"y\":2.4251},{\"x\":1.1919,\"y\":2.4221}],[{\"x\":1.1813,\"y\":2.6518},{\"x\":7.2464,\"y\":2.6375},{\"x\":7.2486,\"y\":3.5913},{\"x\":1.1835,\"y\":3.6056}],[{\"x\":1.3349,\"y\":3.9489},{\"x\":2.1237,\"y\":3.9508},{\"x\":2.1233,\"y\":4.1128},{\"x\":1.3346,\"y\":4.111}],[{\"x\":1.5705,\"y\":4.5322},{\"x\":5.801,\"y\":4.5326},{\"x\":5.801,\"y\":4.7311},{\"x\":1.5704,\"y\":4.7307}]]"
        },
        "sections": []
      },
      {
        "id": "2_25134f52-04c3-415a-ab3d-80729bd58e67",
        "content": "All services > Azure Al services | Al Search >demo-search-svc | Indexers Search serviceSearch0«Add indexerRefreshDelete:selected: TagsFilter by name ...:selected: Diagnose and solve problemsSearch managementStatusNameIndexesIndexers*Data sourcesRun the indexerBy default, an indexer runs immediately when you create it on the search service. You can override this behavior by setting disabled to true in the indexer definition. Indexer execution is the moment of truth where you find out if there are problems with connections, field mappings, or skillset construction.There are several ways to run an indexer:· Run on indexer creation or update (default).. Run on demand when there are no changes to the definition, or precede with reset for full indexing. For more information, see Run or reset indexers.· Schedule indexer processing to invoke execution at regular intervals.Scheduled execution is usually implemented when you have a need for incremental indexing so that you can pick up the latest changes. As such, scheduling has a dependency on change detection.Indexers are one of the few subsystems that make overt outbound calls to other Azure resources. In terms of Azure roles, indexers don't have separate identities; a connection from the search engine to another Azure resource is made using the system or user- assigned managed identity of a search service. If the indexer connects to an Azure resource on a virtual network, you should create a shared private link for that connection. For more information about secure connections, see Security in Azure Al Search.Check results",
        "locationMetadata": {
          "pageNumber": 2,
          "ordinalPosition": 1,
          "boundingPolygons": "[[{\"x\":2.2041,\"y\":0.4109},{\"x\":4.3967,\"y\":0.4131},{\"x\":4.3966,\"y\":0.5505},{\"x\":2.204,\"y\":0.5482}],[{\"x\":2.5042,\"y\":0.6422},{\"x\":4.8539,\"y\":0.6506},{\"x\":4.8527,\"y\":0.993},{\"x\":2.5029,\"y\":0.9845}],[{\"x\":2.3705,\"y\":1.1496},{\"x\":2.6859,\"y\":1.15},{\"x\":2.6858,\"y\":1.2612},{\"x\":2.3704,\"y\":1.2608}],[{\"x\":3.7418,\"y\":1.1709},{\"x\":3.8082,\"y\":1.171},{\"x\":3.8081,\"y\":1.2508},{\"x\":3.7417,\"y\":1.2507}],[{\"x\":3.9692,\"y\":1.1445},{\"x\":4.0541,\"y\":1.1445},{\"x\":4.0542,\"y\":1.2621},{\"x\":3.9692,\"y\":1.2622}],[{\"x\":4.5326,\"y\":1.2263},{\"x\":5.1065,\"y\":1.229},{\"x\":5.106,\"y\":1.346},{\"x\":4.5321,\"y\":1.3433}],[{\"x\":5.5508,\"y\":1.2267},{\"x\":5.8992,\"y\":1.2268},{\"x\":5.8991,\"y\":1.3408},{\"x\":5.5508,\"y\":1.3408}]]"
        },
        "sections": []
       }
    ],
    "normalized_images": [ 
        { 
            "id": "1_550e8400-e29b-41d4-a716-446655440000", 
            "data": "SGVsbG8sIFdvcmxkIQ==", 
            "imagePath": "aHR0cHM6Ly9henNyb2xsaW5nLmJsb2IuY29yZS53aW5kb3dzLm5ldC9tdWx0aW1vZGFsaXR5L0NyZWF0ZUluZGV4ZXJwNnA3LnBkZg2/normalized_images_0.jpg",  
            "locationMetadata": {
              "pageNumber": 1,
              "ordinalPosition": 0,
              "boundingPolygons": "[[{\"x\":2.0834,\"y\":6.2245},{\"x\":7.1818,\"y\":6.2244},{\"x\":7.1816,\"y\":7.9375},{\"x\":2.0831,\"y\":7.9377}]]"
            }
        },
        { 
            "id": "2_123e4567-e89b-12d3-a456-426614174000", 
            "data": "U29tZSBtb3JlIGV4YW1wbGUgdGV4dA==", 
            "imagePath": "aHR0cHM6Ly9henNyb2xsaW5nLmJsb2IuY29yZS53aW5kb3dzLm5ldC9tdWx0aW1vZGFsaXR5L0NyZWF0ZUluZGV4ZXJwNnA3LnBkZg2/normalized_images_1.jpg",  
            "locationMetadata": {
              "pageNumber": 2,
              "ordinalPosition": 1,
              "boundingPolygons": "[[{\"x\":2.0784,\"y\":0.3734},{\"x\":7.1837,\"y\":0.3729},{\"x\":7.183,\"y\":2.8611},{\"x\":2.0775,\"y\":2.8615}]]"
            } 
        }
    ] 
}

Notez que les “sections” éléments dans la sortie de l’exemple ci-dessus apparaissent vides. Pour les remplir, vous devrez ajouter une compétence supplémentaire configurée avec outputFormat un ensemble pour markdowngarantir que les sections sont correctement remplies.

La compétence utilise Azure Intelligence documentaire pour calculer les métadonnées de localisation. Consultez Azure Document Intelligence layout model pour plus de détails sur la définition des pages et des coordonnées englobantes des polygones.

Le imagePath représente le chemin relatif d’une image stockée. Si la projection du fichier du magasin de connaissances est configurée dans le jeu de compétences, ce chemin correspond au chemin relatif de l’image stockée dans le magasin de connaissances.