Skip to content

[PDF Generator] <boxed-text> fora de <sec> é descartado do corpo do PDF #1370

Description

@Rossi-Luciano

Descrição do problema

extract_body_data (packtools/sps/formats/pdf/pipeline/xml.py) monta a lista de seções do corpo a partir de:

body_sections = xml_tree.xpath(
    './/sec[not(ancestor::abstract) and not(ancestor::trans-abstract)]'
)
body = xml_tree.find('.//body')
if body is not None and body.find('.//sec') is None:
    body_sections = [body] + body_sections

O fallback que trata <body> como uma seção extra só entra em ação quando o documento não tem nenhum <sec> em lugar nenhum (caso da #1351). Quando o artigo tem <sec> normalmente, mas também tem um <boxed-text> como filho direto de <body> (irmão dos <sec>, não aninhado dentro de nenhum deles - um "quadro" ou "destaque" fora do fluxo normal de seções), esse <boxed-text> nunca é visitado por extract_body_data: não é um <sec>, e o fallback não dispara porque já existem outros <sec> no documento. O conteúdo inteiro do quadro - título, texto, listas - some do PDF sem nenhum aviso.

Passos para reproduzir o problema

  1. anp/v84n11/1678-4227-anp-84-11-s00461827165.xml (anexo a34.xml): logo após os <sec> normais do corpo, há um <boxed-text> filho direto de <body> com <caption><title>TEACHING POINTS</title></caption> e uma <list list-type="order"> de 3 itens.
  2. Gerar o PDF - o quadro "TEACHING POINTS" com os 3 pontos de ensino (comuns em artigos de caso clínico dessa revista) não aparece em lugar nenhum do documento.

Comportamento esperado

Um <boxed-text> que seja filho direto de <body> (fora de qualquer <sec>) deveria ser tratado como um bloco de conteúdo próprio no PDF (por exemplo, como uma seção sem título ou como um destaque visualmente diferenciado), preservando seu <caption>/<title> e conteúdo (parágrafos, listas), em vez de ser descartado.

Anexos

Caso encontrado por uma auditoria de cobertura estrutural rodada contra um corpus real de 593 artigos (pacote fornecido pela Roberta, layout_roberta/pacote_xml_pdf_csv/). Confirmado em pelo menos 2 dos 593 artigos, ambos da revista anp (Arquivos de Neuro-Psiquiatria), que usa esse padrão de quadro "TEACHING POINTS" em relatos de caso.

O arquivo que evidencia o caso foi adicionado ao corpus de amostras reais (layout_examples_rafael/corpus/) como a34.xml, junto com o PDF real do periódico como referência (a34.ground_truth.pdf) e o PDF gerado pelo código atual (a34.generated.pdf) evidenciando a perda.

Função envolvida: extract_body_data (packtools/sps/formats/pdf/pipeline/xml.py).

Ambiente utilizado

packtools, gerador de PDF (packtools/sps/formats/pdf/), observado ao rodar extract_body_data contra um corpus de 593 artigos reais.

Contexto e relação com a #1351

A #1351 tratou o caso de <body> sem nenhum <sec> (artigo inteiro sem seções). Este é um caso diferente: o artigo tem seções normalmente, mas um bloco de conteúdo específico (<boxed-text>) fica fora delas - por isso o fallback da #1351 não cobre este caso.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

PDF generatorFuncionalidade de geração de PDFbug

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions