Partager via


Compétence de mise en page de document

La compétence de mise en page de document examine un document pour en détecter la structure et les caractéristiques, puis génère une représentation syntaxique au format Markdown ou Texte. Elle permet d’extraire du texte et des images, l’extraction d’images incluant des métadonnées de localisation qui conservent la position des images dans le document. La proximité des images avec le contenu auquel elles sont associées constitue un avantage pour les charges de travail de génération augmentée par la récupération (RAG) et pour les scénarios de recherche multimodale.

Cet article fait office de documentation de référence pour la compétence Document Layout. Pour en savoir plus sur son utilisation, veuillez consulter Comment segmenter et vectoriser à l’aide de la mise en page de document.

Cette compétence s’appuie sur le modèle de mise en page d’Azure Document Intelligence dans Foundry Tools.

Cette compétence est associée à une ressource Microsoft Foundry facturable pour toute transaction dépassant 20 documents par indexeur et par jour. L’exécution des compétences intégrées est facturée au tarif standard Foundry Tools en vigueur.

Tip

Elle est couramment utilisée sur des contenus tels que des fichiers PDF comportant une structure et des images. Les didacticiels suivants illustrent la verbalisation d’images à l’aide de deux techniques distinctes de segmentation des données :

Limitations

Cette compétence comporte les limitations suivantes :

  • La compétence n’est pas adaptée aux documents volumineux nécessitant plus de 5 minutes de traitement par le modèle de mise en page Azure Document Intelligence. La compétence expire, toutefois des frais continuent de s’appliquer à la ressource Foundry si elle est associée à l’ensemble de compétences à des fins de facturation. Assurez-vous que les documents sont optimisés pour rester dans les limites de traitement afin d’éviter les coûts inutiles.

  • Étant donné que cette compétence invoque le modèle de mise en page Azure Document Intelligence, tous les comportements de service documentés pour les différents types de documents et de fichiers s’appliquent à sa sortie. Par exemple, les fichiers Word (DOCX) et PDF peuvent générer des résultats différents en raison des différences de traitement des images. Si un comportement cohérent de l’image entre les fichiers DOCX et PDF est requis, envisagez de convertir les documents au format PDF ou d’examiner la documentation sur la recherche multimodale pour explorer d’autres approches.

Régions prises en charge

La compétence Document Layout appelle l’API Azure Document Intelligence version 2024-11-30 (V4.0).

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.

Approach Requirement
Assistant d’importation de données (nouveau) Créez une ressource Foundry dans l’une des régions suivantes afin de bénéficier de l’expérience du portail : Est des États-Unis, Ouest de l’Europe, Centre-Nord des États-Unis.
Programmation à l’aide de l’authentification Microsoft Entra ID (préversion) pour la facturation Créez le service Azure AI Search dans l’une des régions où il est pris en charge, conformément à la disponibilité des produits par région.
Créez la ressource Foundry dans toute région figurant dans le tableau de disponibilité des produits par région.
Programmation à l’aide d’une clé de ressource Foundry pour la facturation Créez votre service Azure AI Search et votre ressource Foundry dans la même région. Cela implique que la région sélectionnée doit prendre en charge à la fois Azure AI Search et Azure Document Intelligence.

La version actuellement implémentée du modèle de mise en page de document ne prend pas en charge les régions 21Vianet.

Formats de fichiers pris en charge

Ce module de reconnaissance prend en charge les formats de fichiers suivants.

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

Langues prises en charge

Veuillez consulter les langues prises en charge par le modèle de mise en page Azure Document Intelligence pour le texte imprimé.

@odata.type

Microsoft.Skills.Util.DocumentIntelligenceLayoutSkill

Limites des données

  • Pour les PDF et TIFF, jusqu’à 2 000 pages peuvent être traitées (avec un abonnement gratuit, seules les deux premières pages sont traitées).
  • Bien que la taille maximale des fichiers à analyser soit de 500 Mo pour le niveau payant (S0) d’Azure Document Intelligence et de 4 Mo pour le niveau gratuit (F0), l’indexation reste soumise aux limites de l’indexeur 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 fichiers PDF sont protégés par un mot de passe, veuillez supprimer cette protection avant d’exécuter l’indexeur.

Paramètres de la compétence

Les paramètres sont sensibles à la casse. Plusieurs paramètres ont été introduits dans des préversions spécifiques de l’API REST. Il est recommandé d’utiliser la version généralement disponible (2025-09-01) ou la dernière version préliminaire (2025-11-01-preview) afin de bénéficier d’un accès complet à l’ensemble des paramètres.

