R 如何清理多个magick图像

R 如何清理多个magick图像,r,imagemagick,tesseract,R,Imagemagick,Tesseract,我有一个包含多个页面的pdf,我的目标是将该pdf转换为图像,用OCR清理和处理文本。我有一个可以很好地工作,但有多个,我无法映射或重叠magickimage: multi_images <- map(multi_file_list, image_read) image_cleaner <- function(images){ images <- map(images, function(x){ images %>% image_crop(geome

我有一个包含多个页面的pdf,我的目标是将该pdf转换为图像,用OCR清理和处理文本。我有一个可以很好地工作,但有多个,我无法映射或重叠magickimage:

multi_images <- map(multi_file_list, image_read)

image_cleaner <- function(images){

  images <- map(images, function(x){

images %>%
      image_crop(geometry_area(width = 1290, height = 950, y_off = 285, x_off = 380)) %>%  
      image_write(format = 'png', density = '300x300') %>%
      tesseract::ocr(tesseract(options = list(preserve_interword_spaces = 1)))



  })


}


那么我如何访问magick图像对象列表呢?我注意到这个问题没有答案,注意我把地图改成了地图

此外,您的函数应该在循环中调用x

image_cleaner <- function(images){
    Map(function(x){
        # change images %>% 
        # to 
        # x %>%
        x %>%
            image_crop(geometry_area(width = 1290, height = 950, y_off = 285, x_off = 380)) %>%  
            image_write(format = 'png', density = '300x300') %>%
            tesseract::ocr(tesseract(options = list(preserve_interword_spaces = 1)))

    }, images)


}

dat <- image_cleaner(multi_images)

> mapply(nchar,dat, USE.NAMES = F)
[1]  12 288 124

啊,明白了。我会测试一下,然后再给你回复。没问题。我会说,当我在成批pdf上执行OCR时,除非我需要创建一个语料库,否则我通常会在第一步将它们全部合并,然后只进行一次规范化。我现在的过程是pdftools::pdf转换以创建每个pdf页面的图像,图像读取如图所示,处理规范化?,然后用stringr稍微清理文本。你是说我应该把所有的PDF文件放在同一个图像批处理中,然后运行一次清理过程,然后将ocr分离到一个新的阶段?我有很多2-3mb的pdf文件,所以欢迎对工作流程提出任何建议。你使用的是什么操作系统?我运行linux,所以我首先使用cli工具来组合文件,使用systemMac调用,所以会有点不同,但我相信可以使用相同的一般过程
image_cleaner <- function(images){
    Map(function(x){
        # change images %>% 
        # to 
        # x %>%
        x %>%
            image_crop(geometry_area(width = 1290, height = 950, y_off = 285, x_off = 380)) %>%  
            image_write(format = 'png', density = '300x300') %>%
            tesseract::ocr(tesseract(options = list(preserve_interword_spaces = 1)))

    }, images)


}

dat <- image_cleaner(multi_images)

> mapply(nchar,dat, USE.NAMES = F)
[1]  12 288 124