2017-10-09 7 views
0

J'ai 3000 sous-dossier dans un dossier principal contenant 2 pdfs dans chacun. J'ai écrit le code suivant pour convertir des PDF dans un fichier texte.conversion de fichier PDF en texte

all.subfolders * < - list.dirs ("# Chemin vers le dossier principal", full.names = TRUE)

sapply(all.subfolders[-1], function(x) { 

file <-list.files(x, full.names=TRUE) 

lapply(file, function(x) system(paste('"C:\\Program Files (x86)\\xpdfbin-win-3.03\\bin64\\pdftotext.exe"', paste0('"', x, '"')), wait = FALSE))})* 

Mais dans quelques fichiers PDF qui ne peuvent être convertis en texte, Comment les obtenir dans une liste ou plus. S'il vous plaît aider.

+0

Pourquoi ces fichiers PDF ne peuvent-ils pas être convertis? As-tu eu un message d'erreur? Peut-être que ces fichiers PDF ne contiennent pas de texte? –

+0

Ils contiennent du texte mais je pense que les fichiers PDF sont scannés et ne peuvent donc pas être convertis. Je dint obtenir un message d'erreur. Après avoir exécuté les commandes, je trouve leur fichier converti dans le dossier correspondant. –

Répondre

0

Ma réputation n'est pas assez élevée pour commenter, alors s'il vous plaît excusez-moi d'en faire une réponse, ce qui n'est pas le cas. Vos fichiers pdf sont probablement protégés, de sorte que le texte ne peut pas être extrait. Essayez de copier le texte de ces documents lorsque vous les ouvrez avec une visionneuse PDF. Cela ne fonctionnera probablement pas non plus en raison de la protection. Si vous avez l'autorisation d'extraire et de traiter le texte, vous pouvez envisager de convertir les fichiers en images, par exemple via ImageMagick, et d'appliquer l'OCR, par exemple, via tesseract, sur les images. Pour commencer, vous pouvez vous reporter, par exemple, au script suivant https://gist.github.com/benmarwick/11333467.

En réponse à votre commentaire concernant l'identification des fichiers qui n'ont pas été convertis, vous pouvez utiliser l'approche suivante. J'espère que c'est ce que vous cherchiez.

#retrieve all file paths 
#note that you can use recursive = T to avoid looping over directories yourself 
allfiles <- list.files("C:/.../mydirectory", full.names = T, recursive = T) 

#split filepaths into a set of pdf and txt files 
#txt files will, of course, only be the files that have been converted 
pdffiles <- allfiles[grep("pdf$", allfiles)] 
txtfiles <- allfiles[grep("txt$", allfiles)] 

#remove file ending 
pdffiles <- gsub(".pdf", "", pdffiles) 
pdffiles <- gsub(".txt", "", pdffiles) 

#check which files have not been converted 
notconverted <- setdiff(pdffiles, txtfiles) 

#if needed, file ending can be added again 
#e.g. for copying the unconverted files into a separate directory or so 
notconverted <- paste0(pdffiles, ".pdf") 
+0

Le problème immédiat est de trouver ces PDF/sous-dossiers non convertis ... J'ai 3000 sous-dossiers donc manuellement il n'est pas possible de vérifier chaque dossier. –

+0

Merci beaucoup pour votre temps et votre code. Il a résolu le problème de localisation des fichiers non convertis. Merci –

+0

Je suis heureux de pouvoir vous aider. S'il vous plaît envisager d'accepter la réponse pour fermer ce fil. –