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

Note

Поиск с использованием ИИ Azure доступна через портал Azure, REST API и Azure SDKs. Он также лежит в основе IQ Foundry, управляемого уровня знаний, который преобразует корпоративное содержимое в многократно используемые базы знаний с поддержкой разрешений для агентов на портале Foundry Microsoft.

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

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

Эта статья является справочной документацией по навыку оформления документа. Для информации об использовании см. Как разделить и векторизовать по макету документа.

Tip

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

Ограничения

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

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

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

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

Навык Document Layout вызывает версию v4.0 (2024-11-30) Azure Document Intelligence REST API.

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

Подход Требование
Мастер импорта данных Создайте Поиск с использованием ИИ Azure-сервис и Azure AI-мультисервисный аккаунт в одном из следующих регионов: Восток США, Западная Европа 2 или Северо-Центральная часть США.
Программный, с использованием Microsoft Foundry resource key для выставления счетов Создайте сервис Поиск с использованием ИИ Azure и ресурс Microsoft Foundry в одном регионе. Регион должен поддерживать как Поиск с использованием ИИ Azure, так и Azure Document Intelligence.
Программное использование проверки подлинности Microsoft Entra ID для выставления счетов Нет требования к одному региону. Создайте Поиск с использованием ИИ Azure сервис и ресурс Microsoft Foundry в любом регионе, где доступен каждый сервис.

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

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

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

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

Для печатного текста см. Azure поддерживаемые языки макета Document Intelligence.

@odata.type

Microsoft.Skills.Util.DocumentIntelligenceLayoutSkill

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

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

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

Параметры чувствительны к регистру.

Имя параметра Допустимые значения Описание
outputMode oneToMany Контролирует мощность результата, производимого навыком.
markdownHeaderDepth h1, h2, h3, h4, h5, ( h6 по умолчанию) Применяется только если outputFormat установлено в markdown. Этот параметр описывает самый глубокий уровень вложения, который следует учитывать. Например, если markdownHeaderDepth есть h3, любые более глубокие секции, такие как h4, перекатываются в h3.
outputFormat markdown (по умолчанию), text Управляет форматом результата, генерируемого навыком.
extractionOptions ["images"], , ["images", "locationMetadata"]["locationMetadata"] Определите любое дополнительное содержимое из документа. Определите массив enums, соответствующих содержимому, которое должно быть включено в результат. Например, если extractionOptions есть ["images", "locationMetadata"], выход включает изображения и метаданные местоположения, которые предоставляют информацию о местоположении страницы, связанную с местом извлечения контента, например, номер страницы или раздел. Этот параметр применим к обоим форматам вывода.
chunkingProperties См. следующую таблицу. Применяется только если outputFormat установлено в text. Опции, которые охватывают способы фрагментирования текстового контента при повторном вычислении других метаданных.
chunkingProperties параметр Допустимые значения Описание
unit characters Контролирует мощность блока чанка. Длина фрагмента измеряется символами, а не словами или жетонами.
maximumLength Целое число от 300 до 50000. Максимальная длина блока в символах, измеренная String.Length.
overlapLength Целое число меньше половины от maximumLength. Длина перекрытия обеспечивалась между двумя текстовыми блоками.

Входные параметры навыков

Введите имя Описание
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-источника. Этот параметр применяется только к файлам в хранилище Azure Blob.

    allowSkillsetToReadFileData делает скачанные данные файла доступными для навыка. Он не увеличивает ограничения индексатора BLOB-объектов или ограничения аналитики документов, описанные в ограничениях данных.

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

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

Имя результата Описание
markdown_document Применяется только если outputFormat установлено в markdown. Коллекция объектов «секций», представляющих каждую отдельную секцию в документе 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 параметра определяет количество клавиш в словаре «sections». В примере определения навыка, поскольку равен 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 Document Intelligence для вычисления метаданных местоположения. См. Azure Document Intelligence layout model для подробностей того, как определяются страницы и ограничивающие координаты полигонов.

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