tesseract ocr5.3.3源码编译(基于cmake)

系列文章目录

1.tesseract ocr5.3.3源码编译方法一(基于cmake)
2.tesseract ocr5.3.3源码编译方法二(基于cmake+sw)
3.tesseract ocr5.3.3自定义训练



前言

用过halcon ocr和深度学习图像分类之后,其实我是不太想用tesseract ocr的,可能是以前用过的老版本效果不好,但是没办法,有些设备用不了深度学习、halcon,只能结合opencv和tesseract来使用了。
在GitHub上tessdoc文档中https://tesseractocr.github.io/tessdoc/Compiling.html,里面介绍了windows下编译tesseract的方法,最简单的方法是用CMAKE+SW来快速安装使用
在这里插入图片描述
在这里插入图片描述
由于公司网络问题,下载不了SW,又加上之前使用的梯子用不了了,所以没用该方法。(后续能下载在用这方法)
备注SW下载网址:https://software-network.org/client/
另外关于使用CMAKE+SW安装方法可以参考https://blog.youkuaiyun.com/zhangcao132/article/details/139524508

本文使用的是用CMAKE编译,CMake build with VS2019 without using Software Network client
https://github.com/DanBloomberg/leptonica/wiki,从leptonica/wiki上可以看到,这种方法需要先编译leptonica,在此基础上进行编译tesseract,而编译leptonica读取图片又依赖tiff、jpeg-turbo、png(可选)等,当然wiki上可以看到Without other external libraries Leptonica only supports the following image formats: bmp, pnm, spix,不安装tiff、jpeg也行,只支持bmp, pnm, spix格式

本文方法在公司的两台机台上都安装成功了
一台是笔记本:win7 x64 ,先用Cmake编译,用vs2019生成dll和lib
一台是台式机:win10 x64,先用Cmake编译,用vs2022生成dll和lib

一、准备工作

1.安装CMake工具并添加到环境变量
cmake下载地址:https://cmake.org/download/
2.安装VS2019社区版
https://tesseract-ocr.github.io/tessdoc/Compiling.html
从tesseract网站给的建议使用vs2019或者vs2022
3.下载tesseract5.3.3
地址:https://github.com/tesseract-ocr/tesseract/archive/refs/tags/5.3.3.zip
4.leptonica1.83.1
地址:https://github.com/DanBloomberg/leptonica/archive/refs/tags/1.83.1.zip
5libjpeg-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
在安装目录下,新建tesseract533SourceBuild(版本源码编译,名字可按自己习惯来),将下载好的文件解压到该目录下,如下图所示:
在这里插入图片描述

二、编译步骤

因tesseract依赖leptonica,而leptonica读取图片又依赖libtiff、libjpeg-turbo等库文件, 安装libjpeg-turbo需要用到nasm,所以编译步骤为:libtiff-4.5.0->设置nasm环境变量->libjpeg-turbo-2.1.5.1->leptonica1.83.1->tesseract5.3.3

1.编译libtiff

1.1 cmake编译tiff

在D:\Program Files\tesseract533SourceBuild\tiff-4.5.0,文件夹下新建“build” “buildRes”文件夹,打开cmake.gui,选择tiff-4.5.0和build路径,如下图所示:勾选Grouped和Advanceed
在这里插入图片描述
点击配置Configure,选择Visual studio 16 2019,X64
在这里插入图片描述
报错,提示No CMAKE_C_COMPILER could be found.,Selecting Windows SDK version 8.1 to target Windows 6.1.7601.
在这里插入图片描述
在build路径下CMakeFiles文件夹里面打开cmakeerror.log,里面有这样的错误提示:
LINK : fatal error LNK1104: 无法打开文件“ucrtd.lib”,出现这个错误的原因是我的电脑是win7系统,(我另一台win10是正常的)版本是Windows6.1.7601.,cmake-gui默认按照开发机器的版本去找对应的window kit sdk。
所以在后续编译过程中,都需要设置系统版本在进行编译
在tiff-4.5.0文件中,找到并打开CMakeLists.txt,添加版本
set(CMAKE_SYSTEM_VERSION 10.0.19041.0)
在这里插入图片描述
备注:
版本号查看方法:在所有程序中找到visual studio installer打开,点击修改,可以看到安装vs2019安装的sdk,可以看到为Windows 10 SDK(10.0.19041.0)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
添加好CMakeLists.txt后,在CMake-gui操作界面File下点击Delete Cache之后在此点击Configure,可以看到已经链接到对应编译器了The C compiler identification is MSVC 19.29.30038.1
The CXX compiler identification is MSVC 19.29.30038.1
在这里插入图片描述
点击Configure,等Configuring done完之后,点开cmake,找到CMAKE_INSTALL_PREFIX, CMAKE_INSTALL_PREFIX 表示待会使用VS编译生成的库存放目录,这边在tiff-4.5.0下新建buildRes用于存放
在这里插入图片描述
在这里插入图片描述
再次点击Configure,Configuring done之后点击Generate生成。
备注:
如果报错了,提示找不到openGL等,如
fatal error C1083: 无法打开包括文件: “GL/glut.h”
fatal error C1083: 无法打开包括文件: “GLUT/glut.h”
取消jpeg的勾选
在这里插入图片描述
如果提示报错找不到CMakeLists.txt
D:/Program Files/tesseract533SourceBuild/tiff-4.5.0/build
does not contain a CMakeLists.txt file.
在build文件夹下新建一个CMakeLists.txt即可。

