Extraindo tabelas de arquivos PDF com o R

[et_pb_section admin_label="section"][et_pb_row admin_label="row"][et_pb_column type="4_4"][et_pb_text admin_label="Texto" background_layout="light" text_orientation="justified" text_font="Verdana||||" text_font_size="18" use_border_color="off" border_color="#ffffff" border_style="solid"]

Na edição 28 do Clube do Código, abordamos um problema prático: extrair tabelas de arquivos PDF. Isso pode ser um transtorno, não é mesmo? Já pensou ter que pegar dados de uma tabela, um a um, e colocar em outro programa? Com o R, isso, claro, é feito de outra forma. Utilizamos o pacote tabulizer para essa empreitada. Por exemplo, podemos estar interessados em pegar uma tabela do Relatório Trimestral de Inflação. Assim, começamos o nosso código, como abaixo.

library(tabulizer)
url = 'http://www.bcb.gov.br/htms/relinf/port/2017/03/ri201703c2p.pdf'
out = extract_tables(url)

Com três linhas de código, nós extraimos as tabelas do arquivo PDF. Agora, basta limpar um pouco os dados e utilizar a função stargazer para colocar essa tabela abaixo.

[/et_pb_text][/et_pb_column][/et_pb_row][et_pb_row admin_label="row"][et_pb_column type="1_3"][/et_pb_column][et_pb_column type="1_3"][et_pb_code admin_label="Código"]<center> <table style="text-align:center"><caption><strong>Projeção da inflação no cenário com taxas de juros e câmbio da pesquisa Focus</strong></caption> <tr><td colspan="8" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">Trimestre</td><td>50% Lower</td><td>30% Lower</td><td>10% Lower</td><td>Central</td><td>10% Upper</td><td>30% Upper</td><td>50% Upper</td></tr> <tr><td colspan="8" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">2017 1</td><td>4,6</td><td>4,6</td><td>4,6</td><td>4,6</td><td>4,6</td><td>4,6</td><td>4,6</td></tr> <tr><td style="text-align:left">2017 2</td><td>3,5</td><td>3,7</td><td>3,8</td><td>3,9</td><td>4,0</td><td>4,1</td><td>4,3</td></tr> <tr><td style="text-align:left"></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr> <tr><td style="text-align:left">2017 3</td><td>2,8</td><td>3,1</td><td>3,3</td><td>3,4</td><td>3,5</td><td>3,7</td><td>4,0</td></tr> <tr><td style="text-align:left"></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr> <tr><td style="text-align:left">2017 4</td><td>3,2</td><td>3,6</td><td>3,9</td><td>4,0</td><td>4,1</td><td>4,4</td><td>4,8</td></tr> <tr><td style="text-align:left">2018 1</td><td>3,5</td><td>3,9</td><td>4,2</td><td>4,4</td><td>4,6</td><td>4,9</td><td>5,3</td></tr> <tr><td style="text-align:left">2018 2</td><td>3,2</td><td>3,7</td><td>4,0</td><td>4,2</td><td>4,4</td><td>4,7</td><td>5,2</td></tr> <tr><td style="text-align:left">2018 3</td><td>3,2</td><td>3,7</td><td>4,0</td><td>4,2</td><td>4,4</td><td>4,7</td><td>5,2</td></tr> <tr><td style="text-align:left">2018 4</td><td>3,5</td><td>4,0</td><td>4,3</td><td>4,5</td><td>4,7</td><td>5,0</td><td>5,5</td></tr> <tr><td style="text-align:left">2019 1</td><td>3,6</td><td>4,1</td><td>4,4</td><td>4,6</td><td>4,8</td><td>5,1</td><td>5,6</td></tr> <tr><td colspan="8" style="border-bottom: 1px solid black"></td></tr><tr><td colspan="8" style="text-align:left">Fonte: Relatório de Inflação BCB - Março de 2017.</td></tr> </table> </center>[/et_pb_code][/et_pb_column][et_pb_column type="1_3"][/et_pb_column][/et_pb_row][et_pb_row admin_label="row"][et_pb_column type="4_4"][et_pb_text admin_label="Texto" background_layout="light" text_orientation="justified" text_font="Verdana||||" text_font_size="18" use_border_color="off" border_color="#ffffff" border_style="solid"]

Aqui, para colocar no Blog, estou usando um código html. Mas é possível usar LaTeX e colocar essa tabela em outro pdf, como faço na edição 28 do Clube do Código. Bacana, não? 🙂

[/et_pb_text][et_pb_button admin_label="Botão" button_url="https://analisemacro.com.br/clube-do-codigo/" url_new_window="off" button_text="Receba exercícios como esse no Clube do Código!" button_alignment="center" background_layout="light" custom_button="off" button_letter_spacing="0" button_use_icon="default" button_icon_placement="right" button_on_hover="on" button_letter_spacing_hover="0"] [/et_pb_button][/et_pb_column][/et_pb_row][/et_pb_section]

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

O que é um Vector Database e como criar um com LangChain

Nesta postagem, mostramos como construir um pipeline simples de RAG (Retrieval-Augmented Generation) usando o LangChain, o modelo Gemini 2.0 Flash e o Vector Database Chroma. Utilizamos como exemplo o Relatório de Inflação de junho de 2025 do Banco Central do Brasil. O fluxo envolve o download e leitura do PDF, divisão do texto com RecursiveCharacterTextSplitter, geração de embeddings com Gemini, armazenamento vetorial com Chroma e busca semântica para responder perguntas com base no conteúdo do relatório. É uma aplicação prática e didática para economistas que desejam integrar IA ao seu fluxo de análise.

Automatizando a Construção de Códigos em Python com LangGraph

Neste post, mostramos como construir um agente de código em Python utilizando LangGraph, LangChain e Gemini. A proposta é construir um protótipo para automatizar o ciclo completo de geração, execução e correção de código com o uso de LLMs, organizando o processo em um grafo de estados.

Análise de Dados com REPL Tool e LLM usando LangGraph

Neste post, vamos mostrar como você pode criar um agente que interpreta e executa código Python em tempo real, utilizando o REPL-Tool e um LLM da família Gemini. Começamos com um exemplo genérico e, em seguida, aplicamos a mesma estrutura à análise econômica de uma série histórica do IPCA.

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp

Boletim AM

Preencha o formulário abaixo para receber nossos boletins semanais diretamente em seu e-mail.