ExtractStructuredPage
Texto, extracción, datos estructurados
Descripción
Captura una página PDF y serializa su modelo de texto estructurado como JSON del esquema 2, XHTML semántico o CSV de tablas
El modelo combina el orden y los atributos reales del árbol de estructura con un fallback geométrico explícito, párrafos, segmentos con estilo y tablas con celdas vacías o combinadas
Sintaxis
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);Parámetros
| Page | El número de página con base 1 |
|---|---|
| Format | PDF_STRUCTURED_TEXT_JSON (0), PDF_STRUCTURED_TEXT_XHTML (1) o PDF_STRUCTURED_TEXT_CSV (2) |
| Options | Cero o PDF_STRUCTURED_TEXT_INCLUDE_STYLES (1) para incluir fuente, tamaño, color y alineación vertical en JSON y XHTML |
Jerarquía 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": []
}
Los metadatos de página incluyen readingOrderSource, structureComplete y warnings; las fuentes de lectura son tagged, mixed, geometric o geometric-columns
Los bloques incluyen nodeId, source, confidence, furniture, furnitureSource y bbox; los segmentos conservan originalText, contentEvent, nodeId y artifact junto con el texto de salida
Los metadatos de tabla incluyen logicalTable, logicalTableId, fragment y banderas de continuación; las filas llevan logicalRow y repeatedHeader
Cada celda registra rowSpan, columnSpan, anchorRow, anchorColumn, covered, header, mergeSource y confidence; las celdas etiquetadas vacías se conservan y los límites de celda desconocidos son null
El arreglo semantics conserva los eventos ordenados de begin, content y end del árbol completo, los ID estables de nodo y de padre, los roles resueltos y sin procesar, los espacios de nombres, el idioma, el texto alternativo, la presencia de ActualText, los atributos de celda y las referencias a página, flujo, MCID u objeto
structureComplete describe la cobertura del recorrido y de la vinculación de contenido; no es una certificación de etiquetado ni de accesibilidad
Valores devueltos
JSON y XHTML devuelven documentos independientes completos; el XHTML representa las celdas combinadas con extensiones de tabla y expone los metadatos de origen del bloque
El CSV devuelve solo celdas de tabla y queda vacío cuando la página no tiene tablas; las celdas combinadas ponen el texto en la celda ancla y dejan vacías las celdas cubiertas
Una solicitud no válida o un error de extracción devuelve una cadena vacía
Observaciones
El análisis usa SetStructuredTextOptions de forma independiente de las Options específicas de formato; examine GetLastStructuredTextDiagnostics para conocer las fuentes de lectura y las advertencias de fallback
El orden real del árbol de etiquetas tiene precedencia cuando las vinculaciones de contenido están completas; el contenido sin resolver o ambiguo conserva el texto extraído en el fallback mixed o geometric, y los roles personalizados desconocidos no se adivinan por su nombre
Las vinculaciones de contenido marcado distinguen los flujos de página y las rutas de invocación de Form XObject anidados; las ocurrencias compartidas de Form etiquetado con orden semántico ambiguo se revelan en lugar de asignarles un orden inventado
Los reemplazos de ActualText conservan el texto de origen en los segmentos JSON; las referencias a objetos se retienen como metadatos semánticos, sin extraer de ellas el texto de las anotaciones
La detección geométrica de tablas requiere filas de varias celdas alineadas; la inferencia opcional de combinaciones y la detección de columnas siguen siendo heurísticas
Los cuadros delimitadores usan coordenadas de página con origen en la esquina superior izquierda en puntos PDF; un fragmento puede conservar los límites completos de su pasada de texto de origen
La extracción conserva la página seleccionada y la pila de etiquetas del escritor abiertas; las etiquetas del escritor aún sin guardar se incluyen sin cerrar etiquetas ni finalizar el documento
Los punteros de retorno de DLL siguen siendo válidos hasta la siguiente llamada que devuelva una cadena en la misma instancia
LastErrorCode es 111 para página, formato u opciones no válidos y 515 cuando falla la extracción
Véase también
ExtractStructuredDocument, ExtractPageTextBlocks, GetPageText