Проблемы с настройкой Tesseract OCR с помощью Conan (и cmake)C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Проблемы с настройкой Tesseract OCR с помощью Conan (и cmake)

Сообщение Anonymous »


Я просматривал документацию, проблемы и темы Conan 2, но мне не удалось заставить Tesseract работать с Conan. Позвольте мне показать вам мою установку:

Приложение └── main.cpp CMakeLists.txt конанфайл.txt main.cpp — это самый простой PoC, который я смог придумать:

#include int main(void) { tesseract::TessBaseAPI API; вернуть 0; } Мой CMakeLists.txt:

cmake_minimum_required (ВЕРСИЯ 3.11) # --------------------------------- Настройка конфигурации проекта установить (PROJECT_NAME foo) проект (${PROJECT_NAME} CXX) установить (CMAKE_CXX_STANDARD 20) # --------------------------------- Установка флагов проекта и оптимизация set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} -g3 -O0 -W -Wall -Wextra") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -g0 -O3") # --------------------------------- Получение источников set (приложение SOURCES/main.cpp) # ---------------------------------- Получение зависимостей find_package (ТРЕБУЕТСЯ Тессеракт) сообщение (СТАТУС "Tesseract_INCLUDE_DIRS: ${Tesseract_INCLUDE_DIRS}") сообщение (СТАТУС «Tesseract_LIBRARIES: ${Tesseract_LIBRARIES}») сообщение (СТАТУС «Tesseract_VERSION: ${Tesseract_VERSION}») # ---------------------------------- Сборка двоичного файла add_executable(${PROJECT_NAME} ${SOURCES}) target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/приложение ${Tesseract_INCLUDE_DIRS} ) И, наконец, мой conanfile.txt (Leptonica является прямой зависимостью от Tesseract):

[требуется] Тессеракт/5.3.0 лептоника/1.82.0 [генераторы] CMakeDeps CMakeToolchain Наконец, я просто запускаю следующие команды (обычно я делаю это с помощью cmake, а затем make, но это точные команды из документации):

conan install . --output-folder=build/ --build=отсутствует # [...] # Установка успешно завершена cmake -B build/ -S . -DCMAKE_TOOLCHAIN_FILE=build/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Отладка # [...] # -- Tesseract_INCLUDE_DIRS: /Users/foo/.conan2/p/b/tesse4be5a6b24f5df/p/include # -- Tesseract_LIBRARIES: Tesseract::libtesseract # -- Тессеракт_ВЕРСИЯ: 5.3.0 # [...] # -- Настройка завершена (0,9 с) # -- Генерация завершена (0,0 с) # -- Файлы сборки записаны в: /Users/foo/Desktop/test_tesseract/build cmake --build build/ -j 4 -v # [...] # Изменить каталог: '/Users/foo/Desktop/test_tesseract/build' # Запускаем команды сборки: /opt/homebrew/Cellar/cmake/3.27.0/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile -j4 # /opt/homebrew/Cellar/cmake/3.27.0/bin/cmake -S/Users/foo/Desktop/test_tesseract -B/Users/foo/Desktop/test_tesseract/build --check-build-system CMakeFiles/Makefile. cmake 0 # /opt/homebrew/Cellar/cmake/3.27.0/bin/cmake -E cmake_progress_start /Users/foo/Desktop/test_tesseract/build/CMakeFiles /Users/foo/Desktop/test_tesseract/build//CMakeFiles/progress.marks # /Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/Makefile2 all # /Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/toto.dir/build.make CMakeFiles/toto.dir/dependent # cd /Users/foo/Desktop/test_tesseract/build && /opt/homebrew/Cellar/cmake/3.27.0/bin/cmake -E cmake_dependents «Unix Makefiles» /Users/foo/Desktop/test_tesseract /Users/foo/Desktop /test_tesseract /Users/foo/Desktop/test_tesseract/build /Users/foo/Desktop/test_tesseract/build /Users/foo/Desktop/test_tesseract/build/CMakeFiles/toto.dir/DependInfo.cmake "--color=" # /Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/toto.dir/build.make CMakeFiles/toto.dir/build # [ 50%] Создание объекта CXX CMakeFiles/toto.dir/App/main.cpp.o # /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -I/Users/foo/Desktop/test_tesseract/App -I/Users/foo/.conan2/p/b/tesse4be5a6b24f5df /p/include -stdlib=libc++ -stdlib=libc++ -g3 -O0 -W -Wall -Wextra -std=gnu++20 -arch Arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform /Developer/SDKs/MacOSX14.0.sdk -MD -MT CMakeFiles/toto.dir/App/main.cpp.o -MF CMakeFiles/toto.dir/App/main.cpp.o.d -o CMakeFiles/toto.dir/ App/main.cpp.o -c /Users/foo/Desktop/test_tesseract/App/main.cpp # [100%] Связывание исполняемого файла CXX с toto # /opt/homebrew/Cellar/cmake/3.27.0/bin/cmake -E cmake_link_script CMakeFiles/toto.dir/link.txt --verbose=1 # /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -stdlib=libc++ -stdlib=libc++ -g3 -O0 -W -Wall -Wextra -arch Arm64 -isysroot /Applications/Xcode .app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.0.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/toto.dir/App/main.cpp.o -o toto # ld: Неопределенные символы: # tesseract::TessBaseAPI::TessBaseAPI(), ссылка на: # _main в main.cpp.o # tesseract::TessBaseAPI::~TessBaseAPI(), ссылка из: # _main в main.cpp.o # clang: error: команда компоновщика завершилась неудачей с кодом завершения 1 (используйте -v, чтобы увидеть вызов) # make[2]: *** [тото] Ошибка 1 # make[1]: *** [CMakeFiles/toto.dir/all] Ошибка 2 # make: *** [все] Ошибка 2 Сначала у меня возникла ошибка: #include в main.cpp не был найден, но это была только моя вина, я забыл связать библиотеку через CMakeLists.txt.

Когда я это исправил, мне просто не удалось получить -L, -I или даже -l в командах сборки. (при просмотре в подробном режиме -v) я просто получаю неопределенные ошибки символов.

Чтобы попытаться принудительно использовать хотя бы -l, я попробовал установить target_link_libraries() в CMakeLists.txt, вот так:< /п> target_link_libraries(${PROJECT_NAME} ЧАСТНЫЙ ${Tesseract_LIBRARIES} ) Это дает тот же результат, и, наконец, я вручную заставил его написать -ltesseract со следующим:

target_link_libraries(${PROJECT_NAME} ЧАСТНЫЙ ${Tesseract_LIBRARIES} тессеракт ) Это действительно работает и добавляет -l в конце, но я получаю еще более серьезную ошибку:

ld: библиотека «tesseract» не найдена clang: ошибка: команда компоновщика завершилась неудачно с кодом выхода 1 (используйте -v, чтобы увидеть вызов) Для справки: я использую архитектуру Arm64 (MacOS), но не понимаю, почему это может быть проблемой.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»