Ошибка запуска Tesseract
У меня проблема с запуском tesseract-ocr engine на linux. Я загрузил данные языка RUS и поместил их в каталог tessdata (/usr/local/share/tessdata). Когда я пытаюсь запустить tesseract с помощью команды tesseract blob.jpg out -l rus
, появляется сообщение об ошибке:
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.
В соответствии с инструкцией по компиляции я использовал export TESSDATA_PREFIX='/usr/local/share/'
для указания моего каталога tessdata.
Может быть, я должен отредактировать любые файлы конфигурации? Tesseract пытается загрузить файлы данных 'eng' вместо 'rus'.
Снимок экрана:
http://i.stack.imgur.com/I0Guc.png
Ответы
Ответ 1
Вы можете взять eng.traineddata
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/
Ответ 2
Самый простой способ - установить нужный пакет:
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)
Как вы можете заметить, это открывает дорогу к другим языкам (т.е. tesseract-ocr-fra).
Ответ 3
У меня тоже была эта ошибка на машине с Windows.
Мое решение.
1) Загрузите языковые файлы с https://github.com/tesseract-ocr/tessdata/tree/3.04.00
Например, для eng я скачал все файлы с префиксом eng.
2) Поместите их в каталог tessdata внутри какой-нибудь папки. Добавьте эту папку в системные переменные как TESSDATA_PREFIX.
Результатом будет System env var: TESSDATA_PREFIX = D: /Java/OCR И папка OCR содержит tessdata с языковыми файлами.
Это скриншот каталога:
![enter image description here]()
Ответ 4
Никакое предыдущее решение не работало для меня.
Я установил оба параметра apt-get
и вручную загрузил tessdata, переместился вокруг /usr
и так далее, и никто не работал, даже если я экспортировал переменную тысячу раз.
Наконец, при последней попытке, прежде чем начать плакать, я попытался передать путь непосредственно к экземпляру Tesseract().
В Python: tr = Tesseract("/usr/local/share/tesseract-ocr/")
и теперь он работает. Чтобы уточнить, im использует модуль tesserwrap
.
Ответ 5
Вы можете вызвать API-функцию tesseract из кода 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 для загрузки картинки)
Ответ 6
Я использую Visual Studio 2017 Community Edition.
Я решил эту проблему, создав каталог tessdatastrong > в каталоге Debug моего проекта. Затем я помещаю файл eng.traineddatastrong > в указанный каталог.
Ответ 7
tesseract --tessdata-dir <tessdata-folder> <image-path> stdout --oem 2 -l <lng>
В моем случае, ошибки, которые я совершил, или попытки, которые не увенчались успехом.
- Я клонировал репозиторий GitHub и скопировал файлы оттуда в
- /USR/локальные/доли /tessdata/
- /USR/доли/тессеракт-OCR/tessdata/
- /USR/доли /tessdata/
- Используется
TESSDATA_PREFIX
с указанными выше путями - sudo apt-get установить tesseract-ocr-eng
Первые 2 попытки не сработали, потому что файлы из git clone
не сработали по причинам, которые я не знаю. Я не уверен, почему попытка № 3 сработала для меня.
В заключение,
- Я скачал файл eng.traindata с помощью
wget
- Скопировал его в какую-то папку
- Используется
--tessdata-dir
с именем папки
Удаляйся для меня - это хорошо изучи инструмент и используй его, а не полагайся на установку менеджера пакетов и папки
Ответ 8
Я использую ОС Windows, я пробовал все решения выше, и ни одно из них не работает.
Наконец, я устанавливаю Tesseract-OCR на диск D (откуда я запускаю свой скрипт на python) вместо диска C, и он работает.
Так что, если вы используете Windows, запустите ваш скрипт на том же диске, что и Tesseract-OCR.
Ответ 9
C:\Users\pankaj.neupaney\AppData\Local\Continuum\anaconda3\envs\ocrtextrecog\Lib\сайт-пакеты\tesserocr
добавьте свои тессссдаты сюда