Skip to content

Instantly share code, notes, and snippets.

@fernandobarbalho
Created February 20, 2019 18:15
Show Gist options
  • Save fernandobarbalho/aca0784c2894cc42541911e8661a1353 to your computer and use it in GitHub Desktop.
Save fernandobarbalho/aca0784c2894cc42541911e8661a1353 to your computer and use it in GitHub Desktop.
Função para leitura de uma tabela de arquivo pdf e conversão para dataframe
#Função para leitura de uma tabela de arquivo pdf e conversão para dataframe
tradutor_pdf_tabela <- function(arquivo_pdf, delimitador_ini,delimitador_fim,rubricas){
library(pdftools)
txt <- pdf_text(arquivo_pdf)
#Localiza o ponto inicail de tratamento do arquivo
pg_encontradas_ini<- which(regexpr(delimitador_ini,txt, ignore.case = TRUE)>0)
pg_encontradas_fim<- which(regexpr(delimitador_fim,txt, ignore.case = TRUE)>0)
pg_ini<-min(pg_encontradas_ini)
pg_fim <- pg_encontradas_fim[min(which(pg_encontradas_fim>=pg_ini))]
texto_pesquisa<-""
#monta o novo texto
for (i in pg_ini:pg_fim){
texto_pesquisa<-paste0(texto_pesquisa,txt[i])
}
texto_pesquisa <-substr(texto_pesquisa,regexpr(delimitador_ini,texto_pesquisa, ignore.case = TRUE),regexpr(delimitador_fim,texto_pesquisa, ignore.case = TRUE))
for (i in 1:(length(rubricas))){
pos_ini<-regexpr(rubricas[i],texto_pesquisa, ignore.case = TRUE)+nchar(rubricas[i])
pos_fim<-pos_ini+regexpr("\r",substr(texto_pesquisa,pos_ini,100000), ignore.case = TRUE)-2
linha <- substr(texto_pesquisa,
pos_ini,
pos_fim)
#(regexpr(rubricas[i+1],texto_pesquisa, ignore.case = TRUE)-5))
valores<-c(strsplit(linha," "))
valores<-valores[[1]]
valores<-valores[which(valores!="")]
if (i==1){df_linha<-data.frame(rubricas[i],t(valores))} else
{df_linha <- rbind(df_linha,data.frame(rubricas[i],t(valores)))}
}
df_linha
}
#Exemplo de utilização da função.
#Para esse caso foi utilizado como referência o arquivo pdf disponível no seguinte endereço
# http://www.planejamento.gov.br/secretarias/upload/Arquivos/servidor/publicacoes/boletim_estatistico_pessoal/2017/bep-dezembro-2017
arquivo_pdf<-"document.pdf"
delimitador_ini<-"Tabela 1.5"
delimitador_fim<-"Fonte:"
rubricas<- c('EMPRESA BRASIL DE COMUNICAÇÃO - EBC',
'EMPRESA BRASILEIRA DE PESQUISA AGROPECUÁRIA - EMBRAPA',
'COMPANHIA NACIONAL DE ABASTECIMENTO - CONAB',
'CENTRO NACIONAL DE TECN ELETRÔNICA AVANÇADA - CEITEC',
'HOSPITAL DE CLÍNICAS DE PORTO ALEGRE - HCPA',
'EMPRESA BRASILEIRA DE SERVIÇOS HOSPITALARES - EBSERH',
'COMPANHIA DE PESQUISA DE RECURSOS MINERAIS - CPRM','EMPRESA DE PESQUISA ENERGÉTICA - EPE',
'VALEC-ENGENHARIA, CONSTRUÇÕES E FERROVIAS',
'EMPRESA DE PLANEJAMENTO E LOGÍSTICA - EPL',
'INDÚSTRIA DE MATERIAL BÉLICO DO BRASIL - IMBEL',
'COMPANHIA DE DESENV. DO VALE DO SÃO FRANCISCO - CODEVASF')
df_traducao<-tradutor_pdf_tabela(arquivo_pdf, delimitador_ini,delimitador_fim,rubricas)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment