How to read PDF data in R?

5

I have numerous PDF files containing CPRM water wells , like this:

link

Within these files are information on the soil lithology of each well, as can be seen in the image below.

The lithology table is on the second sheet of the file and varies according to the characteristics of the well. I need to group such information from these files in a single location, I thought of a dataframe .

How can I read PDF files and then group this information using R?

    
asked by anonymous 23.09.2015 / 01:37

1 answer

5

I'll give you an incomplete answer because I'm out of time, but I think you can help.

Someone can then edit by adding the last step.

You can use the extractr package. Read the installation instruction here: link .

This package uses a series of APIs available on the internet to convert a PDF into text.

For your pdf, I did so:

1) I saved on my desktop and called the function:

library(extractr)
xpdf <- extract("Desktop/doc.pdf", "xpdf")

2) I've separated the part of the text that contains the data you need using substrings.

> lito <- str_locate(xpdf$data, "Litológicos") #procura o fim de litologicos
> hidro <- str_locate(xpdf$data, "Hidrogeológicos") # procura o início de hidrogeologicos
> dados <- str_sub(xpdf$data, start = lito[2] + 4, end = hidro[1]- 5)
> dados
[1] "De (m):, , Até (m):, , Litologia:, , Descrição Litológica:, , 0, , 3, , Arenito fino, , SOLO E ARENITO FINO A MUITO FINO, QUARTZOSO, ESBRANQUICADO, MUITO POUCO ARGILOSO, , 3, , 13, , Arenito fino, , ARENITO FINO A MUITO FINO, AVERMELHADO, MODERADAMENTE ARGILOSO, , 13, , 21, , Arenito argiloso, , ARENITO FINO A MUITO FINO, ESBRANQUICADO, MUITO POUCO ARGILOSO, CONCENTRACOES LOCALIZADAS, , 21, , 42, , Arenito fino, , ARENITO FINO A MUITO FINO, ESBRANQUICADO A ROSADO, MODERADAMENTE ARGILOSO, , 42, , 55, , Arenito fino, , ARENITO FINO A MUITO FINO, ESBRANQUICADO A ROSADO, POUCO ARGILOSO, , 55, , 60, , Arenito fino, , ARENITO FINO A MUITO FINO, COM TONS AVERMELHADOS, FORTEMENTE ARGILOSO, , 60, , 63, , Arenito fino, , ARENITO FINO A MUITO FINO, TONALIDADE ROSEA, MODERADAMENTE ARGILOSO, , 63, , 70, , Arenito fino, , ARENITO FINO A MUITO FINO, TONALIDADE ROSEA, MODERADAMENTE ARGILOSO, , 70, , 76, , Arenito fino, , ARENITO FINO A MUITO FINO, TONALIDADE ROSEA, POUCO ARGILOSO, , 76, , 87, , Arenito fino, , ARENITO FINO A MUITO FINO, TONALIDADE ROSEA, MODERADAMENTE ARGILOSO, , 87, , 102, , Arenito fino, , ARENITO FINO A MUITO FINO, TONALIDADE ROSEA, POUCO ARGILOSO"

Now, what you need to try to do is convert this string into a data.frame.

Anyway, this is a way ... But since Molx said pdfs are always complicated, I think the best way would be to try to extract from the same website.

    
23.09.2015 / 12:53