Por que o PDF de coluna dupla é extraído em série? Mantenha as coordenadas primeiro e depois fale sobre a ordem de leitura

Explique que a serialização de texto PDF em duas colunas decorre da falta de estrutura semântica do formato e esclareça que o parâmetro de classificação é apenas uma classificação geométrica. Um exemplo sintético de Python baseado no particionamento de coordenadas é fornecido para demonstrar a lógica de reorganização de sequência, esclarecer limites aplicáveis e linhas vermelhas de revisão manual e fornecer um caminho de aceitação pragmático que conecta o fluxo de trabalho de tradução do OmniDoc.

As sequências de texto extraídas de PDFs de coluna dupla muitas vezes não são reconhecidas incorretamente, mas são lidas na ordem errada. Este artigo é destinado a leitores que precisam extrair texto de PDFs de duas colunas, como artigos e relatórios, e depois traduzi-los ou organizá-los.

Os leitores geralmente se deparam com esta situação: no meio da coluna da esquerda, a próxima frase é seguida pela explicação da fórmula na coluna da direita. Os caracteres podem ser todos reconhecidos corretamente, mas a ordem é interrompida. Este artigo explica primeiro por que ocorre a serialização e, em seguida, usa um exemplo sintético para demonstrar como reorganizar a ordem particionando por coordenadas. Finalmente, fornece os limites aplicáveis e a lista de aceitação para facilitar a avaliação se ele pode ser usado em seus próprios arquivos.

Por que o PDF de coluna dupla é extraído em série? Conclusão de uma frase

Mantenha as coordenadas e a página de origem primeiro e depois classifique de acordo com as regras regionais. Não comprima diretamente a página inteira em uma sequência longa.

sua situaçãoPráticas recomendadasrazão
Artigo comum de duas colunas, serialização de textoLeia primeiro a coluna esquerda de uma seção e depois leia a coluna direitaA emenda alternada linha por linha destruirá parágrafos
Só queria fazer uma tentativa rápidaCompare os resultados de ligar e desligar sortsort faz apenas classificação geométrica, adequada para páginas de regras
As páginas têm títulos de colunas cruzadas, notas laterais e notas de rodapéProcesse separadamente por região e verifique as relações regionaisA classificação geométrica por si só não pode determinar a atribuição desses conteúdos.
Precisa ser entregue ao modelo de traduçãoMantenha as coordenadas e os números das páginas, organize primeiro a ordem e depois traduzaContextos na ordem errada são difíceis de remediar, mesmo alterando o modelo.

Por que o pedido está bagunçado?

O PDF registra a posição de cada parágrafo do texto, e não "que parágrafo é este e a qual coluna ele pertence?" Quando a ferramenta de extração gera saída por coordenadas, se não houver regras de área, o texto nas colunas esquerda e direita poderá ficar entrelaçado.

Tais problemas não surgem necessariamente durante a fase de identificação. Talvez as palavras sejam todas mencionadas corretamente, mas na ordem errada. Portanto, a ideia da solução deve se concentrar na classificação e no zoneamento, em vez de alterar repetidamente os links de reconhecimento ou tradução.

Mantenha as coordenadas primeiro e depois fale sobre a ordem de leitura

Antes de resolver o problema de ordenação, preserve as coordenadas e a página de origem do texto. Não se apresse em compactar a página inteira em uma longa sequência.

  • Mantenha as quatro coordenadas de cada bloco de texto para facilitar o julgamento posterior da propriedade da área.
  • Mantenha o número da página de origem para facilitar o retrocesso e a verificação manual.
  • Uma vez perdida a informação regional, as traduções subsequentes obterão o contexto errado e a alteração do modelo de tradução poderá não ser capaz de remediar o problema.

sort=True vale a pena tentar, mas não é um entendimento de layout

PyMuPDF fornece diferentes formas de extração, como texto, palavras, blocos, etc. O processamento específico de sort varia de acordo com o tipo e versão de saída. Não pode ser geralmente descrito como um algoritmo de composição tipográfica fixo, nem pode ser prometido que restaurará a ordem de leitura de todos os documentos.

As sugestões de uso são as seguintes:

  • Para a página de regras, você pode primeiro comparar os resultados da ativação e desativação da classificação.
  • Para páginas com títulos de colunas cruzadas, notas laterais e notas de rodapé, a relação de área deve ser verificada novamente.
  • O PDF pode conter tags estruturais, mas isso não significa que a interface de extração usada atualmente fornecerá automaticamente a árvore de parágrafo semântica necessária.

