ExtractStructuredPage
Text, Extraktion, Strukturierte Daten
Beschreibung
Erfasst eine PDF-Seite und serialisiert ihr strukturiertes Textmodell als JSON in Schema 2, als semantisches XHTML oder als Tabellen-CSV
Das Modell kombiniert echte Strukturbaum-Reihenfolge und -Attribute mit explizitem geometrischem Ausweichmodus, Absätzen, formatierten Bereichen und Tabellen mit leeren oder verbundenen Zellen
Syntax
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);Parameter
| Page | Die einsbasierte Seitennummer |
|---|---|
| Format | PDF_STRUCTURED_TEXT_JSON (0), PDF_STRUCTURED_TEXT_XHTML (1) oder PDF_STRUCTURED_TEXT_CSV (2) |
| Options | Null oder PDF_STRUCTURED_TEXT_INCLUDE_STYLES (1), um Schrift, Größe, Farbe und vertikale Ausrichtung in JSON und XHTML einzuschließen |
JSON-Hierarchie
{
"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": []
}Seitenmetadaten umfassen readingOrderSource, structureComplete und warnings; Lesequellen sind tagged, mixed, geometric oder geometric-columns
Blöcke umfassen nodeId, source, confidence, furniture, furnitureSource und bbox; Bereiche behalten originalText, contentEvent, nodeId und artifact neben dem Ausgabetext bei
Tabellenmetadaten umfassen logicalTable, logicalTableId, fragment und Fortsetzungsflags; Zeilen tragen logicalRow und repeatedHeader
Jede Zelle zeichnet rowSpan, columnSpan, anchorRow, anchorColumn, covered, header, mergeSource und confidence auf; leere getaggte Zellen bleiben erhalten, und unbekannte Zellgrenzen sind null
Das semantics-Array bewahrt die geordneten Begin-, Inhalts- und Endereignisse des vollständigen Baums, stabile Knoten- und Eltern-IDs, aufgelöste und rohe Rollen, Namespaces, Sprache, alternativen Text, ActualText-Präsenz, Zellattribute sowie Seiten-, Strom-, MCID- oder Objektreferenzen
structureComplete beschreibt Traversierung und Abdeckung der Inhaltsbindung; es ist keine Tagging- oder Barrierefreiheits-Zertifizierung
Rückgabewerte
JSON und XHTML geben vollständige eigenständige Dokumente zurück; XHTML stellt verbundene Zellen mit Tabellenspannen dar und legt Blockquellen-Metadaten offen
CSV gibt nur Tabellenzellen zurück und ist leer, wenn die Seite keine Tabelle enthält; verbundene Zellen legen den Text in der Ankerzelle ab und lassen überdeckte Zellen leer
Eine ungültige Anforderung oder ein Extraktionsfehler gibt eine leere Zeichenfolge zurück
Anmerkungen
Die Analyse verwendet SetStructuredTextOptions unabhängig von den formatspezifischen Options; prüfen Sie GetLastStructuredTextDiagnostics für Lesequellen und Ausweichwarnungen
Die echte Tag-Baum-Reihenfolge hat Vorrang, wenn Inhaltsbindungen vollständig sind; ungelöster oder mehrdeutiger Inhalt behält extrahierten Text im gemischten oder geometrischen Ausweichmodus, und unbekannte benutzerdefinierte Rollen werden nicht aus ihren Namen geraten
Marked-Content-Bindungen unterscheiden Seitenströme und verschachtelte Form-XObject-Aufrufwege; gemeinsame getaggte Form-Vorkommen mit mehrdeutiger semantischer Reihenfolge werden offengelegt, statt eine erdachte Reihenfolge zuzuweisen
ActualText-Ersätze bewahren den Quelltext in JSON-Bereichen; Objektreferenzen bleiben als semantische Metadaten erhalten, ohne Annotationstext aus ihnen zu extrahieren
Die geometrische Tabellenerkennung verlangt ausgerichtete Zeilen mit mehreren Zellen; optionale Verbindungsableitung und Spaltenerkennung bleiben Heuristiken
Begrenzungsrahmen verwenden Seitenkoordinaten mit dem Ursprung oben links in PDF-Punkten; ein Fragment kann seine vollständigen Quelltextlauf-Grenzen behalten
Die Extraktion bewahrt die ausgewählte Seite und den offenen Writer-Tag-Stapel; aktuelle nicht gespeicherte Writer-Tags werden ohne schließende Tags und ohne Finalisieren des Dokuments einbezogen
DLL-Rückgabezeiger bleiben bis zum nächsten Zeichenfolgen zurückgebenden Aufruf für dieselbe Instanz gültig
LastErrorCode ist 111 bei ungültiger Seite, ungültigem Format oder ungültigen Optionen und 515, wenn die Extraktion fehlschlägt
Siehe auch
ExtractStructuredDocument, ExtractPageTextBlocks, GetPageText