ExtractStructuredPage
Texto, extracción, datos estructurados
Descripción
Captura una página PDF y serializa su modelo de texto estructurado como JSON de esquema 2, XHTML semántico o CSV de tablas
El modelo combina el orden y los atributos reales del árbol de estructura con un recurso alternativo geométrico explícito, párrafos, tramos 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 basado en uno |
|---|---|
| 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 la fuente, el tamaño, el color y la 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 tramos conservan originalText, contentEvent, nodeId y artifact junto al texto de salida
Los metadatos de tabla incluyen logicalTable, logicalTableId, fragment e indicadores 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
La matriz semantics conserva los eventos ordenados de begin, content y end de todo el árbol, los identificadores estables de nodo y 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 las vinculaciones 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 de los bloques
El CSV devuelve solo celdas de tabla y está vacío cuando la página no tiene ninguna tabla; las celdas combinadas sitúan el texto en la celda de anclaje y dejan vacías las celdas cubiertas
Una solicitud no válida o un fallo de extracción devuelven una cadena vacía
Observaciones
El análisis utiliza SetStructuredTextOptions con independencia de las Options específicas de formato; consulte GetLastStructuredTextDiagnostics para conocer las fuentes de lectura y las advertencias de recurso alternativo
El orden real del árbol de etiquetas tiene prioridad cuando las vinculaciones de contenido están completas; el contenido sin resolver o ambiguo conserva el texto extraído en el recurso alternativo mixto o geométrico, 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 anidadas de Form XObject; las apariciones compartidas de Form etiquetadas con orden semántico ambiguo se revelan en lugar de asignarles un orden inventado
Los reemplazos ActualText conservan el texto de origen en los tramos JSON; las referencias a objetos se conservan como metadatos semánticos, sin extraer de ellas el texto de las anotaciones
La detección geométrica de tablas exige filas alineadas con varias celdas; la inferencia opcional de combinaciones y la detección de columnas siguen siendo heurísticas
Los cuadros delimitadores utilizan coordenadas de página con origen en la esquina superior izquierda en puntos PDF; un fragmento puede conservar los límites completos de su tramo de texto de origen
La extracción conserva la página seleccionada y la pila de etiquetas del escritor abiertas; las etiquetas del escritor sin guardar se incluyen sin etiquetas de cierre ni finalizar el documento
Los punteros devueltos por la DLL siguen siendo válidos hasta la siguiente llamada que devuelve una cadena en la misma instancia
LastErrorCode es 111 para páginas, formatos u opciones no válidos y 515 cuando falla la extracción
Véase también
ExtractStructuredDocument, ExtractPageTextBlocks, GetPageText