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 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);

Parametry

PageNumer strony liczony od 1
FormatPDF_STRUCTURED_TEXT_JSON (0), PDF_STRUCTURED_TEXT_XHTML (1) albo PDF_STRUCTURED_TEXT_CSV (2)
OptionsZero 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