тессеракт в R - читать белым шрифтом на черном фоне - PullRequest
4 голосов
/ 15 января 2020

Итак, я довольно новичок в тессеракте, и у некоторых людей были такие же проблемы, как у меня на этом форуме, но я не смог найти удовлетворительное решение, поэтому я отправляю этот вопрос.

У меня есть фотографии от уличная камера, и я хочу получить метки времени отснятого материала. После вырезания отметок времени они выглядят так:

Picture

Я подхожу к этой проблеме, используя tesseract с R:

library(tesseract)
library(magick)
eng <- tesseract("eng")

input <- image_read("image from above")

Используя basi c tesseract, я получаю:

input %>% tesseract::ocr(,engine = eng) 
# [1] "SRE SAA PRO 206197180731 17:33:88\n"

Очевидно, это не сильно помогает. Поэтому, после прочтения вопроса, я попытался это сделать:

text <- input %>%
  image_resize("2000x") %>%
  image_convert(type = 'Grayscale') %>%
  image_trim(fuzz = 40) %>%
  image_write(format = 'png', density = '300x300') %>%
  tesseract::ocr() 

cat(text)

# es bt i deen | ee) eee i ae 2s ee ee ee eee ec ee |

Этот результат еще хуже, что действительно расстраивает. Как мне получить правильный результат? Любая помощь горячо приветствуется:)

РЕДАКТИРОВАТЬ

@ Макс Тефлон ответил на вопрос для этого примера. Однако я понял, что некоторые изображения по-прежнему читаются неправильно, например

enter image description here

enter image description here

Может Кто-нибудь еще улучшит свое решение?

1 Ответ

3 голосов
/ 15 января 2020

Какая хорошая проблема! Было действительно весело играть. Я нашел, что это решение работает для вашего примера:


library(tesseract)
library(magick)

eng <- tesseract("eng")

input <- image_read("https://i.stack.imgur.com/0QzhP.jpg") %>% 
  .[[1]] %>% 
  as.numeric() # cause numerics are just easier to work with
image_read(ifelse(input <.9, 1, 0) )  # changing every non-white pixel to white and every white pixel to black

Пока все хорошо, вот черно-белая версия:

Просто пытаюсь найти это не совсем сработало, поэтому я попытался изменить его размер:


image_read(ifelse(input <.9, 1, 0) ) %>% 
  image_resize('500x') %>% # make it smaller to work around the errors
  tesseract::ocr()
#> [1] "TLC200 PRO 2019/10/31 17:33:00\n"

Изменение размера и контрастность - это всего лишь результат игры. Возможно, вы захотите изменить его, если решение не будет работать так же хорошо на остальных ваших фотографиях.

Создано в 2020-01-15 с помощью пакета prex (v0 .3.0)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...