ExtractStructuredPage
Texte, extraction, données structurées
Description
Capture une page PDF et sérialise son modèle de texte structuré en JSON du schéma 2, XHTML sémantique ou CSV de tableaux
Le modèle combine l’ordre et les attributs réels de l’arbre de structure avec un repli géométrique explicite, des paragraphes, des étendues stylées et des tableaux avec cellules vides ou fusionnées
Syntaxe
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);Paramètres
| Page | Numéro de page basé sur 1 |
|---|---|
| Format | PDF_STRUCTURED_TEXT_JSON (0), PDF_STRUCTURED_TEXT_XHTML (1) ou PDF_STRUCTURED_TEXT_CSV (2) |
| Options | Zéro ou PDF_STRUCTURED_TEXT_INCLUDE_STYLES (1) pour inclure la police, la taille, la couleur et l'alignement vertical dans JSON et XHTML |
Hiérarchie 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": []
}Les métadonnées de page incluent readingOrderSource, structureComplete et warnings ; les sources de lecture sont tagged, mixed, geometric ou geometric-columns
Les blocs incluent nodeId, source, confidence, furniture, furnitureSource et bbox ; les étendues conservent originalText, contentEvent, nodeId et artifact à côté du texte de sortie
Les métadonnées de tableaux incluent logicalTable, logicalTableId, fragment et les drapeaux de continuation ; les lignes portent logicalRow et repeatedHeader
Chaque cellule enregistre rowSpan, columnSpan, anchorRow, anchorColumn, covered, header, mergeSource et confidence ; les cellules balisées vides sont conservées et les bornes de cellules inconnues valent null
Le tableau semantics préserve les événements begin, content et end ordonnés de l’arbre complet, les IDs stables de nœuds et de parents, les rôles résolus et bruts, les espaces de noms, la langue, le texte alternatif, la présence d’ActualText, les attributs de cellules et les références de page, flux, MCID ou objet
structureComplete décrit la couverture de la traversée et de la liaison de contenu ; ce n’est pas une certification de balisage ni d’accessibilité
Valeurs de retour
JSON et XHTML renvoient des documents autonomes complets ; le XHTML représente les cellules fusionnées avec des étendues de tableau et expose les métadonnées de source des blocs
CSV renvoie uniquement les cellules de tableaux et reste vide si la page ne comporte aucun tableau ; les cellules fusionnées placent le texte dans la cellule ancre et laissent les cellules couvertes vides
Une demande non valide ou un échec d’extraction renvoie une chaîne vide
Remarques
L’analyse utilise SetStructuredTextOptions indépendamment des Options propres au format ; consultez GetLastStructuredTextDiagnostics pour les sources de lecture et les avertissements de repli
L’ordre réel de l’arbre de balises prime lorsque les liaisons de contenu sont complètes ; un contenu non résolu ou ambigu conserve son texte extrait dans le repli mixed ou geometric, et les rôles personnalisés inconnus ne sont pas devinés d’après leur nom
Les liaisons de contenu marqué distinguent les flux de page des routes d’invocation de Form XObject imbriquées ; les occurrences partagées de Form balisé à l’ordre sémantique ambigu sont signalées au lieu de recevoir un ordre inventé
Les remplacements ActualText préservent le texte source dans les étendues JSON ; les références d’objets sont conservées comme métadonnées sémantiques, sans en extraire le texte des annotations
La détection géométrique des tableaux exige des lignes multicellules alignées ; l’inférence de fusions et la détection de colonnes optionnelles restent heuristiques
Les cadres englobants utilisent les coordonnées de page supérieures gauches en points PDF ; un fragment peut conserver les bornes complètes de sa séquence de texte source
L’extraction préserve la page sélectionnée et la pile de balises du writer ouverte ; les balises courantes non enregistrées du writer sont incluses sans fermer de balises ni finaliser le document
Les pointeurs de retour DLL restent valides jusqu'au prochain appel renvoyant une chaîne sur la même instance
LastErrorCode vaut 111 pour une page, un format ou des options non valides, et 515 lorsque l'extraction échoue
Voir aussi
ExtractStructuredDocument, ExtractPageTextBlocks, GetPageText