Ler Tabelas em PDF com Python
Nessa aula vamos te ensinar como ler tabelas em PDF usando o Python, isso mesmo, vai aprender como ler e importar tabelas para o Python!
O que você vai aprender?
Como Ler Tabelas em PDF com Python
Nessa aula nós vamos te mostrar como ler tabelas (importar) de dentro de um PDF.
Isso é muito importante no trabalho quando você precisa trazer tabelas que estão dentro de um PDF para poder utilizar as informações, tratá-las e fazer alguma análise de dados.
Então hoje você vai aprender como fazer isso com o Python e o que fazer se tiver algum problema na hora de importar.
Para fazer o download do(s) arquivo(s) utilizados na aula, preencha com o seu e-mail:
Não vamos te encaminhar nenhum tipo de SPAM! A Hashtag Treinamentos é uma empresa preocupada com a proteção de seus dados e realiza o tratamento de acordo com a Lei Geral de Proteção de Dados (Lei n. 13.709/18). Qualquer dúvida, nos contate.
Como Ler Tabelas em PDF Usando Python
Esse é um processo que várias pessoas já devem ter tentado automatizar de alguma forma, não é mesmo?
Você já deve ter passado por uma situação no trabalho que tinha que obter informações de tabelas que estavam dentro de PDF, mas não sabia como automatizar isso.
Então bora pra aula que hoje vamos te mostrar como trazer essas tabelas de um PDF para o Python e assim você vai poder tratar e fazer sua análise de dados.
Extrair Tabelas de um Arquivo PDF
A ideia dessa aula é te mostrar como extrair tabelas com Python para que você possa facilitar e automatizar algumas das suas tarefas no trabalho.
OBS: Nessa aula nós vamos utilizar o Jupyter, então se você ainda não tem ele instalado basta clicar aqui que temos um post com o passo a passo de instalação dessa IDE.
IMPORTANTE: Para essa aplicação em específico recomendamos que você utilize o Jupyter, pois quando trazemos informações de tabelas elas geralmente vão vir como dataframe e o Jupyter trabalha bem com isso. Se utilizar outra IDE é possível que tenha que fazer algumas outras instalações.
O primeiro passo é fazer a instalação da biblioteca tabula-py no Python, então como está utilizando o Jupyter, basta abrir o Prompt de Comando dele e escrever pip install tabula-py.
Outro ponto importante é que você verifique se tem o Java instalado no seu computador, pois essa biblioteca vai utilizar o Java para fazer a leitura do PDF.
Então se não tiver sugiro que instale e veja se está atualizado para que o código funcione corretamente.
Vamos dar início a parte de importação das tabelas dentro do arquivo PDF.
import tabula
lista_tabelas = tabula.read_pdf("ResultadoVale.pdf", pages="all")
print(len(lista_tabelas))Aqui estamos importando a biblioteca tabula, veja que nesse caso vamos deixá-la só como tabula ao invés de tabula-py.
Essa função do tabula.read_pdf vai precisar de 2 argumentos. O primeiro é o local/nome do arquivo e as páginas que vamos analisar.
Local/nome – Aqui se o arquivo estiver na mesma pasta (mesmo caminho) que o seu código você pode colocar apenas o nome do arquivo .pdf sem precisar inserir o caminho completo. Outro ponto importante é que você ao invés de colocar o nome do arquivo pode colocar o site que disponibilizamos já no arquivo.
Pages – Aqui você pode colocar all (todas) para pegar todas as páginas, ou pode escolher uma página em específico para analisar.
IMPORTANTE: Quando utilizamos essa leitura do PDF o Python vai retornar uma lista com as tabelas, por isso estamos utilizando o len, para verificar quantas tabelas foram encontradas dentro do nosso PDF.
IMPORTANTE 2: Esses métodos de leitura de PDF não são 100% corretos, ou seja, nem sempre vai funcionar muito bem, até porque o PDF foi feito para dificultar essa leitura automática. Então é possível que você pegue informações que não são tabelas ou até mesmo que elas venham juntas (2 tabelas em 1).
Agora vamos por exemplo analisar somente a página 11 desse arquivo e printar as tabelas para verificar se batem com o que temos no documento.
import tabula
lista_tabelas = tabula.read_pdf("ResultadoVale.pdf", pages="11")
print(len(lista_tabelas))
for tabela in lista_tabelas:
display(tabela)
Esse é o código para verificar somente a página 11 já com uma Estrutura de Repetição For para fazer o display (print com um melhor visual) das tabelas.

