Объект Tesseract из Emgu.cv, использующий неверный путь для файлов OCR - PullRequest
5 голосов
/ 29 февраля 2012

Я хочу использовать объект Tesseract от EMGU.CV для распознавания некоторых изображений. Для начала я скачал, скомпилировал и запустил их примеры OCR и LicensePlateRecognition.

Однако Тессеракт продолжал выдавать следующее исключение:

Невозможно создать модель ocr, используя Path 'teseract' и язык 'eng'.

И я проследил источник до строки:

_ocr = new Tesseract(@"tessdata", "eng", Tesseract.OcrEngineMode.OEM_TESSERACT_CUBE_COMBINED);

Я попытался исправить это наиболее очевидными способами: я дал ему полный путь, скопировал файлы примерно в «C: \» и убедился, что текущий каталог моей программы совпадает с каталогом tessdata в это.

Ничего из этого не сработало, поэтому я использовал procmon и обнаружил, что он ищет файлы здесь:

C: \ Program Files (x86) \ Tesseract-OCR \ tessdata

И кажется, что независимо от того, что я делаю, я не могу изменить его из этого места. (Перемещение файлов туда работало, конечно). Это местоположение не существует нигде в коде EMGU.cv, поэтому я предполагаю, что оно скомпилировано в код Tesseract как некоторый по умолчанию (?).

Итак, как мне изменить Тессеракт от использования этого местоположения? Очевидный путь заключается в том, что конструктор Тессеракт должен ДЕЛАТЬ что-то с путем, по которому я прохожу, так чего мне не хватает?

Ответы [ 5 ]

7 голосов
/ 04 февраля 2013

Я попытался скопировать файлы в каталог, где запускается мое приложение, я попробовал абсолютные и относительные пути, и я попытался использовать жестко запрограммированный C: \ Program Files (x86) \ Tesseract-OCR \ tessdata.Никто из них не работал для меня.

Я заработал, выполнив следующие действия:

  1. Скопируйте папку tessdata туда, где работает мое приложение
  2. Затем укажите пустой параметр dataPath (очевидно, tessdata / isдобавлено в dataPath по умолчанию).Этот код работал:

_ocr = новый Tesseract ("", "eng", Tesseract.OcrEngineMode.OEM_TESSERACT_CUBE_COMBINED);

1 голос
/ 27 января 2016

Скопируйте папку 'tessdata', которая находится в BIN Emgu, в ваш проект BIN, в моем случае это работает.

1 голос
/ 22 июня 2015

У меня была точно такая же проблема, компилируя VB2010 x64, и исправление удаляло системную переменную среды TESSDATA_PREFIX.

1 голос
/ 11 июля 2013

Проверьте, установлена ​​ли переменная окружения TESSDATA_PREFIX (удалите ее и перезапустите приложение).У меня была точно такая же проблема ...

1 голос
/ 28 октября 2012

Первый параметр - это местоположение файла. Подсказкой должен был быть знак "@", используемый для аннулирования escape-символа "\". Это обычно используется для путей, чтобы избежать \.

...