Реализация OCR для приложения Heroku Rails

Мне нужна возможность OCR для приложения Rails на Heroku. Мои попытки заставить tesseract работать не увенчались успехом. У кого-нибудь есть предложения? Трудно поверить, что такая базовая вещь, как OCR, не поддерживается чем-то столь вездесущим, как Rails на Heroku.

ПРЕДЫСТОРИЯ УСИЛИЙ ЗАСТАВИТЬ TESSERACT ЗА РАБОТУ

  • Приложение отлично работает на MacOS, используя бинарные файлы tesseract и гем tesseract-ocr.
  • Heroku не имеет встроенной поддержки tesseract и не поддерживает установку двоичных файлов (см. >Настройка путей окружения в Heroku)
  • На большинство вопросов SO о tesseract на Heroku нет ответов (Использование Tesseract на Heroku с Django, Tesseract-OCR на Heroku с Node.js)
  • Не удается загрузить гем tesseract_bin для локальной загрузки (не пробовал на Heroku)
  • Путь использования buildpack-libraries кажется мне непосильным (и если этот подход жизнеспособен, Я не понимаю, почему кто-то не предоставил готовое решение)

КОНКРЕТНАЯ ОШИБКА ЗАГРУЗКИ драгоценного камня TESSERACT_BIN

/Users/palfvin/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/pathname.rb:422:in `open': No such file or directory - /Users/palfvin/.rvm/gems/ruby-2.0.0-p247@avlats/gems/tesseract_bin-1.0.2/bin (Errno::ENOENT)
    from /Users/palfvin/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/pathname.rb:422:in `foreach'
    from /Users/palfvin/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/pathname.rb:422:in `children'
    from /Users/palfvin/.rvm/gems/ruby-2.0.0-p247@avlats/gems/tesseract_bin-1.0.2/lib/tesseract_bin.rb:7:in `<module:TesseractBin>'
    from /Users/palfvin/.rvm/gems/ruby-2.0.0-p247@avlats/gems/tesseract_bin-1.0.2/lib/tesseract_bin.rb:3:in `<top (required)>'
    from /Users/palfvin/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:110:in `require'
    from /Users/palfvin/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:110:in `rescue in require'
    from /Users/palfvin/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:35:in `require'
    from tmp/tesseract.rb:261:in `<main>'

person Peter Alfvin    schedule 17.11.2013    source источник
comment
что-то столь же простое, как OCR. Я думаю, что OCR — одна из самых сложных задач в мире, уступающая, возможно, распознаванию речи. С другой стороны, сборка — это, вероятно, правильный путь, поскольку это санкционированный способ добавления ваших собственных двоичных файлов к тому, что доступно на динамиках Heroku.   -  person rewritten    schedule 18.11.2013
comment
Спасибо. Я, конечно, не имел в виду простоту реализации алгоритмически, а скорее что-то с простым интерфейсом (изображение => текст), которое понадобится многим приложениям.   -  person Peter Alfvin    schedule 18.11.2013
comment
Я предполагал это! :) Было забавно видеть эти два слова в одном предложении...   -  person rewritten    schedule 18.11.2013


Ответы (1)


Я разработал простой сервер в RoR для Heroku, который использует Tesseract OCR. Сервер получает изображения в формате jpg, запускает OCR и возвращает текст в виде строки. Это может быть хорошей отправной точкой для вас.

https://github.com/fouady/RoR-Tesseract-Heroku

Кроме того, я использую собственный пакет сборки, который я модифицировал для себя. Подробности вы найдете здесь:

https://github.com/fouady/heroku-buildpack-tesseract

Надеюсь, это решит вашу проблему.

person FoY    schedule 18.03.2014