E aqui temos as tabelas que temos dentro do PDF. Então nesse caso você vai notar que conseguimos extrair as tabelas que possuem as mesmas informações que temos no PDF.
Essa forma que a tabela vem é um formato de Dataframe dentro do Python, isso quer dizer que podemos utilizar os Métodos do Pandas para poder trabalhar com essas informações.
Isso quer dizer que você vai poder fazer seu tratamento de dados dentro do Python caso precise fazer alguns ajustes.
OBS: Caso você ainda não saiba nada do Pandas nós temos um post completo aqui no blog que vai te ajudar muito com isso. Assim já vai conseguir fazer seu tratamento de dados tranquilamente, basta clicar aqui para acessar o post.
Agora você vai ver que nem sempre essa leitura de tabelas funciona perfeitamente, como é o exemplo que temos na página 10 desse arquivo PDF.
lista tabelas2 = tabula.read_pdf("ResultadoVale.pdf", pages="10")
print(len(lista_tabelas2))
display(lista_tabelas2[0])
Veja que ao ler essa página o Python só retorna apenas 1 tabela, quando na verdade temos 2 delas.
Veja que sinalizei na linha 11 ao utilizar o display, que essa linha na verdade é o título da segunda tabela.
Então temos 2 tabelas em uma, temos alguns títulos em locais indevidos, temos colunas que existem em uma tabela, mas não na outra. Temos até o percentual na última coluna que deveriam ser 2 colunas.
Então por melhor que seja essa biblioteca ela nem sempre vai conseguir trazer tudo certo, então em alguns casos será necessário fazer o tratamento de dados para poder separar e utilizar as informações de forma correta.
A ideia então seria fazer o tratamento dessas bases, por exemplo vamos fazer o tratamento da primeira para que ela fique igual temos no PDF.
tabela - lista_tabelas2[0]
tabela.columns = tabela.iloc[0]
tabela[[0,1]] = tabela["Variação percentual"].str.split(" ", expand=True)
tabela - tabela[1:9]
tabela = tabela.set_intex("R$ milhões")
tabela.columns = tabela.iloc[0]
tabela = tabela[1:]
tabela = tabela.drop("1T21/4T20 1T21/1T20", axis=1)
display(tabela)
Aqui colocamos os cabeçalhos na posição correta, colocamos a primeira coluna como índice, separamos a última coluna nos 2 percentuais que de fato são separados.
Agora você vai ver que ela fica bem mais parecida com o que temos no PDF e pronta para ser utilizada.

Mas o que acontece se não conseguir reconhecer a tabela utilizando o tabula, o que fazer?
Nesse caso podemos utilizar 2 parâmetros dentro da função tabula.read_pdf. Que são os parâmetros lattice e guess.
Lembrando que esses 2 casos vão servir para testar quando a tabela não foi encontrada, mas não quer dizer que já vá funcionar logo de cara também.
# lattice
lista_df = tabula.read_pdf("ResultadoVale.pdf", pages="10", lattice=True)
display(lista_df[0])
print("*" * 10)
# guess
lista_df = tabula.read_pdf("ResultadoVale.pdf", pages="10", guess=False)
display(lista_df[0])
Nesse exemplo utilizamos os 2 parâmetros na mesma página 10 e olha como ele trás a nossa tabela, então nesse caso ela fica ainda mais difícil de trabalhar.
No entanto terão casos que vai facilitar a sua vida na hora de trazer essas informações, então é sempre bom testar todos os 3 métodos antes de começar o seu tratamento de dados.
Conclusão de Como Ler Tabelas em PDF
Nessa aula nós aprendemos como importar tabelas de arquivos em PDF para o Python para que você possa utilizar essas informações para fazer suas análises de dados.
Essas análises vão poder utilizar com o pandas, pois é a melhor biblioteca para tratamento de dados.
Outro ponto importante foi a utilização de 2 métodos para auxiliar quando não conseguir encontrar as tabelas dentro do arquivo, então pode ser que tenha progresso com um desses 2!
Agora que você já sabe como importar tabelas PDF já pode começar a automatizar seus trabalhos!
Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!
Hashtag Treinamentos
Para acessar outras publicações de Python, clique aqui!
Posts mais recentes de Python
- Curso Básico de Python: Saia do Zero em 10 Aulas GrátisAprenda com o curso básico de Python gratuito da Hashtag: 10 aulas práticas, exercícios e projetos reais para sair do zero em programação.
- Agentes RAG com Python: como criar um assistente de IAAprenda a criar Agentes RAG com Python do zero: LangChain, FAISS e OpenAI para montar um assistente de IA que responde com base nos seus documentos.
- 25 Tipos de Gráficos em Python: Guia Completo com CódigoAprenda a criar os principais tipos de gráficos em Python com Plotly: barras, pizza, mapas e mais, com código pronto para copiar e usar.
Posts mais recentes da Hashtag Treinamentos
- Planilha de Controle de Notas Fiscais no Excel [Grátis]Baixe a planilha de controle de notas fiscais no Excel grátis: calcule ISS e retenções, veja o que está em aberto e gere a cobrança de cada nota de serviço.
- Qual IA usar na empresa: ChatGPT, Claude ou Perplexity?Qual IA usar na empresa: veja as diferenças entre ChatGPT, Claude e Perplexity e quando cada um rende mais em cada área da sua equipe.
- Apostilas Gratuitas em PDF: Excel, Power BI, Python e IABaixe apostilas gratuitas em PDF de Excel, Power BI, Python, Claude e agentes de IA, com exercícios e gabarito. Escolha a sua e comece hoje.








