ExtractStructuredPage

Texto, extração, dados estruturados

Descrição

Captura uma página PDF e serializa o modelo de texto estruturado dela como JSON do schema 2, XHTML semântico, ou CSV de tabelas

O modelo combina a ordem e os atributos reais da árvore de estrutura com fallback geométrico explícito, parágrafos, spans estilizados e tabelas com células vazias ou mescladas

Sintaxe

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

PageO número de página com base 1
FormatPDF_STRUCTURED_TEXT_JSON (0), PDF_STRUCTURED_TEXT_XHTML (1) ou PDF_STRUCTURED_TEXT_CSV (2)
OptionsZero ou PDF_STRUCTURED_TEXT_INCLUDE_STYLES (1) para incluir fonte, tamanho, cor e alinhamento vertical em JSON e XHTML

Hierarquia 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": []
}

Os metadados de página incluem readingOrderSource, structureComplete e warnings; as origens de leitura são tagged, mixed, geometric ou geometric-columns

Os blocos incluem nodeId, source, confidence, furniture, furnitureSource e bbox; os spans retêm originalText, contentEvent, nodeId e artifact junto com o texto de saída

Os metadados de tabela incluem logicalTable, logicalTableId, fragment e flags de continuação; as linhas carregam logicalRow e repeatedHeader

Cada célula registra rowSpan, columnSpan, anchorRow, anchorColumn, covered, header, mergeSource e confidence; células etiquetadas vazias são retidas e limites de célula desconhecidos são null

O array semantics preserva os eventos ordenados de begin, content e end da árvore completa, IDs estáveis de nó e de pai, papéis resolvidos e brutos, namespaces, idioma, texto alternativo, presença de ActualText, atributos de célula e referências a página, stream, MCID ou objeto

structureComplete descreve a cobertura de travessia e de binding de conteúdo; não é uma certificação de etiquetagem ou de acessibilidade

Valores retornados

JSON e XHTML retornam documentos autônomos completos; o XHTML representa células mescladas com spans de tabela e expõe metadados de origem do bloco

O CSV retorna apenas células de tabela e fica vazio quando a página não tem tabela; células mescladas colocam o texto na célula âncora e deixam as células cobertas vazias

Uma requisição inválida ou falha de extração retorna uma string vazia

Observações

A análise usa a SetStructuredTextOptions de forma independente do Options específico de formato; examine a GetLastStructuredTextDiagnostics para origens de leitura e avisos de fallback

A ordem real da árvore de etiquetas tem precedência quando os bindings de conteúdo estão completos; conteúdo não resolvido ou ambíguo retém o texto extraído em fallback mixed ou geometric, e papéis personalizados desconhecidos não são adivinhados pelos nomes deles

Os bindings de marked-content distinguem streams de página e rotas de invocação aninhadas de Form XObject; ocorrências compartilhadas de Form etiquetado com ordem semântica ambígua são divulgadas em vez de receber uma ordem inventada

Substituições de ActualText preservam o texto de origem nos spans do JSON; referências a objetos são retidas como metadados semânticos, sem extrair texto de anotações delas

A detecção geométrica de tabelas exige linhas com múltiplas células alinhadas; a inferência opcional de mesclagens e a detecção de colunas continuam heurísticas

As bounding boxes usam coordenadas de página com origem no canto superior esquerdo, em pontos PDF; um fragmento pode reter os limites completos do text-run de origem dele

A extração preserva a página selecionada e a pilha de tags do writer aberta; tags do writer não salvas no momento são incluídas sem tags de fechamento nem finalização do documento

Os ponteiros de retorno da DLL permanecem válidos até a próxima chamada que retorna string na mesma instância

LastErrorCode retorna 111 para página, formato ou opções inválidos e 515 quando a extração falha

Veja também

ExtractStructuredDocument, ExtractPageTextBlocks, GetPageText