Advertisement

[Ferramentas] - Lendo texto e tabelas em PDF usando o Python


O tipo de arquivo PDF foi criado com o propósito de não ser editável, no entanto, muitas vezes nos encontramos em situações em que é necessário realizar a leitura e edição desses documentos. Imagine, por exemplo, que você conseguiu uma lista telefônica em formato PDF, porém, você precisa atualizar os números. Não parece um problema complexo, no entanto, dependendo do tamanho dessa lista, esse trabalho torna-se praticamente impossível de ser executado. 

Até mesmo os programadores, que possuem mais domínio de várias tecnologias, as vezes, também travam algumas batalhas com esse tipo de arquivo. Seria o sonho de qualquer um que os dados estivessem em bases de dados lineares como, por exemplo, um arquivo CSV ou então até mesmo um XLSX.  Considerando que nem sempre isso é possível, nesse post iremos mostrar algumas alternativas interessantes para realizar a leitura de documentos PDF e editá-los de maneira eficiente. 

1- Utilizando ferramentas online

A primeira forma de converter esses documentos e torná-los acessíveis a linguagem Python é utilizar um conversor online. O SmallPDF é um site completamente dedicado a tratar o formato PDF incluindo a conversão para formatos como DOCX ou XLSX. 

Para utilizá-lo, basta acessar o site e fazer upload da sua tabela:

É importante perceber que o site avisa que essa conversão irá traduzir páginas scanneadas como imagens apenas. A versão PRO utiliza um software de OCR para converter imagens para texto automaticamente. Quando você utiliza tabelas criadas no próprio word, por exemplo, a conversão é feita perfeitamente. A seguir, você pode realizar o download do documento já convertido para o formato do excel. 


Um dos problemas desse website é que ele possui cotas de conversão, ou seja, você poderá fazer algumas conversões gratuitamente e depois ele solicitará pagamento. Além disso, ele é mais indicado caso você queira fazer a conversão de um único documento e não uma família de documentos. 

Ao gerar o documento XLSX o pandas consegue realizar a leitura desse documento tranquilamente usando o seguinte trecho de código:

dfs = pd.read_excel("YOUR_FILE_NAME", sheet_name="SHEET_NAME")

2- PyPDF2

Caso você não goste de utilizar conversores online, você pode fazer a leitura de PDFs diretamente usando o python com a biblioteca PyPDF2. Essa biblioteca busca encontrar o texto de um PDF e torná-lo acessível ao desenvolvedor. 

Para utilizá-la é necessário primeiramente instalar a biblioteca via PIP ou conda:

pip install pypdf2
conda install -c conda-forge pypdf2

Em seguida, você poderá realizar a leitura do seu arquivo, veja o exemplo a seguir:

# importa as bibliotecas necessárias
import PyPDF2
import re

# Abre o arquivo pdf 
# lembre-se que para o windows você deve usar essa barra -> / 
# lembre-se também que você precisa colocar o caminho absoluto
pdf_file = open('PATH_TO_YOUR_FILE/holerite1.pdf', 'rb')

#Faz a leitura usando a biblioteca
read_pdf = PyPDF2.PdfFileReader(pdf_file)

# pega o numero de páginas
number_of_pages = read_pdf.getNumPages()

#lê a primeira página completa
page = read_pdf.getPage(0)

#extrai apenas o texto
page_content = page.extractText()

# faz a junção das linhas 
parsed = ''.join(page_content)

print("Sem eliminar as quebras")
print(parsed)

# remove as quebras de linha
parsed = re.sub('\n', '', parsed)
print("Após eliminar as quebras")
print(parsed)

print("\nPegando apenas as 20 primeiras posições")
novastring = parsed[0:20]
print(novastring)


O código apresentado acima apresenta alguns exemplos de como utilizar expressões regulares para pré-processar o texto que foi extraído. Este pré-processamento é essencial, visto que, o texto extraído apresenta vários caractéres desnecessários. Veja como um texto plano é exibido perfeitamente usando essa biblioteca:



Uma limitação dessa biblioteca é que ela não lida muito bem com tabelas. O resultado ao fazer a leitura de tabelas é bastante confuso e quase ilegível. Por isso, vamos mostrar uma alternativa quando você precisa ler uma tabela usando Python.

2- Tabula

O Tabula é a biblioteca perfeita para quando você precisa ler uma tabela dentro de um documento PDF. No exemlpo abaixo você verá como realizar essa importação:

  
  #importando tabelas em pdf usando o pytabula

  from tabula import read_pdf

  # faz a leitura de uma tabela complexa
  holerite = read_pdf("PATH_TO_YOUR_FILE/holerite1.pdf")
  # claramente o resultado mostra dataframe bastante mal formado. A ferramenta tem dificuldade de 
  # compreender como a tabela é formada e transforma-la em algo manipulável.)

  # faz a leitura de uma tabela comum
  tabelaComum = read_pdf("PATH_TO_YOUR_FILE/testetabela.pdf")
# bastante fácil de compreender e manipular os dados #Exemplos: # retorna a primeira linha da tabela completa tabelaComum.iloc[0] # pega o primeiro dado da tabela tabelaComum.iloc[0][0] # exibe todos os nomes da (primeira coluna) tabelaComum['Nome'] # exibe o primeiro nome da tabela tabelaComum['Nome'][0] #conta quantas linhas a tabela tem len(tabelaComum.iloc[0])
Veja abaixo como a tabela é impressa no terminal do python


Você quer ver as versões completas desse código? Acesse nosso nosso github e aproveite pra deixar aquela estrelinha em nossos repositórios.




Nenhum comentário

Conta pra mim sua opinião!

Fale comigo