vs2019+tesseract5.3.2+leptonica1.83.1基于CMake源码编译攻略

由于网上Tesseract编译教程要么基于CPP(Tesseract5.0不再使用cppan作为包依赖管理器)或VCPKG、SW,比如使用VCPKG进行编译生成dll,不方便项目管理,因为生成的dll命名无法控制,可能和原项目内的dll有冲突等问题,所以这里讲的是基于CMake方式进行编译生成相关dll,虽然此方法编译dll繁琐点,但生成的dll命名可控,方便和项目中以有的进行集成开发

前提条件

  1. 安装CMake工具并添加到环境变量。
  2. 安装VS2019开发环境
  3. 下载tesseract5.3.2,地址:https://github.com/tesseract-ocr/tesseract/archive/refs/tags/5.3.2.zip
  4. leptonica1.83.1,地址:https://github.com/DanBloomberg/leptonica/archive/refs/tags/1.83.1.zip
  5. libjpeg-turbo-2.1.5.1,地址:https://github.com/libjpeg-turbo/libjpeg-turbo/archive/refs/tags/2.1.5.1.zip
  6. nasm-2.16.01,地址:https://www.nasm.us/pub/nasm/releasebuilds/2.16.01/win64/nasm-2.16.01-win64.zip
  7. libtiff-4.5.0,地址:http://download.osgeo.org/libtiff/tiff-4.5.0.zip

编译步骤

因tesseract依赖leptonica,而leptonica读取图片又依赖libtiff、libjpeg-turbo,所以编译步骤为:libtiff-4.5.0->libjpeg-turbo-2.1.5.1->leptonica1.83.1->tesseract5.3.2,补充:libjpeg-turbo还依赖nasm,如vs编译期间提示CMake Permission denied错误提示,请关闭杀毒软件再试

编译LibTIFF

解压下载的tiff-4.5.0.zip到路径D:/tiff/tiff-4.5.0,在tiff-4.5.0文件夹新建“build”文件夹,使用CMake建构libtiff,如下图

这里不做libtiff详细编译过程,但有点注意如需要支持jpeg压缩读取,需配置如图红框所示,当前 版本libjpeg9e,libjpeg编译debug版本请看我另外文章:libjpeg不能在vs-debug模式下运行处理办法_iandjavax的博客-CSDN博客

配置nasm到系统环境中

解压下载的nasm-2.16.01-win64.zip到路径D:\software\nasm-2.16.01,将环境配置到系统环境中,如下图

编译libjpeg-turbo

解压下载的libjpeg-turbo-2.1.5.1.zip到路径D:/libjpeg-turbo-2.1.5.1,在libjpeg-turbo-2.1.5.1文件夹新建“build”文件夹,使用CMake建构libjpeg-turbo,如下图

上面目录配置完成后,点击Configre,此时跳出编译环境选择对话框,这里选择的是VS2019(x64),点击Finish 

 选择完毕编译工具之后,自动加载libjpeg-turbo

 CMAKE_INSTALL_PREFIX 表示VS编译生成的库存放目录。其它项根据需求勾选。此时背景是红色,再次点击Configure背景变成白色,接着点击Generate,生成完后找到build生成目录下的libjpeg-turbo.sln,双击打开即可

首先右击选中INSTALL选择“生成”,运行完之后会在libjpeg-turbo-2.1.5.1-res文件夹生成bin、include、lib、share文件夹(Debug和Release分别运行,不同模式下生成的四个文件夹拷贝其它地方,用于区分Debug和Release,如libjpeg-turbo-2.1.5.1-debug、libjpeg-turbo-2.1.5.1-release),其中lib、include文件夹内文件后续编译leptonica用到

如要对生成的jpeg62.lib和jpeg62.dll自定义名称,右击jpeg项目选择属性,分别对debug、release目标文件名进行命名,这里命名为libjpeg62和libjpeg62d,后续编译leptonica用到,如下图

 lib文件名还需在链接器-高级-导入库进行更改

编译leptonica

