VS2017/VS2015编译tesseract
前提条件
- 安装CMake工具并添加到环境变量,且要求最新版本。
- 安装cppan工具并添加到环境变量,且要求最新版本。下载地址:https://cppan.org/client/
- 安装IDE开发环境,要求VS2015或VS2017。
- 要求源码目录和下载的cppan依赖库的路径只含英文。
- 要求互联网网络通畅。
- 要求关闭杀毒软件。
编译步骤
步骤1:
第一次编译时,打开cmd命令行,执行命令:cppan -V。
该命令执行后,将在"C:\Users\"目录下生成".cppan"文件夹。修改".cppan"文件夹中的"cppan.yml"文件,将接下来要下载的依赖库指定为其他路径(保存),例如:
步骤2:
再次在cmd命令行中执行命令:cppan -V,则会在步骤1指定的目录中初始化。
步骤3:
cmd命令行中执行命令:cppan --self-upgrade。
步骤4:
修改tesseract源码目录中的"cppan.yml"文件,如果使用VS2015编译,修改为:
如果使用VS2017编译,修改为:
步骤5:
cmd命令行进入tesseract源码目录,执行命令:cppan。
步骤6:
cmd命令行创建并进入"build"目录,执行命令:mkdir build && cd build。
步骤7:
cmd命令行生成VS解决方案(按需执行其中一种命令):
VS2015_32位:cmake .. -G "Visual Studio 14 2015"
VS2015_64位:cmake .. -G "Visual Studio 14 2015 Win64"
VS2017_32位:cmake .. -G "Visual Studio 15 2017"
VS2017_64位:cmake .. -G "Visual Studio 15 2017 Win64"
步骤8:
cmd命令行执行命令:"cppan --generate ."(不要少了冒号,VS2017可不执行此命令)。
步骤9:
手动打开"build"目录中的sln工程文件,注意VS必须以管理员身份运行,首先尝试编译"cppan-d-b-d"工程:
步骤10:
若步骤9编译失败,则再次右键"cppan-d-b-d"工程,重新"build"一次,若依旧提示以下错误:
逐一将以下文件的编码修改为"UTF-8 with signature"(查找目录就是cppan初始化的目录)
D:\.cppan\storage\src\25\26\5887\glib\gregex.c
D:\.cppan\storage\src\25\26\5887\glib\gkeyfile.c
D:\.cppan\storage\src\25\26\5887\glib\gfileutils.c
D:\.cppan\storage\src\25\26\5887\glib\gconvert.c
D:\.cppan\storage\src\25\26\5887\glib\gbookmarkfile.c
D:\cppan\storage\src\81\8f\8aa5\pango\pango-language-sample-table.h
E:\myprogram\tesseract\source\tesseract-4.0.0\src\ccmain\equationdetect.cpp
如何在VS中修改文件的编码,请看这位仁兄的图文介绍:
https://blog.****.net/qq_15647227/article/details/83449248
步骤11:
修改完步骤10中文件的编码后,再次编译"cppan-d-b-d"工程即可编译成功。
步骤12:
最后,重新编译"INSTALL"工程:
步骤13:
编译成功后,即可在C盘的如下目录中生成相应的dll和lib文件,以及需要的头文件:
应用程序调用
应用程序调用tesseract时,仅仅使用tesseract的头文件是不够的,还需包含其他头文件,其实就是cppan下载的依赖头文件。
头文件
首先,在cppan目录中查找"allheaders.h"文件,把如下目录中的所有头文件(.h)全部拷贝出来,并把拷贝出来所有头文件存入"leptonica"目录(新建的)中,如下图所示:
然后,再查找"endianness.h "文件,并把该头文件也放入上一步的"leptonica"目录中。如下图所示:
最后整理为两个目录:
lib引入库
应用程序需要链接两个lib库(注意Debug和Release模式下的lib不要混合调用):
- tesseract40.lib
- pvt.cppan.demo.danbloomberg.leptonica-1.76.0.lib
dll
应用程序运行时,需要链接dll(注意Debug和Release模式下的dll不要混合调用):
- pvt.cppan.demo.danbloomberg.leptonica-1.76.0.dll
- pvt.cppan.demo.jpeg-9.2.0.dll
- pvt.cppan.demo.madler.zlib-1.2.11.dll
- pvt.cppan.demo.openjpeg.openjp2-2.3.0.dll
- pvt.cppan.demo.png-1.6.35.dll
- pvt.cppan.demo.tiff-4.0.9.dll
- pvt.cppan.demo.webp-0.6.1.dll
- pvt.cppan.demo.xz_utils.lzma-5.2.4.dll
- tesseract40.dll
其他
应用程序使用tesseract时,还要根据需要,下载相应的字库,才能识别出图片中相应的字符:
- 简体中文:chi_sim.traineddata
- 英文:eng.traineddata
字库下载地址:https://github.com/tesseract-ocr/tessdata
注意事项
- 32位和64位应分别编译,且cppan下载的依赖库也需要分别下载。
- 关闭杀毒软件。