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 StringDLL
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 |
|---|---|
| Format | PDF_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