如何在R

时间:2017-04-27 03:23:03

标签: r csv pdf

我有一个包含超过100000行和超过1900页的pdf文件中的表格,我决定使用R包tabulizer写入.csv文件。

当我尝试使用

从pdf文件中提取整个数据时
pdf <- extract_tables("pdffile.pdf", method = "csv")

我收到错误,

  <。>错误.jcall(&#34; rjavatools&#34;,&#34; ljava / lang / object;&#34;,&#34; invokemethod&#34;,cl,:java.lang.outofmemoryerror:超出gc开销限额

因此我采用了另一种方法。

我所做的是逐个提取pdf的页面,并将输出保存为 一个.csv文件。

1)获取pdf文件的页数

pdfPages <- length(get_page_dims("pdffile.pdf"))

2)创建一个for循环,为每个页面存储.csv文件。

for (i in 1:pdfPages) {
    page <- extract_tables("pdffile.pdf", pages = i, method = "data.frame")
    write.csv(page, file = paste(i,".csv", sep = ""))
}

3)然后创建另一个循环,用于逐个读取每个文件,并对其进行rbind 到下一个。

dataPdf  <- data.frame() # to rbind each .csv file
for (i in c(1:pdfPages)){
    page <- read.csv(paste(i,".csv", sep = ""))
    dataPdf <- bind_rows(dataQuilpue, page) 
}

我不得不使用bind_rows()包中的dplyr,因为并非所有的.csv文件 以相同的列数结束。

结果令人满意,虽然花了大约1.75小时才完成,所以我想也许有更好的方法来完成它。有什么想法吗?

0 个答案:

没有答案