Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Проблема со сборкой tesseract-3.04.01  (Прочитано 2812 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Max120

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Проблема со сборкой tesseract-3.04.01
« : 26 Февраль 2016, 17:28:42 »
Здраствуйте, у меня возникает ошибка при сборке tesseract-3.04.01. Делал по этой статьи:
https://github.com/tesseract-ocr/tesseract/wiki/Compiling#Compilation
При вводе команды make возникают ошибки:
...
mv -f .deps/tesseract-tesseractmain.Tpo .deps/tesseract-tesseractmain.Po
/bin/bash ../libtool  --tag=CXX   --mode=link g++  -std=c++11   -o     tesseract tesseract-tesseractmain.o libtesseract.la   -lrt -llept -lpthread
libtool: link: g++ -std=c++11 -o .libs/tesseract tesseract-    tesseractmain.o  ./.libs/libtesseract.so -lrt -llept -lpthread
./.libs/libtesseract.so: undefined reference to `l_generateCIDataForPdf'
./.libs/libtesseract.so: undefined reference to `l_CIDataDestroy'
collect2: error: ld returned 1 exit status
make[2]: *** [tesseract] Ошибка 1    make[2]: Выход из каталога `/home    /max/tesseract-3.04.01dev/api'
make[1]: *** [all-recursive] Ошибка 1
make[1]: Выход из каталога `/home/max/tesseract-3.04.01dev'
make: *** [all] Ошибка 2

Собирал на версии 3.02 та же ошибка. Собираю все на Ubuntu 14.04. Где может быть проблема?
« Последнее редактирование: 26 Февраль 2016, 17:57:43 от Max120 »

serchik

  • Гость
Re: Проблема со сборкой tesseract-3.04.01
« Ответ #1 : 26 Февраль 2016, 18:48:10 »
...Где может быть проблема?
Проблема в том, что не умеете/любите/хотите гуглить - Unable to compile 3.04-rc1 under ubuntu 14.04

Оффлайн Max120

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Re: Проблема со сборкой tesseract-3.04.01
« Ответ #2 : 26 Февраль 2016, 23:26:30 »
Спасибо, но я уже это находил в FAQ:
https://github.com/tesseract-ocr/tesseract/wiki/FAQ
Но ошибка остается:

...
mv -f .deps/tesseract-tesseractmain.Tpo .deps/tesseract-tesseractmain.Po
/bin/bash ../libtool  --tag=CXX   --mode=link g++  -std=c++11   -o tesseract tesseract-tesseractmain.o libtesseract.la   -lrt -llept -lpthread
libtool: link: g++ -std=c++11 -o .libs/tesseract tesseract-tesseractmain.o  ./.libs/libtesseract.so -lrt -llept -lpthread
./.libs/libtesseract.so: undefined reference to `l_generateCIDataForPdf'
./.libs/libtesseract.so: undefined reference to `l_CIDataDestroy'
collect2: error: ld returned 1 exit status
make[1]: *** [tesseract] Ошибка 1
make[1]: Выход из каталога `/home/max/tesseract-3.04.01dev/api'
make: *** [install-recursive] Ошибка 1
и при вызове команды sudo make training-install остается та же ошибка:
libtool: link: g++ -std=c++11 -o .libs/ambiguous_words ambiguous_words.o  ./.libs/libtesseract_training.a ./.libs/libtesseract_tessopt.a ../api/.libs/libtesseract.so -llept -lpthread
../api/.libs/libtesseract.so: undefined reference to `l_generateCIDataForPdf'
../api/.libs/libtesseract.so: undefined reference to `l_CIDataDestroy'
collect2: error: ld returned 1 exit status
make[1]: *** [ambiguous_words] Ошибка 1
make[1]: Выход из каталога `/home/max/tesseract-3.04.01dev/training'
make: *** [training-install] Ошибка 2


serchik

  • Гость
Re: Проблема со сборкой tesseract-3.04.01
« Ответ #3 : 27 Февраль 2016, 14:50:19 »
Но ошибка остается:...
Действительно остается, остается и у меня. Поскольку для сборки указанной Вами версии требуется leptonica версии не ниже 1.71, а у Вас в репозитории Ubuntu 14.04 соедржится версия 1.70, то, вероятно, вы устанавливали нужную версию leptonica из дистрибутива с исходниками. Для решения проблемы переконфигурируйте проект с опцией --with-extra-libraries:
git clone https://github.com/tesseract-ocr/tesseract.git
cd tesseract
git checkout tags/3.04.01
./configure --with-extra-libraries="/usr/local/lib"
make -j8 #или сколько там у Вас имеется процессоров/ядер
sudo make install
И какая острая нужда заставила Вас собирать из сорцов, когда дистрибутив поставляет готовый пакет?:
sudo apt-get install tesseract-ocr tesseract-ocr-rus
« Последнее редактирование: 27 Февраль 2016, 16:10:44 от serchik »

Оффлайн Max120

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Re: Проблема со сборкой tesseract-3.04.01
« Ответ #4 : 10 Март 2016, 16:20:15 »
И какая острая нужда заставила Вас собирать из сорцов, когда дистрибутив поставляет готовый пакет?:
sudo apt-get install tesseract-ocr tesseract-ocr-rus
Спасибо, за ответ. Я знаю что можна так сделать, но я хочу использовать его в качестве библиотеки.
У меня появилась другая проблема. после сбора tesseract так как вы написли теперь не видит файлов в /usr/local/share/tessdata/ когда я скомпилировал тестовый код, хоть сборка прошла успешно. Но в предыдущей сборке эту папку видила программа.
Вот тестовый код:
#include <stdio.h>
#include <string.h>
#include <tesseract/baseapi.h>
#include <leptonica/allheaders.h>

int main(int argc, char* argv[]) {
    tesseract::TessBaseAPI tessApi;
    tessApi.Init("data", "eng");// тут data каталог в котором лежат файлы *.traineddata,
    // а rus указывает какой именно из них использовать
    if(argc > 1) {
        PIX *pix = pixRead(argv[1]);// считываем картинку из файла с именем,
        // переданным первым аргументом, это функционал Leptonica
        tessApi.SetImage(pix);// говорим tesseract, что распознавать нужно эту картинку
        char *text = tessApi.GetUTF8Text();//распознаём
        //---генерируем имя файла в который будет записан распознанный текст
        char *fileName = NULL;
        long prefixLength;
        const char* lastDotPosition = strrchr(argv[1], '.');
        if(lastDotPosition != NULL) {
            prefixLength = lastDotPosition - argv[1];
            fileName = new char[prefixLength + 5];
            strncpy(fileName, argv[1], prefixLength);
            strcpy(fileName + prefixLength, ".txt\0");
        } else {
            exit(1);
        }
        //---
        FILE *outF = fopen(fileName, "w");
        fprintf(outF, "%s", text);
        fclose(outF);
        //---
        pixDestroy(&pix);
        delete [] fileName;
        delete [] text;
    }
    return 0;
}

После запуска пишет:
Error opening data file data/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!
Press <RETURN> to close this window...
Можна ли узнать какой путь надо применять или как изменить путь к этой папки чтобы программа видела файлы?
« Последнее редактирование: 10 Март 2016, 20:13:23 от Max120 »

Оффлайн peregrine

  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7083
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
Re: Проблема со сборкой tesseract-3.04.01
« Ответ #5 : 10 Март 2016, 19:33:47 »
Max120, тогда тебе надо собирать leptonica нужной версии.

Оффлайн Max120

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Re: Проблема со сборкой tesseract-3.04.01
« Ответ #6 : 10 Март 2016, 20:11:57 »
Спасибо, но у меня ошибок не возникает теперь после сборки. Программа не видет папку tessdata в /usr/local/share/.

serchik

  • Гость
Re: Проблема со сборкой tesseract-3.04.01
« Ответ #7 : 12 Март 2016, 13:42:45 »
Можна ли узнать какой путь надо применять или как изменить путь к этой папки чтобы программа видела файлы?
Так уже есть ответ на Ваш вопрос:
Цитировать
После запуска пишет:
Error opening data file data/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!
Press <RETURN> to close this window...
Задайте путь к каталогу tessdata в переменной окружения TESSDATA_PREFIX

Оффлайн Max120

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Re: Проблема со сборкой tesseract-3.04.01
« Ответ #8 : 13 Март 2016, 00:31:03 »
Вот так?
export TESSDATA_PREFIX=/usr/local/share/
Записал эту команду в файл .bashrc.
Бесполезно, все ровно не видит. :-\
« Последнее редактирование: 13 Март 2016, 00:34:19 от Max120 »

serchik

  • Гость
Re: Проблема со сборкой tesseract-3.04.01
« Ответ #9 : 13 Март 2016, 12:51:32 »
Вот так?
export TESSDATA_PREFIX=/usr/local/share/
Записал эту команду в файл .bashrc.
Бесполезно, все ровно не видит. :-\
Наверное, так (не уверен, т.к. не проверял):
export TESSDATA_PREFIX=/usr/local/share/tessdataНу и напоследок:
source ~/.bashrc
Спасибо, за ответ. Я знаю что можна так сделать, но я хочу использовать его в качестве библиотеки.
И все равно я не понимаю, зачем было собирать из сорцов, когда весь флакон для разработчика уже есть в стандартной поставке:
sudo apt-get install libtesseract-dev

Оффлайн Alex_P

  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Re: Проблема со сборкой tesseract-3.04.01
« Ответ #10 : 19 Март 2016, 01:20:44 »
При выполнение скрипта configure в переменной CFLAGS необходимо указать  TESSDATA_PREFIX.
Для примера правила сборки из пакета для debian.
https://sources.debian.net/src/tesseract/3.04.01-4/debian/rules/

 

Страница сгенерирована за 0.059 секунд. Запросов: 25.