Nom du paramètre Valeurs autorisées Description
outputMode oneToMany Détermine la cardinalité de la sortie générée par la compétence.
markdownHeaderDepth h1, h2, h3, h4, h5, h6(default) S’applique uniquement si outputFormat est défini sur markdown. Ce paramètre précise la profondeur maximale d’imbrication à prendre en considération. À titre d’exemple, lorsque markdownHeaderDepth vaut h3, toutes les sections de niveau inférieur, telles que h4, sont regroupées sous h3.
outputFormat markdown(default), text New. Définit le format de la sortie produite par la compétence.
extractionOptions ["images"], ["images", "locationMetadata"], ["locationMetadata"] New. Identifiez tout contenu supplémentaire extrait du document. Définissez un tableau d’énumérations correspondant au contenu à inclure dans la sortie. Par exemple, lorsque extractionOptions est défini sur ["images", "locationMetadata"] la sortie comprend des images ainsi que des métadonnées de localisation indiquant l’emplacement de la page d’extraction du contenu, comme le numéro de page ou la section. Ce paramètre est applicable aux deux formats de sortie.
chunkingProperties Voir ci-dessous. New. S’applique uniquement si outputFormat est défini sur text. Ensemble d’options décrivant la méthode de segmentation du contenu textuel tout en recalculant les autres métadonnées.
Paramètre ChunkingProperties Version Valeurs autorisées Description
unit Characters. À l’heure actuelle, il s’agit de l’unique valeur autorisée. La taille des segments est évaluée en nombre de caractères et non en mots ou en tokens. New. Contrôle la cardinalité de l’unité de segmentation.
maximumLength Entier compris entre 300 et 50000 New. Taille maximale d’un segment en caractères, telle que calculée par String.Length.
overlapLength Integer. Cette valeur doit être inférieure à la moitié de maximumLength. New. Longueur du chevauchement entre deux segments de texte.

Entrées de la compétence

Nom d’entrée Description
file_data Fichier à partir duquel le contenu doit être extrait.

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

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

Elle peut également ê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 :

  • Configurez le paramètre allowSkillsetToReadFileData de la définition de votre indexeur sur true. Ce paramètre génère un chemin /document/file_data correspondant à un objet représentant les données du fichier source d’origine, téléchargé depuis votre source de données blob. Ce paramètre concerne exclusivement les fichiers hébergés dans Azure Blob Storage.

  • En disposant d’une compétence personnalisée retournant une définition d’objet JSON qui fournit $type, data ou url et sastoken. Le paramètre $type doit être défini sur file, et data doit contenir le tableau d’octets du contenu du fichier encodé en base 64. Le paramètre url doit correspondre à une URL valide disposant des droits d’accès nécessaires pour télécharger le fichier à cet emplacement.

Sorties de la compétence

Nom de sortie Description
markdown_document S’applique uniquement si outputFormat est défini sur markdown. Un ensemble d’objets « sections » représentant chacune des sections individuelles du document Markdown.
text_sections S’applique uniquement si outputFormat est défini sur text. Un ensemble d’objets de segments textuels représentant le contenu à l’intérieur des limites d’une page, en tenant compte de tout découpage supplémentaire configuré, y compris les en-têtes de section. L’objet de segment de texte inclut locationMetadata le cas échéant.
normalized_images S’applique uniquement lorsque outputFormat est défini sur text et que extractionOptions inclut images. Collection d’images extraites du document, y compris locationMetadata le cas échéant.

Exemple de définition pour le mode de sortie Markdown

{
  "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" 
        }
      ]
    }
  ]
}

Exemple de résultat pour le mode de sortie Markdown

{
  "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 markdownHeaderDepth détermine le nombre de clés présentes dans le dictionnaire « sections ». Dans l’exemple de définition de la compétence, puisque markdownHeaderDepth correspond à « h3 », le dictionnaire « sections » comporte trois clés : h1, h2, h3.

Exemple relatif au mode de sortie texte avec extraction des images et des métadonnées

Cet exemple montre comment générer du contenu de texte en segments de taille fixe et extraire des images ainsi que des métadonnées d’emplacement provenant du document.

Exemple de définition pour le mode de sortie texte avec extraction des images et des 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" 
        } 
      ]
    }
  ]
}

Exemple de résultat pour le mode de sortie texte avec extraction des images et des 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}]]"
            } 
        }
    ] 
}

Veuillez noter que “sections” apparaît vide dans l’exemple de sortie ci-dessus. Pour les renseigner, il est nécessaire d’ajouter une compétence supplémentaire configurée avec outputFormat défini sur markdown afin de garantir le remplissage correct des sections.

La compétence s’appuie sur Azure Document Intelligence pour effectuer le calcul de locationMetadata. Veuillez consulter le modèle de mise en page Azure Document Intelligence afin d’obtenir des précisions sur la définition des pages et des coordonnées des polygones de délimitation.

imagePath correspond au chemin relatif d’une image stockée. Si la projection de fichier de la base de connaissances est configurée dans l’ensemble de compétences, ce chemin correspond au chemin relatif de l’image stockée dans la base de connaissances.

Voir aussi