ExtractStructuredPage
Tekst, wyodrębnianie, dane strukturalne
Opis
Przechwytuje jedną stronę PDF i serializuje jej model tekstu strukturalnego jako JSON schematu 2, semantyczny XHTML lub CSV tabel
Model łączy rzeczywistą kolejność i atrybuty drzewa struktury z jawnym fallbackiem geometrycznym, akapitami, fragmentami ze stylami oraz tabelami z pustymi lub scalonymi komórkami
Składnia
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);Parametry
| Page | Numer strony liczony od 1 |
|---|---|
| Format | PDF_STRUCTURED_TEXT_JSON (0), PDF_STRUCTURED_TEXT_XHTML (1) albo PDF_STRUCTURED_TEXT_CSV (2) |
| Options | Zero albo PDF_STRUCTURED_TEXT_INCLUDE_STYLES (1), aby w formatach JSON i XHTML uwzględnić czcionkę, rozmiar, kolor oraz wyrównanie pionowe |
Hierarchia 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": []
}Metadane strony obejmują readingOrderSource, structureComplete i warnings; źródła kolejności czytania to tagged, mixed, geometric lub geometric-columns
Bloki obejmują nodeId, source, confidence, furniture, furnitureSource i bbox; zakresy zachowują originalText, contentEvent, nodeId i artifact obok tekstu wyjściowego
Metadane tabeli obejmują logicalTable, logicalTableId, fragment i flagi kontynuacji; wiersze niosą logicalRow i repeatedHeader
Każda komórka zapisuje rowSpan, columnSpan, anchorRow, anchorColumn, covered, header, mergeSource i confidence; puste komórki otagowane są zachowywane, a nieznane granice komórek mają wartość null
Tablica semantics zachowuje uporządkowane zdarzenia begin, content i end całego drzewa, stabilne identyfikatory węzłów i rodziców, role rozwiązane i pierwotne, przestrzenie nazw, język, tekst alternatywny, obecność ActualText, atrybuty komórek oraz odniesienia do stron, strumieni, MCID lub obiektów
structureComplete opisuje pokrycie przechodzenia i powiązań treści; nie jest poświadczeniem tagowania ani dostępności
Wartości zwracane
JSON i XHTML zwracają kompletne samodzielne dokumenty; XHTML reprezentuje scalone komórki zakresami tabel i ujawnia metadane źródła bloków
CSV zwraca wyłącznie komórki tabel i jest pusty, gdy strona nie zawiera tabeli; scalone komórki umieszczają tekst w komórce zakotwiczającej i pozostawiają pokryte komórki puste
Nieprawidłowe żądanie lub niepowodzenie wyodrębniania zwraca pusty ciąg
Uwagi
Analiza używa SetStructuredTextOptions niezależnie od specyficznych dla formatu opcji Options; źródła kolejności czytania i ostrzeżenia fallbacku sprawdź w GetLastStructuredTextDiagnostics
Gdy powiązania treści są kompletne, pierwszeństwo ma rzeczywista kolejność drzewa tagów; treść nierozwiązana lub niejednoznaczna zachowuje wyodrębniony tekst w fallbacku mieszanym albo geometrycznym, a nieznanych ról niestandardowych nie zgaduje się po ich nazwach
Powiązania marked-content rozróżniają strumienie stron i trasy wywołań zagnieżdżonych Form XObject; współdzielone otagowane wystąpienia Form o niejednoznacznej kolejności semantycznej są ujawniane, zamiast otrzymywać wymyślonej kolejności
Zastąpienia ActualText zachowują tekst źródłowy w zakresach JSON; odniesienia do obiektów są przechowywane jako metadane semantyczne, bez wyodrębniania z nich tekstu adnotacji
Geometryczne wykrywanie tabel wymaga wyrównanych wierszy wielu komórek; opcjonalne wnioskowanie scaleń i wykrywanie kolumn pozostają heurystyką
Prostokąty ograniczające używają współrzędnych strony z początkiem w lewym górnym rogu, wyrażonych w punktach PDF; fragment może zachować pełne granice pierwotnego przebiegu tekstu źródłowego
Wyodrębnianie zachowuje wybraną stronę i otwarty stos tagów zapisu; bieżące niezapisane tagi zapisu trafiają do wyniku bez tagów zamykających i bez finalizowania dokumentu
Wskaźniki zwracane przez DLL zachowują ważność do następnego wywołania zwracającego ciąg w tej samej instancji
LastErrorCode ma wartość 111 dla nieprawidłowej strony, formatu lub opcji oraz 515, gdy wyodrębnianie się nie powiedzie
Zobacz również
ExtractStructuredDocument, ExtractPageTextBlocks, GetPageText