Python e Pypdf - Como extrair texto das páginas para que haja espaços entre as linhas

StackOverflow https://stackoverflow.com/questions/1672466

  •  16-09-2019
  •  | 
  •  

Pergunta

Atualmente, se eu fizer um objeto de página de uma página PDF com PypDF e ExtractText (), o que acontece é que as linhas são concatenadas juntas. Por exemplo, se a linha 1 da página disser "Olá" e a linha 2 diz "mundo", o texto resultante retornado do ExtractText () é "helloworld" em vez de "Hello World". Alguém sabe como consertar isso ou tem sugestões para uma contorna? Eu realmente preciso que o texto tenha espaços entre as linhas, porque estou fazendo uma mineração de texto neste texto em PDF e não ter espaços entre as linhas mata ....

Foi útil?

Solução

Este é um problema comum com a análise do PDF. Você também pode esperar traços à direita que terá que corrigir em alguns casos. Eu criei uma solução alternativa para um dos meus projetos que descreverei aqui em breve:

eu usei pdfminer Para extrair XML do PDF e também encontrou palavras concatenadas no XML. Extraí o mesmo PDF que o HTML e o HTML pode ser descrito por linhas do seguinte regex:

<span style="position:absolute; writing-mode:lr-tb; left:[0-9]+px; top:([0-9]+)px; font-size:[0-9]+px;">([^<]*)</span>

Os vãos estão posicionados absolutamente e têm um estilo superior que você pode usar para determinar se uma quebra de linha aconteceu. Se uma quebra de linha aconteceu e a última palavra na última linha não tiver um painel à direita, você pode separar a última palavra na última linha e a primeira palavra na linha atual. Pode ser complicado nos detalhes, mas você pode corrigir quase todos os erros de análise de texto.

Além disso, você pode querer administrar uma biblioteca de dicionário como encantar No seu texto, encontre erros e se a correção sugerida pelo dicionário for como a palavra de erro, mas com um espaço em algum lugar, a palavra de erro provavelmente será um erro de análise e pode ser corrigida com a sugestão de dicionários.

Analisar o PDF é uma merda e, se você encontrar uma fonte melhor, use -a.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top