Как мне собрать OpenCV с TesseractOCR? - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь собрать OpenCV с модулем Tesseract OCR для использования на Raspberry Pi.

В Интернете очень мало информации о том, как его построить, и что доступно, очень неполно.

Я собираюсь использовать Visual Studio 2017 для Windows 10 с помощью плагина VisualGDB для кросс-компиляции.

Я могу загрузить проект OpenCV CMake и собрать его без проблем.

Я скачал модули OpenCV-contrib и указал OPENCV_EXTRA_MODULES_PATH на C:/opencv/opencv_contrib-master/modules

Я вижу, что есть модуль text, который содержит некоторые источники для tesseract-ocr.

Есть также записи для Tesseract_INCLUDE_DIR и Tesseract_LIBRARY

Значит ли это, что мне нужно скачать Tesseract отдельно?Или я могу просто использовать файлы, поставляемые с OpenCV contrib?

Я клонировал https://github.com/tesseract-ocr/tesseract

Но нигде нет папки для включения.Существует папка src, которая содержит заголовки и исходные файлы, но нигде не содержит папку include.

Нужно ли сначала собирать tesseract?И когда он собирается, он создает lib и включает файлы?

Я пытался собрать tesseract, но для этого потребовалась лептоника.Я смог построить лептонику.но я не могу включить его в Tesseract cmake.

Я добавил строки

add_subdirectory(${CMAKE_SOURCE_DIR}/../leptonica)
add_subdirectory(${CMAKE_SOURCE_DIR}/../leptonica/build)
find_package(Leptonica ${MINIMUM_LEPTONICA_VERSION} REQUIRED CONFIG) 

Но я получаю ошибки:

add_subdirectory not given a binary directory but the given source C:\opencv\tesseract\CMakeLists.txt

Could not find a package configuration file provided by "Leptonica" C:\opencv\tesseract\CMakeLists.txt 124

Спасибо,

1 Ответ

0 голосов
/ 03 октября 2018

У меня есть tesseract для сборки, вот что я добавил:

Чтобы добавить комментарий в tesseract / CMakeLists.txt в строке 105 и добавить

#if(NOT EXISTS ${PROJECT_SOURCE_DIR}/.cppan)
#    if (NOT Leptonica_DIR AND NOT MSVC)
#        find_package(PkgConfig REQUIRED)
#        pkg_check_modules(Leptonica REQUIRED lept>=${MINIMUM_LEPTONICA_VERSION})
#        link_directories(${Leptonica_LIBRARY_DIRS})
#    else()
#        find_package(Leptonica ${MINIMUM_LEPTONICA_VERSION} REQUIRED CONFIG)
#    endif()
#else()
#    if (STATIC)
#        set(CPPAN_BUILD_SHARED_LIBS 0)
#    else()
#        set(CPPAN_BUILD_SHARED_LIBS 1)
#    endif()
#    add_subdirectory(.cppan)
#endif()    
set(Leptonica_DIR "C:/opencv/leptonica/build")
find_package(Leptonica ${MINIMUM_LEPTONICA_VERSION} REQUIRED CONFIG) 
find_package(OpenCL QUIET)

Затем необходимо выполнить некоторые параметры сборки.изменилось.Тот же файл, строка 260. Установите все PROPERTIES COMPILE_FLAGS "-marm", иначе он не будет компилироваться

set_source_files_properties(
    ${CMAKE_CURRENT_SOURCE_DIR}/src/arch/dotproductsse.cpp
    PROPERTIES COMPILE_FLAGS "-msse4.1")
set_source_files_properties(
    ${CMAKE_CURRENT_SOURCE_DIR}/src/arch/intsimdmatrixsse.cpp
    PROPERTIES COMPILE_FLAGS "-msse4.1")
set_source_files_properties(
    ${CMAKE_CURRENT_SOURCE_DIR}/src/arch/dotproductavx.cpp
    PROPERTIES COMPILE_FLAGS "-mavx")
set_source_files_properties(
    ${CMAKE_CURRENT_SOURCE_DIR}/src/arch/intsimdmatrixavx2.cpp
    PROPERTIES COMPILE_FLAGS "-mavx2")

Затем скопируйте endianness.h и config_auto.h из C:\opencv\leptonica\build\src в C:\opencv\leptonica\src, иначе в противном случае сборка не будет

Тогда он будет жаловаться на неопределенный PACKAGE_VERSION в tessdatamanager.cpp, поэтому определите его в CMakeLists или просто непосредственно в исходном файле.

После этого он должен скомпилироваться, если ваши каталоги совпадают.

Моя структура каталогов следующая:

Tesseract git repository located in  C:\opencv\tesseract
Tesseract build directory  C:\opencv\tesseract\build
Leptonica repository located in  C:\opencv\leptonica

Leptonica build directory in  C:\opencv\leptonica\build (contains LeptonicaConfig.cmake, 
Leptonica library files, (libleptonica.so, libleptonica.so.1.77.0, libleptonica.so.5.3.0) are in C:\opencv\leptonica\build\src
...