首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用pdftools将批量pdf转换为文本

使用pdftools将批量pdf转换为文本
EN

Stack Overflow用户
提问于 2017-10-01 05:59:36
回答 1查看 2.8K关注 0票数 0

我要把1000个pdf文件转换成文本进行数据分析。我正在使用包pdftools。

我已经能够使用以下代码转换2pdf:

代码语言:javascript
复制
library(pdftools)
file_list <- list.files('pdf', full.names = TRUE, pattern = 'pdf')

for(i in 1:length(file_list)){
  temp <- pdf_text(file_list[i])
  temp <- tolower(temp)

  file_name = paste(file_list[i], '.txt')
  sink(file_name)
  cat(temp)
  sink()

}

但是当我添加超过2个时,我得到以下错误:

代码语言:javascript
复制
" Error in poppler_pdf_text(loadfile(pdf), opw, upw) : PDF parsing failure." 

另外,我希望最终的文本文件只有"file_name.txt“,现在我得到的是"file_name.pdf .txt”

谢谢,

EN

回答 1

Stack Overflow用户

发布于 2017-10-01 06:29:15

代码语言:javascript
复制
library(pdftools)
library(purrr)

setwd("/tmp/test")

file_list <- list.files(".", full.names = TRUE, pattern = '.pdf$')

s_pdf_text <- safely(pdf_text) # helps catch errors

walk(file_list, ~{                                     # iterate over the files

  res <- s_pdf_text(.x)                                # try to read it in
  if (!is.null(res$result)) {                          # if successful

    message(sprintf("Processing [%s]", .x))

    txt_file <- sprintf("%stxt", sub("pdf$", "", .x))  # make a new filename

    unlist(res$result) %>%                             # cld be > 1 pg (which makes a list)
      tolower() %>%                                    
      paste0(collapse="\n") %>%                        # make one big text block with line breaks
      cat(file=txt_file)                               # write it out

  } else {                                             # if not successful
    message(sprintf("Failure converting [%s]", .x))    # show a message
  }

})
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46507410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档