【问题标题】:R Error: 'names' attribute [1] must be the same length as the vector [0]R 错误:“名称”属性 [1] 必须与向量 [0] 的长度相同
【发布时间】:2021-10-06 22:58:17
【问题描述】:

我在一个文件夹 ("C:/Users/Documents/files_i_want") 中有许多 pdf 文件(这些是“扫描的”)。 PDF 的文件如下所示: https://jeroen.github.io/images/ocrscan.pdf

所有的 pdf 文件都有不同的名称。我正在尝试使用以下命令同时将它们全部导入 R:pdftools::pdf_convert

library(pdftools) 
    library(tesseract)

#Get the path of filenames

filenames <- list.files("C:/Users/Documents/files_i_want", full.names = TRUE)

#Read them in a list

list_data <- lapply(filenames,  pdftools::pdf_convert)

#Name them as per your choice (df_1, df_2 etc)

names(list_data) <- paste('df', seq_along(filenames), sep = '_')

#Create objects in global environment.

list2env(list_data, .GlobalEnv)

这会返回以下错误:

Error in names(list_data) <- paste("df", seq_along(filenames), sep = "_") : 
  'names' attribute [1] must be the same length as the vector [0]

有谁知道为什么会产生这个错误?

谢谢

更新

我想出了如何从文件夹中上传所有 pdf:

library(pdftools)
library(tesseract)

directory <- "C:/Users/OneDrive/Documents/files_i_want"

file.list <- paste(directory, "/",list.files(directory, pattern = "*.pdf"), sep = "")

b = lapply(file.list, FUN = function(files) {
    pdf_convert(files, format = "jpeg")
})

a = data.frame(file.list)

现在,我必须弄清楚如何在对象“a”中的每个“条目”上应用以下函数,例如“i”代表对象“a”中的每个“条目”(目标是创建“text_1”和“text_2”,例如text_1

convert_function <- function(i){
text_i <- tesseract::ocr(i)
}

【问题讨论】:

  • names(list_data) 返回什么? seq_along(filenames) 返回什么?
  • 我记得几周前您提出的一个非常相似的问题,如果不是完全相同的话。你是转发还是这个不一样?
  • 看来您的文件名向量的长度为 0
  • 所以list_data 没有名字,filenames 是空的。 list.files("C:/Users/Documents/files_i_want", full.names = TRUE) 返回什么?
  • 您可能在 list.files 中有错误的路径名...

标签: r pdf text import tesseract


【解决方案1】:

你可以试试这个代码 -

data <- lapply(sub('pdf$', 'jpeg', file.list),  tesseract::ocr)
names(data) <- paste0('text', seq_along(data))
list2env(data, .GlobalEnv)

【讨论】:

  • 感谢您的回答!我只是在一个“for循环”中写了同样的东西: for (i in 1:2) { ffile_i = tesseract::ocr(a[i, "file.list"]) }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-20
  • 2020-01-04
  • 2016-08-30
  • 2018-03-18
  • 2016-06-28
  • 1970-01-01
  • 2013-09-22
相关资源
最近更新 更多