Este artigo não implementa o reconhecimento universal de layout, mas apenas demonstra "como classificar de acordo com as regras regionais existentes" e explica claramente os limites das capacidades. Para a interface e o formulário de extração, consulte Guia oficial de extração de texto PyMuPDF.

Use cinco blocos de texto sintetizados para explicar o problema

A página de exemplo tem 600 pontos de largura, com um limite de 300 pontos entre colunas; dentro de 80 pontos do topo está a área de título de coluna cruzada e abaixo dela está a área de texto. A entrada é deliberadamente embaralhada: o segundo parágrafo da coluna da direita vem primeiro e o primeiro parágrafo da coluna da esquerda vem por último. Cada tupla contém as quatro coordenadas do retângulo e do texto. Esta é uma estrutura simplificada definida para fins de demonstração e não é equivalente ao valor de retorno total de get_text("blocks").

O resultado esperado deve ser: título, primeiro parágrafo na coluna da esquerda, segundo parágrafo na coluna da esquerda, primeiro parágrafo na coluna da direita, segundo parágrafo na coluna da direita. Blocos de texto que ultrapassam os limites das colunas devem ir para a lista de exceções, em vez de serem descartados silenciosamente ou colocados na coluna da esquerda.

Um pequeno exemplo que pode ser executado completamente

Os exemplos a seguir usam apenas a biblioteca padrão do Python. Ao conectar-se ao PyMuPDF, você pode manter os primeiros cinco campos dos resultados da extração de bloco e excluir primeiro os blocos que não sejam de texto. O exemplo não abre arquivos externos, não requer OCR e não infere automaticamente os limites das colunas.

def order_known_layout(blocks, split_x=300, title_bottom=80):
    groups = {"title": [], "left": [], "right": []}
    rejected = []
    for block in blocks:
        x0, y0, x1, y1, text = block
        if x1 <= x0 or y1 <= y0:
            rejected.append(block)
            continue
        if y1 <= title_bottom:
            region = "title"
        elif y0 < title_bottom:
            rejected.append(block)
            continue
        elif x1 <= split_x:
            region = "left"
        elif x0 >= split_x:
            region = "right"
        else:
            rejected.append(block)
            continue
        groups[region].append(block)
    ordered = []
    for region in ("title", "left", "right"):
        ordered.extend(sorted(groups[region], key=lambda b: (b[1], b[0])))
    return [b[4] for b in ordered], rejected

sample = [(330, 160, 550, 190, "R2"), (40, 100, 270, 130, "L1"),
          (40, 20, 550, 50, "TITLE"), (330, 100, 550, 130, "R1"),
          (40, 160, 270, 190, "L2")]
ordered, rejected = order_known_layout(sample)
assert ordered == ["TITLE", "L1", "L2", "R1", "R2"]
assert rejected == []
wide = (40, 220, 550, 250, "FULL WIDTH BODY")
assert order_known_layout(sample + [wide])[1] == [wide]
assert order_known_layout([]) == ([], [])
print("known-layout examples: 3 assertions passed")

Os 80 e 300 no exemplo vêm das configurações desta página composta e não são limites empíricos que se aplicam a todos os PDFs. Quando a largura das colunas esquerda e direita da próxima página muda, se os parâmetros da página anterior forem usados, pode ocorrer "o programa funciona normalmente, mas o conteúdo está errado". As regras regionais devem seguir a página, pelo menos registrar a versão da regra e o tamanho da página.

📊 Comparação principal

Método de processamentoo que pode ser feitoO que prestar atenção
Use sort=True diretamenteFaça classificação geométrica por coordenadas. Você pode experimentar primeiro na página de regras.Não entendo a propriedade de títulos de colunas cruzadas, notas laterais e notas de rodapé
Classificar com base na partição de coordenadasDivida a área primeiro e depois leia por seção para facilitar a inspeção.O limite de partição depende da página e precisa ser verificado por página.
Ordem de leitura anotada manualmenteO resultado é o mais controlável e adequado para verificação de documentos importantesAlto custo, adequado para verificações pontuais e benchmarks

Não verifique apenas se há algum erro durante a aceitação

