web-dev-qa-db-fra.com

Extraction de données texte à partir de fichiers PDF

Est-il possible d'analyser les données texte de PDF dans R? Là ne semble pas être un package pertinent pour une telle extraction , mais quelqu'un a-t-il tenté ou vu cela fait dans R?

En Python il y a PDFMiner , mais je voudrais garder cette analyse tout en R si possible.

Aucune suggestion?

41
DrewConway

Les systèmes Linux ont pdftotext avec lesquels j'ai eu un succès raisonnable. Par défaut, il crée foo.txt d'un donner foo.pdf.

Cela dit, les packages d'exploration de texte peuvent avoir des convertisseurs. A recherche rapide sur rseek.org semble être d'accord avec votre recherche crantastic.

29

Il s'agit d'un fil très ancien, mais pour référence future: le package pdftools R extrait le texte des PDF.

26
Remko Duursma

Un collègue m'a fait découvrir cet outil open source pratique: http://tabula.nerdpower.org/ . Installez, téléchargez le PDF et sélectionnez le tableau dans le PDF qui nécessite la data-ization. Pas une solution directe dans R, mais certainement mieux que le travail manuel.

9
NiuBiBang

Une solution purement R pourrait être:

library('tm')
file <- 'namefile.pdf'
Rpdf <- readPDF(control = list(text = "-layout"))
corpus <- VCorpus(URISource(file), 
      readerControl = list(reader = Rpdf))
corpus.array <- content(content(corpus)[[1]])

alors vous aurez des lignes pdf dans un tableau.

9
willallgs
install.packages("pdftools")
library(pdftools)


download.file("http://www.nfl.com/liveupdate/gamecenter/56901/DEN_Gamebook.pdf", 
              "56901.DEN.Gamebook", mode = "wb")

txt <- pdf_text("56901.DEN.Gamebook")
cat(txt[1])
5
DataProphets

tabula PDF app extracteur de table est basé sur une application de ligne de commande basée sur un Java package JAR, tabula -extracteur .

Le package de tabulation R fournit un wrapper R qui facilite la transmission du chemin vers un fichier PDF et extrait les données des tableaux de données).

Tabula tentera de deviner où se trouvent les tableaux, mais vous pouvez également lui dire quelle partie d'une page regarder en spécifiant une zone cible de la page.

Les données peuvent être extraites de plusieurs pages et une zone différente peut être spécifiée pour chaque page, si nécessaire.

Pour un exemple d'utilisation, voir: Quand les documents deviennent des bases de données - Wrapper Tabulizer R pour Tabula PDF Extracteur de table .

5
psychemedia

J'ai utilisé un utilitaire externe pour effectuer la conversion et je l'ai appelé à partir de R. Tous les fichiers avaient une table de tête avec les informations souhaitées

Définissez le chemin vers pdftotxt.exe et convertissez le pdf en texte

exeFile <- "C:/Projects/xpdfbin-win-3.04/bin64/pdftotext.exe"

for(i in 1:length(pdfFracList)){
    fileNumber <- str_sub(pdfFracList[i], start = 1, end = -5)
    pdfSource <- paste0(reportDir,"/", fileNumber, ".pdf")
    txtDestination <- paste0(reportDir,"/", fileNumber, ".txt")
    print(paste0("File number ", i, ", Processing file ", pdfSource))
    system(paste(exeFile, "-table" , pdfSource, txtDestination, sep = " "), wait = TRUE)
}
2
Alastair Muir