ExtractStructuredPage

Текст, извлечение, структурированные данные

Описание

Захватывает одну страницу PDF и сериализует её структурную текстовую модель как JSON схемы 2, семантический XHTML или табличный CSV

Модель сочетает реальный порядок и атрибуты дерева структуры с явным геометрическим резервом, абзацами, стилизованными фрагментами и таблицами с пустыми или объединёнными ячейками

Синтаксис

Delphi

Function TPDFlib.ExtractStructuredPage(Page, Format,
  Options: Integer): WideString;

ActiveX

Function PDFlib::ExtractStructuredPage(Page As Long, Format As Long,
  Options As Long) As String

DLL

const wchar_t* DLExtractStructuredPage(int InstanceID, int Page,
  int Format, int Options);
const char* DLExtractStructuredPageA(int InstanceID, int Page,
  int Format, int Options);

Параметры

PageНомер страницы, начиная с 1
FormatPDF_STRUCTURED_TEXT_JSON (0), PDF_STRUCTURED_TEXT_XHTML (1) или PDF_STRUCTURED_TEXT_CSV (2)
OptionsНоль или PDF_STRUCTURED_TEXT_INCLUDE_STYLES (1) для включения шрифта, размера, цвета и вертикального выравнивания в JSON и XHTML

Иерархия JSON

{
  "version": 2,
  "page": 1,
  "width": 612,
  "height": 792,
  "readingOrderSource": "tagged",
  "structureComplete": true,
  "warnings": [],
  "blocks": [
    {
      "type": "paragraph",
      "nodeId": 3,
      "source": "tagged",
      "confidence": 1,
      "furniture": "none",
      "furnitureSource": "",
      "bbox": [
        40,
        50,
        300,
        70
      ],
      "text": "Example paragraph",
      "lines": [
        {
          "spans": []
        }
      ]
    }
  ],
  "semantics": []
}

Метаданные страницы включают readingOrderSource, structureComplete и warnings; источники чтения — tagged, mixed, geometric или geometric-columns

Блоки включают nodeId, source, confidence, furniture, furnitureSource и bbox; фрагменты сохраняют originalText, contentEvent, nodeId и artifact рядом с выходным текстом

Метаданные таблицы включают logicalTable, logicalTableId, fragment и флаги продолжения; строки несут logicalRow и repeatedHeader

Каждая ячейка фиксирует rowSpan, columnSpan, anchorRow, anchorColumn, covered, header, mergeSource и confidence; пустые тегированные ячейки сохраняются, а неизвестные границы ячеек равны null

Массив semantics сохраняет упорядоченные события begin, content и end полного дерева, стабильные идентификаторы узлов и родителей, разрешённые и исходные роли, пространства имён, язык, альтернативный текст, присутствие ActualText, атрибуты ячеек и ссылки на страницу, поток, MCID или объект

structureComplete описывает покрытие обхода и привязок содержимого; это не сертификация тегирования или доступности

Возвращаемые значения

JSON и XHTML возвращают полные автономные документы; XHTML представляет объединённые ячейки охватами таблиц и раскрывает метаданные источника блоков

CSV возвращает только ячейки таблиц и пуст, когда на странице нет таблицы; объединённые ячейки помещают текст в якорную ячейку, оставляя покрытые ячейки пустыми

Недопустимый запрос или ошибка извлечения возвращают пустую строку

Примечания

Анализ использует SetStructuredTextOptions независимо от специфичных для формата Options; источники чтения и предупреждения о резервных путях смотрите в GetLastStructuredTextDiagnostics

Когда привязки содержимого полны, приоритет имеет реальный порядок дерева тегов; неразрешённое или неоднозначное содержимое удерживает извлечённый текст в mixed- или geometric-резерве, а неизвестные пользовательские роли не угадываются по их именам

Привязки маркированного содержимого различают потоки страницы и маршруты вызова вложенных Form XObject; совместные тегированные вхождения Form с неоднозначным семантическим порядком раскрываются, а не получают выдуманный порядок

Замены ActualText сохраняют исходный текст во фрагментах JSON; ссылки на объекты удерживаются как семантические метаданные, без извлечения текста аннотаций из них

Геометрическое обнаружение таблиц требует выровненных строк из нескольких ячеек; опциональный вывод объединений и обнаружение колонок остаются эвристиками

Ограничивающие прямоугольники задаются в координатах страницы от левого верхнего угла в пунктах PDF; фрагмент может удерживать полные границы исходного текстового прогона

Извлечение сохраняет выбранную страницу и открытый стек тегов писателя; текущие несохранённые теги писателя включаются без закрывающих тегов и без финализации документа

Указатели возврата DLL остаются действительными до следующего вызова, возвращающего строку, на том же экземпляре

LastErrorCode возвращает 111 при некорректной странице, формате или опциях и 515 при сбое извлечения

См. также

ExtractStructuredDocument, ExtractPageTextBlocks, GetPageText