1.2 vs生成tiff库文件

在build文件夹中,用vs2019打开tiff.sln
在这里插入图片描述
右键INSTALL,点击生成,会在刚才设置好的CMAKE_INSTALL_PREFIX目录下生成bin、include、lib、share文件夹
在这里插入图片描述
在build下分别新建Debug和Release文件,在vs中选择Debug和Release分别生成,生成的四个文件夹拷贝至对应Debug和Release文件夹中

2.解压nasm并添加至系统环境中

在编译libjpeg-turbo之前,先将nasm添加上到系统环境中,然后重启电脑,如果暂时不想重启,或者不想添加到系统环境中,可以在第三步编译libjpeg-turbo 时Configure报错找不到nasm时,在Cmake-gui中找到CMAKE_ASM_NASM_COMPLER将nasm.exe添加进去详见3
在这里插入图片描述

3.编译libjpeg-turbo

3.1 cmake编译libjpeg

打开libjpeg-turbo-2.1.5.1下的CMakeLists.txt设置系统版本
set(CMAKE_SYSTEM_VERSION 10.0.19041.0)
在这里插入图片描述
在D:\Program Files\tesseract533SourceBuild\libjpeg-turbo-2.1.5.1文件夹下,新建“build” “buildRes”文件夹,打开cmake.gui,选择libjpeg-turbo-2.1.5.1和build路径。
点击Configure,如果没有将nasm添加到系统环境中,此时会报错找不到nasm,点击CMAKE,找到CMAKE_ASM_NASM_COMPLER将nasm.exe添加进去,顺便添加CMAKE_INSTALL_PREFIX。
在这里插入图片描述
在这里插入图片描述
再次点击Configure,Configuring done之后,点击Generate生成。

3.2 vs生成libjpeg库文件

在build文件夹中,用vs2019打开libjpeg-turbo.sln,右键INSTALL,点击生成,会在刚才在CMake中CMAKE_INSTALL_PREFIX设置好的目录下buildRes下生成bin、include、lib、share文件夹,分别新建Debug和Release文件,在vs中选择Debug和Release分别生成,将生成的四个文件夹拷贝至对应Debug和Release文件夹中,其中lib、include文件夹内文件后续编译leptonica用到
在这里插入图片描述

4.编译leptonica

4.1 cmake编译leptonica

在D:\Program Files\tesseract533SourceBuild\ leptonica-1.83.1,文件夹下新建“build” “buildRes”文件夹,打开cmake.gui,选择leptonica-1.83.1和build路径
打开leptonica-1.83.1下的CMakeLists.txt设置系统版本
set(CMAKE_SYSTEM_VERSION 10.0.19041.0)
在这里插入图片描述
打开cmake.gui,选择leptonica-1.83.1和build路径
点击Configure,此时会报错找不到SW,取消勾选SW_BUILD
在这里插入图片描述
LIBWEBP_SUPPORT、OPENJPEG_SUPPORT勾选也取消掉
在这里插入图片描述
顺便添加CMAKE_INSTALL_PREFIX,用于存放VS编译之后生成的库
在这里插入图片描述
顺便添加之前编译的libjpeg和libtiff
在这里插入图片描述
再次点击Configure,Configuring done之后,点击Generate生成。

4.2 vs生成leptonica库文件

在build文件夹中,用vs2019打开leptonica.sln,默认生成静态模式,还需进行配置生成动态模式,即dll和lib,右击leptonica项目点击“属性”,操作如下图
在这里插入图片描述
在这里插入图片描述
配置类型改为:动态库(.dll)
另外这里默认的是dll及lib输出目录是build下面的src,
例如Debug:D:\Program Files\tesseract533SourceBuild\leptonica-1.83.1\build\src\Debug
Release:D:\Program Files\tesseract533SourceBuild\leptonica-1.83.1\build\src\Release
高级属性-目标文件扩展名改为:.dll
在这里插入图片描述
点击应用,然后在
C/C+±预处理器-预处理下定义-添加:LIBLEPT_EXPORTS
在这里插入图片描述
链接器-输入-附加依赖项-分别添加:tiffd.lib和jpeg.lib文件路径
在这里插入图片描述
右击"解决方案"点击“属性”,选择Debug,配置勾选INSTALL,点击确认
在这里插入图片描述
再右击“解决方案”选择"重新生成解决方案",Debug和Release分别运行,其中lib、include文件夹内文件后续编译tesseract用到,生成如下图所示
在这里插入图片描述


5.编译编译tesseract

5.1 cmake编译tesseract

