win10环境下不通过cppan编译tesseract4.1动态库[通俗易懂]

win10环境下不通过cppan编译tesseract4.1动态库[通俗易懂]在我的博客中,写了几篇关于tesseract如何编译Windows环境下的dll库,但那几篇都是基于cppan的环境依赖,而cppan的官方网站在2021年1月已经正式关闭了,因此那种方式将无法下载到对应的依赖环境,根据tesseract官方文档是使用SW的方式进行依赖下载,因此这篇博客将讲解使用基于SW的编译方式。1SW的环境配置在SW官方地址上下载sw.exe。将下载的sw.exe所在路径添加到系统环境变量PATH下。以管理员权限打开cmd,输入命令:swsetup这个命令主要是在用

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

在2021年1月份,cppan的官方网站关闭了,因此现在通过cppan自动下载tesseract所需要的环境依赖从而编译tesseract动态库的方式不可行。tesseract官方文档提供了通过sw下载环境依赖的编译方式,有兴趣的博友可以试试官方文档的方式。在这篇博客中将采用另外一种方式编译tesseract。tesseract依赖于leptonica,而leptonica又依赖于zlib、libjpeg、libpng、libtiff这4个运行库。因此我们一步步进行编译。

1 编译leptonica依赖的4个库

1.1 编译zlib

zlib官网上下载zlib1211.zip,下载完成后解压,使用cmake+vs2015进行编译
在这里插入图片描述
cmake编译完成后,使用vs2015打开,先运行ALL_BUILD,接着运行INSTALL,就会在C盘生成zlib的运行库。
在这里插入图片描述

1.2 编译libjpeg

jpeg官方下载jpeg最新版:jpegsr9d.zip ,接下来还需要下载一个win32.mak:下载地址,将下载的Win32.mak复制到jpeg的解压目录中,如下所示:
在这里插入图片描述
将目录下的jconfig.vc文件重名名为jconfig.h,然后打开vs2015的开发工具命令提示符,进入到jpeg的目录,输入命令:
在这里插入图片描述

nmake -f makefile.vc libjpeg.lib

编译成功后会生成libjpeg.lib
在这里插入图片描述

1.3 编译libpng

libpng网站上下载lpng1637.zip,下载完成后解压,然后使用cmake编译,在第一次Configure完成后,在zlib这个选项改成编译好的zlib头文件目录以及lib文件
在这里插入图片描述
,然后使用vs2015打开工程,同样先运行ALL_BUILD,接着运行INSTALL

在这里插入图片描述
如上所示,成功生成了libpng的运行库。

1.4 编译libtiff

libtiff官网上下载tiff-4.3.0.zip,然后使用cmake,第一次Configure后更改下如下配置
在这里插入图片描述
更改jpeg和zlib目录为刚才生成库文件目录
在这里插入图片描述
然后点击Configure,接着点击Generate
用vs2015打开,首先执行ALL_BUILD ,接着运行INSTALL,这样就会生成tiff的运行库。
在这里插入图片描述
如上所示,生成tiff的运行库成功。

2 编译leptonica

leptonica的github地址上下载最新版:leptonica-1.80.0.zip。使用cmake编译,在第一次Configure后会提示sw错误,这是因为leptonica可以使用sw来自动下载zlib、jpeg、png、tiff的dll依赖,类似于之前用cppan下载一样,但我在这里已经编译好了如上4个库,所以把SW_BUILD取消掉
在这里插入图片描述
更改jpeg和png的头文件目录以及lib文件路径:
在这里插入图片描述
更改tiff以及zlib的头文件以及lib文件路径:
在这里插入图片描述
然后点击Configure,接下来点击Generate生成。

生成成功后,先运行ALL_BUILD
在这里插入图片描述
接下来点击INSTALL
在这里插入图片描述
如上所示,生成leptonica的静态库成功。

3 编译tesseract

tesseract官方网址上下载tesseract-4.1.1.zip,下载完成后解压。tesseract4.1需要libarchive,其实很多依赖安装了anaconda后会自动找那个位置的,有一种比较节省时间的做法,要编译32位的tesseract就安装32位的anaconda,要安装64位的就安装64位的anaconda。
当然libarchive的32位运行库可以从这个网站上下载
http://gnuwin32.sourceforge.net/packages/libarchive.htm

在这里插入图片描述
libarchive的64位运行库可以在github上下载,这个网址:

