基于cmake和vs2017的tesseract的编译

tesseract-4.1编译

**写在前面:**各位尝试tesseract编译的旁友们,我编译之前是已经成功编译了leptonica的,具体见我的【 leptonica依赖的相关库的生成 】所以,大家务必保证已经成功编译,或者有编译好的leptonica了,这里不止需要编译出来的dll,还需要编译好后build文件夹里的LeptonicaConfig.cmake和leptonica-config.cmake,这个在cmake阶段是会提示我们需要的。当然可能还需要些其他的。最后,建议先纵览全文,因为是边编译边写的笔记,所以部分步骤是在重复,心急的旁友可以按照正确方法直接来,哈哈。

准备工具:
cmake-3.16.2-win64-x64下的cmake-gui
tesseract4.1源码
已经编译好的leptonica

下面正式开始:
(1)下载源码【我下载的是4.1】
(2)cmake
源码位置:E:/studytesseractGit/tesseract-4.1
目标位置:E:/studytesseractGit/tesseract-4.1/build
(3)尝试configure,提示leptonica问题,根据提示找到它的Leptonica_DIR这个名字
将leptonica的相关文件所在目录放进去。E:/leptonica_library/leptonica-1.76.0/build
(4)尝试configure,提示 Downloading latest ICU binaries失败,应该是下载太慢的缘故
(5)在tesseract这个文件里搜索ICU binaries,记得勾选高级选项里的“文件内容”,找到cmakelist.txt
(6)根据cmakelist.txt里面的提示http://download.icu-project.org/files/icu4c/56.1/icu4c-56_1-Win${ARCH_DIR_NAME}-msvc10.zip,百度后找到https://sourceforge.net/projects/icu/files/ICU4C/56.1/ 里面有win32和win64 都下载下来吧。话说sourceforge真慢啊,还经常失败。今天运气好,经常多试几次就成功了,谢天谢地。
(7)在tesseract这个文件里搜索icu,发现icu32.zip,内容和下载的32位的差不多,就把下载的压缩包复制进来,替换掉icu32.zip,并解压缩出一个icu文件夹。注意观察内容是否基本一致。
(8)configure,有些红色,看不大懂,大致如下:
CMake Warning (dev) at src/training/CMakeLists.txt:59 (find_package):
Policy CMP0074 is not set: find_package uses _ROOT variables.
Run “cmake --help-policy CMP0074” for policy details. Use the cmake_policy
command to set the policy and suppress this warning.
CMake variable ICU_ROOT is set to:
E:/studytesseractGit/tesseract-4.1/build/src/training/icu/icu
For compatibility, CMake is ignoring the variable.
This warning is for project developers. Use -Wno-dev to suppress it.
研究了一通没懂,实在不知道怎么办了,死马当活马医,generate吧。
(9)E:\studytesseractGit\tesseract-4.1\build里面有tesseract.sln,vs2017打开
(10)生成——生成解决方案,提示有成功4个失败16个跳过2个
(11)百度了很久搞不明白common_training.lib哪里可以有,突发奇想在camke-gui里把BUILD_TRAING_TOOLS的勾去掉了,重新configure和generate
(11)vs2017打开tesseract.sln,生成——重新生成解决方案
哈哈,没有无法打开common_training.lib的提示了,但是提示allheaders.h和endianness.h的问题。
(12)allheaders.h是leptonica的头文件,那么,把它的路径加入到libtesseract和tesseract的包含目录里面
方法:分别右击libtesseract和tesseract,VC++目录——包含目录,添加E:\leptonica_library\leptonica-1.76.0\src
(13)无法打开包括文件: “endianness.h”: No such file or directory是因为编译生成的是endianness.h.in(在leptonica的头文件目录E:\leptonica_library\leptonica-1.76.0\src):
【来自https://blog.csdn.net/qq_40250862/article/details/91913300】

现在,要把endianness.h.in的.in去掉,成为一个.h文件,打开该头文件,里面是

#if !defined (L_BIG_ENDIAN) && !defined (L_LITTLE_ENDIAN)
# if @APPLE_UNIVERSAL_BUILD@
#  ifdef __BIG_ENDIAN__
#   define L_BIG_ENDIAN
#  else
#   define L_LITTLE_ENDIAN
#  endif
# else
#  define @ENDIANNESS@
# endif
#endif

如果直接编译会报错,要将上述代码改成:

#if !defined (L_BIG_ENDIAN) && !defined (L_LITTLE_ENDIAN)
# if defined (__APPLE_CC__)//@APPLE_UNIVERSAL_BUILD@
#  ifdef __BIG_ENDIAN__
#   define L_BIG_ENDIAN
#  else
#   define L_LITTLE_ENDIAN
#  endif
# else
#  define L_LITTLE_ENDIAN//@ENDIANNESS@
# endif
#endif

保存好关掉。
(14)生成——生成解决方案
好,现在成功4失败0跳过2
(15)在cmd中进入tesseract.exe所在目录,尝试tesseract -v
提示:由于找不到leptonica-1.76.0d.dll(也可能是leptonica-1.76.0.dll),无法继续执行代码。重新安装程序可能会解决此问题
(16)将leptonica以及其五个依赖库生成的dll复制到tesseract.exe所在目录,按照提示将所需的dll加进来。
(17)在cmd中进入tesseract.exe所在目录,尝试tesseract -v
这次ok了!!!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值