在D:\Program Files\tesseract533SourceBuild\tesseract-5.3.3,文件夹下新建“build” “buildRes”文件夹,打开cmake.gui,选择tesseract-5.3.3和build路径。
打开tesseract-5.3.3下的CMakeLists.txt设置系统版本
set(CMAKE_SYSTEM_VERSION 10.0.19041.0)
在这里插入图片描述
点击Configure,此时会报错找不到SW,取消勾选SW_BUILD
再次点击Configre,此时会出现找不到依赖项leptonica,在Leptonica_DIR对应路径下添加之前编译leptonica-1.83.1的路径,我这里是D:\Program Files\tesseract533SourceBuild\leptonica-1.83.1\buildRes\lib\cmake\leptonica
在这里插入图片描述
顺便配置CMAKE_INSTALL_PREFIX路径,用于存放VS编译之后生成的库
在这里插入图片描述
再次点击Configure,Configuring done之后,点击Generate生成。

5.2 vs生成tesseract库文件

用vs2019打开build生成目录下的tesseract.sln,
由于项目调用Tesseract接口需要引入.h头文件,首先右击“INSTALL”选择“生成”,
在这里插入图片描述
会在D:\Program Files\tesseract533SourceBuild\tesseract-5.3.3\buildRes路径下生成include文件夹,如下图
在这里插入图片描述
备注:其实不生成也行,这些文档在D:\Program Files\tesseract533SourceBuild\tesseract-5.3.3\include下也有
在这里插入图片描述
Debug默认只生成静态模式,即只生成lib,还需进行配置生成动态模式,即dll和lib,右击leptonica项目点击“属性”,操作如下图,配置类型改为:动态库(.dll),
另外这里默认dll及lib输出目录是build下面的Debug,
例如Debug:D:\Program Files\tesseract533SourceBuild\ tesseract-5.3.3\build\Debug
Release:D:\Program Files\tesseract533SourceBuild\ tesseract-5.3.3\build\Release
在这里插入图片描述
配置属性-高级-目标文件扩展名改为:.dll
在这里插入图片描述
C/C+±预处理器-预处理下定义-添加:TESS_EXPORTS
在这里插入图片描述
链接器-输入-附加依赖项-添加:leptonica-1.83.1d.lib文件路径
D:\Program Files\tesseract533SourceBuild\leptonica-1.83.1\buildRes\lib\leptonica-1.83.1d.lib
在这里插入图片描述
右击libtesseract项目点击“生成”,生成tesseract53d.lib和tesseract53d.dll,如下图生成结果,Release同上操作
在这里插入图片描述
在这里插入图片描述
备注:如果选择INSTALL在生成时出现很多关于training的错误,可以返回到CMAKE中,把BUILD_TRAINING_TOOLS这个勾选取消掉VS2022+Win10X64正常但我在VS2019+win7 X64上碰到了
在这里插入图片描述

三、测试tesseractOCR

打开vs2019,创建一个控制台程序,命名为tesseractOCRTest
在这里插入图片描述
创建好后,编译器选择Debug X64点击生成,然后在项目位置F:\A.H_OCR\TesseractOCRTest新建include文件、lib文件夹、tessdata文件夹、testpic文件夹
在这里插入图片描述
在新建的include文件下,将之前编译leptonica-1.83.1生成的include文件夹拷贝至此,将之间编译tesseract5.3.3生成的include文件拷贝至此,如下图所示
在这里插入图片描述
在新建的lib文件下,分别将leptonica-1.83.1、tesseract5.3.3编译生成的lib文件拷贝至此
在这里插入图片描述
在新建的tessdata文件下,将训练好的tessdata文件拷贝至此
在这里插入图片描述
在生成的Debug文件下,将jpeg62.dll、tiffd.dll、leptonica-1.83.1d.dll以及tesseract53d.dll拷贝至此
在这里插入图片描述
点击工程tesseractOCRTest属性,添加外部包含目录,将include目录添加进去
在这里插入图片描述
添加库目录,将lib目录添加进去
在这里插入图片描述
在链接器-输入-附加依赖项中加入tesseract53d.lib、leptonica-1.83.1d.lib
在这里插入图片描述
在TesseractOCRTest.cpp中,添加如下代码

#include "tesseract\baseapi.h"
//pix read
#include "leptonica\allheaders.h" 
//可用opencv读取图像
//#include <opencv2/opencv.hpp>	
#include <iostream>

int main()
{
	tesseract::TessBaseAPI ocr;
	int ret = ocr.Init("tessdata", "ahTest");//add tessdata
	ocr.SetPageSegMode(tesseract::PSM_SINGLE_BLOCK);//set psm

	Pix* image = pixRead("testPic\\3.bmp");//read testpic
	ocr.SetImage(image);
     
    //or
    //cv::Mat imgT = cv::imread("testPic\\3.bmp", IMREAD_GRAYSCALE);
	//ocr.SetImage(imgT.data, imgT.cols, imgT.rows, 1, imgT.cols);

	char* outText = ocr.GetUTF8Text();
	std::cout << outText;

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

参考网址

vs2019+tesseract5.3.2+leptonica1.83.1基于CMake源码编译攻略
https://blog.youkuaiyun.com/kangjiabei/article/details/132292145
tesseract在win10下的源码编译攻略(不需要sw以及cppn版)
https://blog.youkuaiyun.com/m0_37591278/article/details/139323114

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值