Как очистить несколько изображений магии - PullRequest
0 голосов
/ 03 октября 2019

У меня есть PDF с несколькими страницами, моя цель - принести этот PDF, преобразовать в изображение, очистить и обработать текст в OCR. У меня это хорошо работает с одним, но с несколькими я не могу отобразить или lapply 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)))



  })


}

дает ожидаемую ошибку:

Error: `.x` must be a vector, not a `magick-image` object
Call `rlang::last_error()` to see a backtrace 

Так как можноЯ получаю доступ к списку объектов с магическим изображением? Я отмечаю, что нет ответа на этот вопрос

1 Ответ

1 голос
/ 03 октября 2019

Это сработало, заметьте, я изменил map на Map

Также ваша функция должна была вызвать 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
...