Verifique os itensO que verO que fazer quando não corresponde
Ordem de áreaApós o título, primeiro a coluna esquerda completa, depois a coluna direita completaVerifique as regras de partição e não corrija alterando strings
conservação de conteúdoO número de blocos aceitos mais o número de blocos rejeitados é igual ao número de blocos de entradaBloqueie a entrega e verifique se há perda de bloqueio silencioso
Texto de barra cruzadaaparecer na lista de negaçãoAdicione uma nova seção de obstáculos ou envie-a para julgamento manual
Girar e cortarO bloco de entrada usa o mesmo sistema de coordenadas da partiçãoUnifique as coordenadas primeiro e depois faça o julgamento de inclusão
Cabeçalho, rodapéCategorizado separadamente por regras de negóciosNão exclua todo o texto inferior

Um artigo real também pode ter uma estrutura como esta: insira uma figura com colunas cruzadas no meio e reinicie colunas duplas abaixo da figura. Neste momento, a página precisa ser dividida primeiro nas seções superior e inferior e, em seguida, classificada separadamente. Os três grupos únicos de partições neste artigo não são suficientes. A direção de leitura aqui não deve ser aplicada ao layout vertical chinês, ao texto da direita para a esquerda e às margens complexas.

🎯 Qual método é adequado para você?

se você……

  • Apenas páginas de coluna única ou coluna dupla que precisam processar regras: primeiro compare os resultados da ativação e desativação do sort e, em seguida, decida se as regras de partição são necessárias.
  • Trate de artigos com títulos, figuras ou notas de rodapé estendidos: divida as páginas por seções e defina listas de exceções para conteúdo estendido.
  • A tradução deverá ser entregue a terceiros: Guarde as coordenadas e os números das páginas, e verifique-os um a um de acordo com a lista de aceitação. Não verifique apenas se há erros durante a operação.
  • Não queira manter scripts você mesmo: você pode usar diretamente ferramentas de tradução de documentos prontas e verificar a tradução com o mesmo conjunto de listas de verificação sequenciais.

Como receber o processo de tradução do OmniDoc

O valor dos scripts autoconstruídos reside em escrever claramente as regras de aceitação; o valor das ferramentas de tradução prontas reside na redução das ligações operacionais entre ficheiros e traduções. Não há conflito entre os dois. OmniDoc (portal de produtos) fornece um portal de tradução de documentos, e o site oficial também apresenta funções como OCR, glossário e comparação bilíngue. Você pode selecionar um artigo dessensibilizado que tenha permissão para carregar e verificar a tradução usando a mesma lista de verificação sequencial.

Concentre-se em verificar os seguintes itens:

  • Se a primeira frase após o título da coluna cruzada está conectada corretamente.
  • As legendas das figuras foram incorporadas ao texto?
  • Se as referências de notas de rodapé ainda estão mapeadas para o local correto.

Isso avalia os resultados, não infere os algoritmos internos do OmniDoc. Se os resultados não atenderem aos requisitos, mantenha a página original e a seção de erros, primeiro descubra se o problema está no processo de reconhecimento, classificação ou tradução e depois decida como corrigi-lo.

❓ Perguntas frequentes (FAQ)

1. PDF serial de coluna dupla, é reconhecido incorretamente?

incerto. As palavras podem ser todas reconhecidas corretamente, mas o problema geralmente está na ordem de leitura, portanto, a classificação e as regras regionais devem ser verificadas primeiro.

2. sort=True pode resolver diretamente o problema de ordem de coluna dupla?

Não pode ser generalizado. O manuseio do sort varia de acordo com o tipo e versão de saída, não é um entendedor de layout e não pode prometer restaurar a ordem de leitura de todos os documentos. Você pode experimentar primeiro a página de regras e também precisa verificar o relacionamento regional para páginas com conteúdo de colunas cruzadas.

3. Por que a página inteira não pode ser compactada em uma string longa?

Depois que as coordenadas e as informações da área forem perdidas, as traduções subsequentes obterão o contexto errado e a alteração do modelo de tradução poderá não ser capaz de remediar o problema.

4. Os 80 pontos e 300 pontos do exemplo podem ser usados diretamente em outros PDFs?

não pode. Elas são apenas as configurações desta página composta. Quando o tamanho da página ou a largura da coluna mudam, a versão da regra deve ser verificada e registrada separadamente, página por página.

📝 Resumo

Para problemas de pedidos em PDFs de coluna dupla, as coordenadas e as páginas de origem devem ser retidas primeiro, depois processadas usando regras regionais e verificadas item por item de acordo com a lista de verificação de aceitação. Os scripts autoconstruídos são adequados para escrever regras com clareza e as ferramentas prontas são adequadas para reduzir os vínculos operacionais. Os dois podem ser usados juntos.

Experimente agora: carregue o documento para iniciar a tradução, mantendo o layout original

Atualizado em 2026-11-13