我有一个包含超过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小时才完成,所以我想也许有更好的方法来完成它。有什么想法吗?