Поделиться через


Навык макета документа

Навык макета документов использует модель макета из Azure Document Intelligence в инструментах Foundry для анализа документа, определения структуры и характеристик и создания синтаксического представления в формате Markdown или текста. Этот навык поддерживает извлечение текста и изображения, в том числе метаданные расположения, сохраняющие положение изображения в документе. Близость изображений к связанному содержимому полезна в сценариях извлечения с дополнением генерации (RAG) и многомодального поиска.

Для транзакций, превышающих 20 документов на индексатор в день, этот навык требует подключения оплачиваемого ресурса Microsoft Foundry к набору навыков. Выполнение встроенных навыков взимается по существующей цене средств Foundry Standard.

В этой статье приведена справочная документация по навыку макета документов. Сведения об использовании см. в разделе "Как фрагментировать и векторизировать по макету документа".

Tip

Обычно этот навык используется для содержимого с структурой и изображениями, такими как PDF-файлы. В руководстве по многомодальному анализу показана словизация изображений с двумя разными стратегиями блокирования данных.

Limitations

Этот навык имеет следующие ограничения:

  • Навык не подходит для больших документов, требующих более пяти минут обработки в модели макета аналитики документов Azure. Время ожидания навыка, но плата по-прежнему применяется к ресурсу Foundry, если он подключен к набору навыков для выставления счетов. Убедитесь, что документы оптимизированы для поддержания в пределах ограничений обработки, чтобы избежать ненужных затрат.

  • Поскольку этот навык вызывает модель макета Azure Document Intelligence, все задокументированные сервисные поведения для различных типов документов и файлов применяются к его выходным данным. Например, файлы Word (DOCX) и PDF могут создавать различные результаты из-за различий в обработке изображений. Если требуется согласованное поведение изображения в DOCX и PDF, рекомендуется преобразовать документы в PDF или просмотреть документацию по многомодальному поиску для альтернативных подходов.

Поддерживаемые регионы

Навык макета документов использует REST API анализа документов Azure версии 4.0 (2024-11-30).

Поддерживаемые регионы зависят от модальности и способа подключения навыка к модели макета аналитики документов Azure. В настоящее время текущая версия модели макета не поддерживает регионы 21Vianet.

Approach Requirement
Мастер импорта данных Создайте службу поиска ИИ Azure и учетную запись нескольких служб Azure в одном из следующих регионов: восточная часть США, Западная Европа или Северная часть США.
Программное использование ключа ресурса Microsoft Foundry для выставления счетов Создайте службу поиска ИИ Azure и ресурс Microsoft Foundry в том же регионе. Регион должен поддерживать поиск ИИ Azure и Аналитику документов Azure.
Программное использование проверки подлинности идентификатора Microsoft Entra (предварительная версия) для выставления счетов Нет требования к нахождению в одном регионе. Создайте службу поиска ИИ Azure и ресурс Microsoft Foundry в любом регионе, где доступна каждая служба.

Поддерживаемые форматы файлов

Этот навык распознает следующие форматы файлов:

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

Поддерживаемые языки

Сведения о печатном тексте см. в поддерживаемых языках модели макета аналитики документов Azure.

@odata.type

Microsoft.Skills.Util.DocumentIntelligenceLayoutSkill

Ограничения данных

  • Для PDF и TIFF можно обрабатывать до 2000 страниц (с подпиской на бесплатный уровень только первые две страницы обрабатываются).
  • Даже если размер файла для анализа документов составляет 500 МБ для платного уровня Azure Document Intelligence (S0) и 4 МБ для бесплатного уровня аналитики документов Azure (F0), индексирование зависит от ограничений индексатора уровня службы поиска.
  • Размеры изображения должны составлять от 50 пикселей до 50 пикселей или 10 000 пикселей x 10 000 пикселей.
  • Если pdf-файлы заблокированы паролем, удалите блокировку перед запуском индексатора.

Параметры навыков

Параметры чувствительны к регистру. В конкретных предварительных версиях REST API появились несколько параметров. Мы рекомендуем использовать общедоступную версию (2025-09-01) или последнюю предварительную версию (2025-11-01-preview) для полного доступа ко всем параметрам.