https://github.com/libarchive/libarchive/releases/tag/3.5.1

在这里插入图片描述
在我的电脑里选择安装32位的anaconda,这样很多依赖都可以用这个里面的,其实都可以不用编译zlib以及jpeg等库,直接都用anaconda环境下的运行环境也可以编译成功。

然后使用cmake,第一次Configure时,会出现错误,在这次cmake时,会自动找到leptonica的环境路径。
在这里插入图片描述
把BUILD_TRAINNING_TOOLS取消,重新Configure
这样就可以生成成功了
在这里插入图片描述
使用vs2015打开这个工程,首先右键ALL_BUILD,生成
在这里插入图片描述
可以看到4个项目都能够生成成功,接下来右键INSTALL,生成
在这里插入图片描述
libtesseract就生成成功了,就可以在vc环境下进行调用。
在这里插入图片描述
在这里插入图片描述
可见,通过这种方式生成的tesseract,比起使用cppan的要少很多dll,这种环境更加干净。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/187376.html原文链接:https://javaforall.net

(0)
上一篇 2022年9月30日 下午7:16
下一篇 2022年9月30日 下午7:36


相关推荐

  • 计算机管理照相机感叹号,电脑设备管理器摄像头驱动出现黄色感叹号是怎么回事儿 – 驱动管家…[通俗易懂]

    计算机管理照相机感叹号,电脑设备管理器摄像头驱动出现黄色感叹号是怎么回事儿 – 驱动管家…[通俗易懂]设备管理器摄像头驱动显示黄叹号安装驱动过程提示注册表损坏,出现这种情况的原因是注册表文件出现问题,解决方法如下故障现象:设备管理器摄像头驱动显示黄叹号安装驱动过程提示注册表损坏。原因分析:注册表文件出现问题。解决方案:1.点击“开始”—所有程序—打开运行;2.输入regedit(“regedit.exe”是Windows系统的注册表编辑器,是RegistryEditor的缩写。W…

    2022年8月12日
    6
  • GBDT算法简介_gbdt算法原理

    GBDT算法简介_gbdt算法原理在网上看到一篇GBDT介绍非常好的文章,GBDT大概是非常好用又非常好用的算法之一了吧(哈哈两个好的意思不一样)        GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multiple Additive Regression Tree),是一种迭代的决策树算法,该算法由多棵决策树组成,所有树的结论累加起来做最终答

    2022年10月12日
    5
  • Java配置方式读取外部的资源配置文件

    Java配置方式读取外部的资源配置文件

    2022年3月12日
    55
  • shell-循环

    shell-循环接上一篇shell运算符接着往下说,shell循环:shell循环有三种,一种是for循环,一种是while循环,还有一种是until循环,循环体中和java类似,可以使用break调出当前循环,continue继续下一次循环。for循环for循环以for开始,循环体在do和done之间for循环有两种各式,一种是带in,一种是类似java的for循环:比如说输出0到10之间的整数,给…

    2022年7月24日
    13
  • 用户态与内核态之间切换详解[通俗易懂]

    用户态与内核态之间切换详解[通俗易懂]用户态切换到内核态CPU中有一个标志字段,标志着线程的运行状态。用户态和内核态对应着不同的值,用户态为3,内核态为0.每个线程都对应着一个用户栈和内核栈,分别用来执行用户方法和内核方法。用户方法就是普通的操作。内核方法就是访问磁盘、内存分配、网卡、声卡等敏感操作。当用户尝试调用内核方法的时候,就会发生用户态切换到内核态的转变。切换流程:1、每个线程都对应这一个TCB,TCB中有一个TSS字段,存储着线程对应的内核栈的地址,也就是内核栈的栈顶指针。2、因为从用户态切换到内核态时,需要将用户态.

    2025年12月16日
    5
  • 0x0000007e_c0000005改兼容性没用

    0x0000007e_c0000005改兼容性没用对于怎么解决应用程序正常初始化0xc0000005失败这个问题,小编觉得是需要知道的,因为我们在生活中遇到类似这样的问题几率还是蛮大的。所以小伙伴们要接着往下看哟~接下来小编就来告诉你们怎么解决应用程序正常初始化0xc0000005失败的问题。有的时候刷网页刷到一半,就突然间出现应用程序正常初始化0xc0000005失败的窗口提示,但是这是怎么回事呢?又该怎么解决呢?稳住,接下来小编就来告诉你们怎…

    2022年10月3日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号