Est-ce que c'est possible!?!
J'ai un tas de rapports hérités que je dois importer dans une base de données. Cependant, ils sont tous au format pdf. Existe-t-il des packages R
pouvant lire le pdf? Ou devrais-je laisser cela à un outil de ligne de commande?
Les rapports ont été rédigés dans Excel puis pdf, ils ont donc une structure régulière, mais de nombreuses "cellules" vides.
Juste un avertissement à ceux qui espèrent extraire des données: PDF est un conteneur, pas un format. Si le document original ne contient pas de texte réel, par opposition aux images bitmap de texte ou éventuellement même des choses plus laides que je ne peux l'imaginer, rien d'autre que l'OCR ne peut vous aider.
En plus de cela, dans ma triste expérience, il n'y a aucune garantie que les applications qui créent PDF se comportent tous de la même manière, de sorte que les données de votre tableau peuvent ou non être lues dans l'ordre souhaité ( en raison de la façon dont le document a été construit).
Il est probablement préférable que deux étudiants diplômés transcrivent les données pour vous. Ils sont bon marché :-)
Donc ... cela me rapproche même sur une table assez complexe.
Téléchargez un exemple de pdf à partir de pdf bmi
library(tm)
pdf <- readPDF(PdftotextOptions = "-layout")
dat <- pdf(elem = list(uri='bmi_tbl.pdf'), language='en', id='id1')
dat <- gsub(' +', ',', dat)
out <- read.csv(textConnection(dat), header=FALSE)
Le package actuel du jour pour extraire le texte des PDF est pdftools
(successeur de Rpoppler, noté ci-dessus) ), fonctionne très bien sur Linux, Windows et OSX:
install.packages("pdftools")
library(pdftools)
download.file("http://arxiv.org/pdf/1403.2805.pdf", "1403.2805.pdf", mode = "wb")
txt <- pdf_text("1403.2805.pdf")
# first page text
cat(txt[1])
# second page text
cat(txt[2])
Vous pouvez également (maintenant) utiliser le nouveau (2015-07) Rpoppler
pacakge:
Rpoppler::PDF_text(file)
Il comprend 3 fonctions (4, vraiment, mais une vous donne juste un point à l'objet PDF):
PDF_fonts
PDF informations sur la policePDF_info
PDF informations sur le documentPDF_text
PDF extraction de texte(publication comme réponse pour aider les nouveaux chercheurs à trouver le package).
per zx8754 ... les éléments suivants fonctionnent dans Win7 avec pdftotext.exe dans le répertoire de travail:
library(tm)
uri = 'bmi_tbl.pdf'
pdf = readPDF(control = list(text = "-layout"))(elem = list(uri = uri),
language = "en", id = "id1")