解压下载的leptonica-1.83.1.zip到路径D:\leptonica-1.83.1,在leptonica-1.83.1文件夹新建“build”文件夹,使用CMake建构leptonica,如下图

  上面目录配置完成后,点击Configre,此时跳出编译环境选择对话框,这里选择的是VS2019(x64),点击Finish之后提示:Could NOT find SW (missing: SW_EXECUTABLE),这个不用管,因为这里不用SW方式

 选择完毕编译工具之后,自动加载leptonica

 CMAKE_INSTALL_PREFIX 表示VS编译生成的库存放目录。这里针对JPEG和TIFF格式支持配置以及SW_BUILD、LIBWEBP_SUPPORT、OPENJPEG_SUPPORT勾选取掉,其它项根据需求勾选。此时背景是红色,再次点击Configure背景变成白色,接着点击Generate,生成完后找到build生成目录下的leptonica.sln,双击打开即可

 JPEG和TIFF项分别填好include、debug、release路径

 SW_BUILD勾选取掉

 LIBWEBP_SUPPORT、OPENJPEG_SUPPORT勾选取掉

默认生成静态模式,还需进行配置生成动态模式,即dll和lib,右击leptonica项目点击“属性”,操作如下图

配置类型改为:动态库(.dll)

 

高级属性-目标文件扩展名改为:.dll

C/C++-预处理器-预处理下定义-添加:LIBLEPT_EXPORTS 

由于CMake并没有带入libtiff450d.lib和libjpeg62d.lib文件路径,还需手动配置,如下图

链接器-输入-附加依赖项-分别添加:libtiff450d.lib和libjpeg62d.lib文件路径

右击"解决方案"点击“属性”,选择release,配置勾选INSTALL,点击确认,再右击“解决方案”选择"重新生成解决方案",运行完之后会在leptonica-res文件夹生成include、lib文件夹(Debug和Release分别运行,不同模式下生成的二个文件夹拷贝其它地方,用于区分Debug和Release,如leptonica-res-debug、leptonica-res-release),其中lib、include文件夹内文件后续编译tesseract用到,生成如下图所示

编译tesseract

解压下载的tesseract-5.3.2.zip到路径D:\tesseract5.3.2,在tesseract5.3.2文件夹新建“build”文件夹,使用CMake建构leptonica,如下图

上面目录配置完成后,点击Configre,此时跳出编译环境选择对话框,这里选择的是VS2019(x64),点击Finish之后提示:Could NOT find SW (missing: SW_EXECUTABLE),这个不用管,因为这里不用SW方式,将SW项SW_BUILD勾选取掉以及BUILD项BUILD_TRAINING_TOOLS勾选取掉,再次点击Configre

配置Leptonica_DIR路径

此路径为上面编译leptonica生成

配置CMAKE_INSTALL_PREFIX路径,表示VS编译生成的库存放目录

 路径可自定义其它路径

再次点击Configre,会提示leptonica*.dll未找到可忽略。点击Generate,生成完后找到build生成目录下的tesseract.sln,双击打开即可

由于项目调用Tesseract接口需要引入.h头文件,首先右击“INSTALL”选择“生成”,会在D:/tesseract5.3.2/tesseract5.3.2-res路径下生成include文件夹,如下图

 默认生成静态模式,还需进行配置生成动态模式,即dll和lib,右击libtesseract项目点击“属性”,操作如下图

  配置类型改为:动态库(.dll)

高级属性-目标文件扩展名改为:.dll

C/C++-预处理器-预处理下定义-添加:TESS_EXPORTS 

由于CMake并没有带入leptonica-1.83.1d.lib文件路径,还需手动配置,如下图

 链接器-输入-附加依赖项-添加:leptonica-1.83.1d.lib文件路径

右击libtesseract项目点击“生成”,生成tesseract53d.lib和tesseract53d.dll,如下图生成结果,Release同上操作

调用tesseract

使用VS2019新建"空项目",项目名可随意填,这里填:Test,在项目路径下创建:lib、include、dll文件夹并将h文件以及dll、lib文件夹复制相应位置,如下图

debug和release模式dll复制到此文件夹内 

leptonica和tesseract头文件复制到此文件内 

debug和release模式lib复制到此文件夹内 

为了使项目能够引用到头文件、dll、lib还需相关配置,右击项目选择“属性”,配置如下图

VC++目录-外部包含目录,填写include路径

 VC++目录-库目录,填写lib路径

链接器-输入-附加依赖项,填写: tesseract53d.lib、leptonica-1.83.1d.lib

调用示例

#include "tesseract\baseapi.h"
#include "leptonica\allheaders.h"
#include <iostream>
int main(int argc, char* argv[])
{
	tesseract::TessBaseAPI ocr;
	int ret = ocr.Init("D:\\traineddata", "chi_sim");

	Pix* image = pixRead("D:\\W020160119379681444676-sub.jpg");
	ocr.SetImage(image);

	char* outText = ocr.GetUTF8Text();

	std::cout << outText;

	pixDestroy(&image);
	delete[] outText;
	ocr.End();
}

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值