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

Parámetros

PageEl número de página basado en uno
FormatPDF_STRUCTURED_TEXT_JSON (0), PDF_STRUCTURED_TEXT_XHTML (1) o PDF_STRUCTURED_TEXT_CSV (2)
OptionsCero 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