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 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 | O número de página com base 1 |
|---|---|
| Format | PDF_STRUCTURED_TEXT_JSON (0), PDF_STRUCTURED_TEXT_XHTML (1) ou PDF_STRUCTURED_TEXT_CSV (2) |
| Options | Zero 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