将多个PDF文件转换为文本(R语言)



我用的是"将PDF文件转换为文本文件,如这里所示:https://cran.r-project.org/web/packages/tesseract/vignettes/intro.html

library(pdftools)
library(tesseract)
pngfile <- pdftools::pdf_convert('myfile_1.pdf', dpi = 600)
text <- tesseract::ocr(pngfile)
cat(text)

上面的代码工作得很好。现在,我试着"大规模上传"。把大量的PDF文件转换成文本——目前,我知道如何手动完成这个任务

#import and convert 1st file
pngfile_1 <- pdftools::pdf_convert('myfile_1.pdf', dpi = 600)
text_1 <- tesseract::ocr(pngfile_1)
#import and convert 2nd file (note: the files do not have the same naming convention)
pngfile_2 <- pdftools::pdf_convert('second_file.pdf', dpi = 600)
text_2 <- tesseract::ocr(pngfile_2)
etc

我将上面的代码复制/粘贴了50次(同时改变了"索引",即pngfile_i, text_i),并且能够完成我想要做的事情。然而,我正在寻找一个有点"自动";导入和转换所有PDF文件。

目前,我所有的pdf文件都在以下文件夹中:

"C:/Users/me/Documents/mypdfs"

我发现下面的代码可以用来"批量导入"将pdf文件放入R:

library(dplyr)
library(data.table)

tbl_fread <- 
list.files(pattern = "*.pdf") %>% 
map_df(~fread(.))

但我不确定如何指示此代码从正确的目录("C:/Users/me/Documents/mypdfs")导入所有pdf。我也不知道如何指示R"重命名"。每个导入的PDF为"pdf_1, pdf_2等">

如果所有的pdf文件都被正确导入和创建,那么我就可以写一个"循环"并执行所需的命令,例如

# "n" would be the total number of pdf files 
for (i in 1:n)
{
pngfile_i <- pdftools::pdf_convert('myfile_i.pdf', dpi = 600)
text_i <- tesseract::ocr(pngfile_i)
}

谁能告诉我怎么做这个?

感谢

您可以在您的list.files-函数中添加full.names = TRUE,但这假设"C:/Users/me/Documents/mypdfs"包含在您的project中。

或者,您可以使用path = "Documents/mypdfsfull.names = TRUE,这将把path指向mypdfs

list.files(
path = "Documents/mypdfs"
full.names = TRUE,
pattern = "*.pdf"
)

根据你的pdf_n保存它们,然后你可以使用pastemap。这里我使用data.frames来提供一个示例,因为我不使用pdf,并且没有我愿意处理的批量文件。

library(tidyverse)
1:length(tbl_fread) %>% map(
.f = function(i) {

# Your regular function
# related to PDF


# Saving according to desired names
write.table(
tbl_fread[[i]],
file = paste0("pdf_", i, ".csv")
)


}
)

为了验证它是否正常工作,我们可以相应地读取它,

read.table(
file = "pdf_1.csv"
)
mpg cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

最新更新