2013-02-10 2 views
34

У меня проблема с запуском tesseract-ocr engine на linux. Я загрузил данные языка RUS и поместил их в каталог tessdata (/ usr/local/share/tessdata). Когда я пытаюсь запустить Tesseract с командой tesseract blob.jpg out -l rus, он выводит сообщение об ошибке:Ошибка выполнения Tesseract

Error opening data file /usr/local/share/tessdata/eng.traineddata 

Please make sure the TESSDATA_PREFIX environment variable is set to the parent directory of your "tessdata" directory. 

Failed loading language eng 
Tesseract couldn't load any languages! 

Could not initialize tesseract. 

Согласно compiling guide, я использовал export TESSDATA_PREFIX='/usr/local/share/' указать свой каталог tessdata. Возможно, мне нужно отредактировать любые файлы конфигурации? Tesseract пытается загрузить файлы данных 'eng' вместо 'rus'.

Скриншот: http://i.stack.imgur.com/I0Guc.png

ответ

2

Вы можете вызвать Тессеракт функции API из кода C:

#include <tesseract/baseapi.h> 
#include <tesseract/ocrclass.h>; // ETEXT_DESC 

using namespace tesseract; 

class TessAPI : public TessBaseAPI { 
    public: 
    void PrintRects(int len); 
}; 

... 
TessAPI *api = new TessAPI(); 
int res = api->Init(NULL, "rus"); 
api->SetAccuracyVSpeed(AVS_MOST_ACCURATE); 
api->SetImage(data, w0, h0, bpp, stride); 
api->SetRectangle(x0,y0,w0,h0); 

char *text; 
ETEXT_DESC monitor; 
api->RecognizeForChopTest(&monitor); 
text = api->GetUTF8Text(); 
printf("text: %s\n", text); 
printf("m.count: %s\n", monitor.count); 
printf("m.progress: %s\n", monitor.progress); 

api->RecognizeForChopTest(&monitor); 
text = api->GetUTF8Text(); 
printf("text: %s\n", text); 
... 
api->End(); 

И построить этот код:

g++ -g -I. -I/usr/local/include -o _test test.cpp -ltesseract_api -lfreeimageplus 

(мне нужно FreeImage для изображения загрузки)

+0

Это код на C++ ... – DarkSkull

+0

@ DarkSkull, да, это код C++, протестированный в Debian GNU/Linux. Как вы видите, у Рассела Кроу есть проблема с функцией TessAPI :: Init (NULL, «rus»). Имеет смысл проверить исходный код Tesseract (метод класса TessAPI). –

45

Вы можете забрать eng.traineddata от Google (сжатый):

wget https://tesseract-ocr.googlecode.com/files/eng.traineddata.gz 

или Github (сырье):

wget https://github.com/tesseract-ocr/tessdata/raw/master/eng.traineddata 

Проверить https://github.com/tesseract-ocr/tessdata для полного списка подготовленных языковых данных.

Когда вы берете файл (ы), переместите их в папку /usr/local/share/tessdata. Предупреждение: некоторые дистрибутивы Linux (например, openSUSE и Ubuntu) могут ожидать этого в /usr/share/tessdata.

# If you got the data from Google, unzip it first! 
gunzip eng.traineddata.gz 
# Move the data 
sudo mv -v eng.traineddata /usr/local/share/tessdata/ 
+1

исправьте меня, если я ошибаюсь .. но не был вопрос о включении нового языка (rus) и не поставлял тот, на который указывает сообщение об ошибке (ошибка)? – Arne

+1

Редактирование: По какой-то причине tesseract не будет работать, если не присутствует eng.traineddate, даже если он не нужен. Поэтому ответ AAAfarmclub в порядке. – Arne

+3

Предупреждение: другие установки linux (ubuntu vivid) работают в другом каталоге:/usr/share/tesseract-ocr/tessdata вместо – octohedron

15

это может быть полезным для кого-то так ... Самый простой способ установить необходимый пакет:

sudo apt-get install tesseract-ocr-eng #for english 
sudo apt-get install tesseract-ocr-tam #for tamil 
sudo apt-get install tesseract-ocr-deu #for deutsch (German) 

Как вы можете заметить, что открывает путь к другим языкам (т.е. тессеракт -ocr-АОП).

+1

Это должен быть принятый ответ. Вручную возиться с файлами за менеджерами пакетов назад (при условии, что вы использовали один для установки tesseract в первую очередь) - это плохая идея. –

+0

Для пользователей Mac, использующих MacPort: sudo port install tesseract-eng – Haxis

2

Никакое предыдущее решение не работало для меня.

Я установил как apt-get, так и вручную загрузил tessdata, переместился около /usr и так далее, и никто не работал, даже если я экспортировал переменную тысячу раз.

Наконец, при последней попытке, прежде чем начать плакать, я попытался передать путь непосредственно к экземпляру Tesseract().

В Python: tr = Tesseract("/usr/local/share/tesseract-ocr/") и теперь это работает. Чтобы уточнить, im использует модуль tesserwrap.

5

У меня тоже была ошибка на компьютере с Windows.

Мое решение.

1) Загрузите языковые файлы из https://github.com/tesseract-ocr/tessdata/tree/3.04.00

Например, для ЭСН, я скачал все файлы с префиксом рус.

2) Поместите их в tessdata каталог внутри некоторой папки. Добавьте эту папку в переменные System Path как TESSDATA_PREFIX.

Результат будет система окр вар: TESSDATA_PREFIX = D:/Java/OCR И папка OCR имеет tessdata с языками файлов.

Это скриншот каталога:

enter image description here

1

Я использую Visual Studio 2017 Community Edition.
Я решил эту проблему, создав каталог под названием tessdata в каталоге Debug моего проекта. Затем я поместил файл eng.traineddata в указанный каталог.