Имя параметра Допустимые значения Description
outputMode oneToMany Управляет кратностью выходных данных, созданных навыком.
markdownHeaderDepth h1, , h2h3h4h5,h6(default) Применяется, только если для параметра outputFormat задано значение markdown. Этот параметр описывает самый глубокий уровень вложения, который следует учитывать. Например, если markdownHeaderDepth имеет h3значение , все разделы, которые более глубоки, например h4, свернуты в h3.
outputFormat markdown(default), text New. Управляет форматом выходных данных, созданных навыком.
extractionOptions ["images"], , ["images", "locationMetadata"]["locationMetadata"] New. Определите любое дополнительное содержимое, извлеченное из документа. Определите массив перечислений, соответствующих содержимому, который должен быть включен в выходные данные. Например, если это extractionOptions["images", "locationMetadata"]так, выходные данные включают изображения и метаданные расположения, предоставляющие сведения о расположении страниц, связанные с местом извлечения содержимого, например номер страницы или раздел. Этот параметр применяется к обоим выходным форматам.
chunkingProperties См. ниже. New. Применяется, только если для параметра outputFormat задано значение text. Параметры, которые инкапсулируют, как фрагментировать текстовое содержимое при повторной компиляции других метаданных.
Параметр ChunkingProperties Version Допустимые значения Description
unit Characters. в настоящее время единственно допустимое значение. Длина блока измеряется в символах, а не в словах или маркерах New. Управляет кратностью единицы блока.
maximumLength Любое целое число от 300 до 50000 New. Максимальная длина блока в символах, измеряемая string.Length.
overlapLength Integer. Значение должно быть меньше половины maximumLength New. Длина перекрытия между двумя фрагментами текста.

Входные данные навыков

Входное имя Description
file_data Файл, из которого должно быть извлечено содержимое.

Входные данные "file_data" должны быть объектом, определенным как:

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

Кроме того, его можно определить следующим образом:

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

Объект ссылки на файл можно создать одним из следующих способов:

  • При задании allowSkillsetToReadFileData параметра для определения индексатора задано значение true. Этот параметр создает путь /document/file_data , представляющий исходные данные файла, скачанные из источника данных BLOB-объектов. Этот параметр применяется только к файлам в хранилище BLOB-объектов Azure.

  • Наличие настраиваемого навыка, возвращающего определение объекта JSON, которое предоставляет $type, dataили urlsastoken. Параметр $type должен иметь значение , и file должен быть dataбазовым 64-кодированным массивом байтов содержимого файла. Параметр url должен быть допустимым URL-адресом с доступом для скачивания файла в этом расположении.

Выходные данные навыка

Название вывода Description
markdown_document Применяется, только если для параметра outputFormat задано значение markdown. Коллекция объектов sections, представляющих каждый отдельный раздел в документе Markdown.
text_sections Применяется, только если для параметра outputFormat задано значение text. Коллекция объектов фрагментов текста, представляющая текст в границах страницы (факторинг в любом более настроенном фрагменте), включая все заголовки разделов. Объект фрагмента текста включает в себя locationMetadata , если применимо.
normalized_images Применяется только в том случае, если outputFormat задано text значение и extractionOptions включается images. Коллекция изображений, извлеченных из документа, включая locationMetadata , если применимо.

Пример определения для режима вывода 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" 
        }
      ]
    }
  ]
}

Пример выходных данных для режима вывода 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,
    } 
  ] 
}

Значение markdownHeaderDepth элемента управления числом ключей в словаре "разделов". В примере определения навыка, так как markdownHeaderDepth это "h3", в словаре "разделы" есть три ключа: h1, h2, h3.

Пример для вывода текста и извлечения изображений и метаданных

В этом примере показано, как выводить текстовое содержимое в блоках фиксированного размера и извлекать изображения вместе с метаданными расположения из документа.

Пример определения для режима вывода текста и извлечения изображений и метаданных

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

Пример выходных данных для режима вывода текста и извлечения изображений и метаданных

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

Обратите внимание, что “sections” в приведенном выше примере выходных данных отображается пустое значение. Чтобы заполнить их, необходимо добавить дополнительный навык, настроенный с outputFormat набором, чтобы markdownубедиться, что разделы заполнены правильно.

Навык использует аналитику документов Azure для вычислений расположенияMetadata. Дополнительные сведения о том, как определяются страницы и ограничивающие координаты многоугольников, см. в модели макета аналитики документов Azure .

Представляет imagePath относительный путь к сохраненном изображению. Если проекция файла хранилища знаний настроена в наборе навыков, этот путь соответствует относительному пути изображения, хранящегося в хранилище знаний.

См. также