Como transformar um PDF em uma base de dados

, que é o código que representa a quebra de linha.

O produto disso será uma lista, então usamos a função unlist para voltar ao formato de vetor.

Por último transformamos esse vetor em nossa primeira versão da base de dados, com a função enframe.

Certo.

Os dados estão em um formato mais amigável, mas longe ainda de serem considerados tratados.

Agora devemos começar a parte de mineração de texto, que é a limpeza e tratamento desses pedaços de texto.

Vamos começar pelo mais simples — ao visualizarmos o elemento texto_bruto, vemos que as primeiras quinze linhas não têm informações relevantes ao nosso objetivo, logo, vamos excluí-las, assim como as dez últimas linhas.

Feito isso, precisamos recorrer às expressões regulares para continuar a limpeza.

Um site que descobri e que gosto de utilizar é o regex101, pois ele permite testar, de forma rápida e sem precisar ficar executando código no RStudio, diversas combinações de regex até que você consiga a correspondência necessária.

Dito isso, podemos voltar ao arquivo original para observar quais partes do texto não devem continuar.

O primeiro ponto que reparei são os números de página, no rodapé de todas as folhas.

E no fim do arquivo temos texto sobressalente também:Print das linhas que devemos retirarTraduzindo essa interpretação para código, temos o seguinte:Aparentemente, então, tudo indo muito bem.

Temos apenas o texto estritamente necessário, em um formato maleável.

Agora nos falta colocar cada informação em seu quadrado, certo!.De acordo com o Edital, a ordem das informações é a seguinte:… número de inscrição, nome do candidato em ordem alfabética, escore bruto na parte 1, escore bruto na parte 2, somatório dos escores brutos nas partes 1 e 2, nota final nos itens do tipo D e nota final na prova de redação em Língua Portuguesa.

Nossa base de dados final terá, então, sete colunas e muitas linhas.

Parece que acabamos com a parte de limpeza, então vamos continuar a formatação.

Primeiro passo seria juntar em uma única linha todas as linhas do texto_limpo, de forma a possibilitar a quebra por aluno e, depois, por variável.

A separação dos alunos será feita graças ao delimitador “” presente no PDF, e as variáveis serão delimitadas com facilidade pela “,”.

Mas ops?.O RStudio avisou que ocorreu um erro na linha 22660… O que deu errado?3.

096.

18117113 não parece uma nota válidaAnalisando o resultado, parece que alguém ficou de fora da nossa ordenação — o candidato 18117113.

Voltando ao PDF original, vemos que é a primeira pessoa logo após as linhas que limpamos, da última página.

Ok… e!.Vamos voltar um pouco e achar essa pessoa.

Limpeza e tratamento dos dados é um processo recursivoO print nos mostrou que há uma linha com dois candidatos, mesmo após a quebra — ou seja, está faltando o delimitador do candidato 18117113.

Vamos resolver isso e executar todo o código novamente.

A seção de “limpeza dos dados” foi atualizadaSem avisos por parte do RStudio, então parece que deu certo!.Inspecionando o elemento texto_final_limpo, temos o esperado: muitas linhas (22.

669, para ser exato) e sete colunas.

Uma rápida inspeção mostra que ainda faltou uma pequena limpeza a ser feita: tem um ponto no último número:Não acaba, é isso?Há também outro detalhe: os números não são exatamente números, primeiro porque estão armazenados como texto, e segundo pois o separador decimal deveria ser a vírgula, e não o ponto.

Vamos arrumar esses detalhes então.

Acaba sim.

A limpeza e formatação.

Para poder começar a análise.

Agora sim.Temos a base de dados prometida desde o título deste artigo.

Considerações finaisMinha intenção com este estudo de caso foi mostrar o fluxo de trabalho que segui desde a identificação do problema (arquivo em PDF) até sua resolução (base de dados).

Importante frisar que esta é apenas a primeira etapa em todos os projetos relacionados a dados.

Apenas após a devida preparação das informações, por meio da limpeza e do tratamento, é que estamos aptos a iniciar a próxima fase, de exploração dos dados.

E é justamente isso que pretendo fazer no próximo artigo: explorar as informações obtidas e construir um aplicativo shiny que permita aos candidatos a consulta de suas notas, já com a comparação de seu desempenho relativo a todos os participantes.

Obrigado por ficar até o fim, e até a próxima!.

. More details

Leave a Reply