Windows下编译OpenCV带Tesseract OCR

0. 下载准备

sw下载地址:https://software-network.org/client/
opencv下载地址:https://opencv.org/releases/
opencv_contrib下载地址:https://github.com/opencv/opencv_contrib/releases
Tesseract下载地址:https://github.com/tesseract-ocr/tesseract


若要使用putText在图片中添加中文汉字,则还需要编译freetype和harfbuzz,参考我上一篇文章: 《windows下编译OpenCV带opencv_contrib和freetype》


1. 配置SW(software-network)

1.1 下载windows版本客户端

https://software-network.org/client/

在这里插入图片描述

1.2 配置sw

下载的zip文件解压到任意目录,把sw.exe所在的目录设置环境变量
在这里插入图片描述
在这里插入图片描述

例如我解压到D:\DevTools\sw-master-windows-client目录,则把这个目录设置到环境变量Path中。

打开cmd终端,或者powershell,执行 sw setup 命令
在这里插入图片描述
这一步很重要,不执行这个命令,会在下面Tesseract Cmake时报SW_DIR未找到等错误


2. 编译Tesseract

2.1 配置CMake

下载Tesseract,并解压到任意目录,并在Tesseract目录下新建一个build目录,打开CMake-Gui
在这里插入图片描述
在这里插入图片描述
如上图那样一二三步选择,点击Configure按钮,选择自己要编译的VS版本(我自己要编译VS2017 32位的Tesseract)

在这里插入图片描述
上图这里等待有可能出现下载依赖库失败,可以反复多次点击Configure,直到不报错。若依然下载失败,可以尝试科学上网(fan qiang)

在这里插入图片描述
(1)Configure完成后,更改一些CMAKE_INSTALL_PREFIX目录, 如果用默认的C盘的目录,在后面编译INSTALL的时候会报错,要使用管理员权限编译, 我建议直接在这里改到其他目录比较好,也便于管理文件。
(2)修改完后,再次点击Configure按钮,等待Configuring done, 如果不爆红,则点击Generate按钮, 等待Generating done。
(3)完成后,点击Open Project按钮,这里会自动打开VS。
(4)在VS中选择ALL_BUILD,右键build,进行编译,如下图:
在这里插入图片描述


2.2 处理编译中出现的报错问题

2.2.1 new line contant、 syntax error ‘)’ 等错误

在这里插入图片描述
这类错误,要把gconvert.c等文件的编码格式改为 UTF-8 Bom 格式 (URF-8 with signature)。

2.2.1.1 VS中添加修改文件格式的命令

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
按照上图这些步骤,添加 Advanced Save Options(高级保存选项),到VS工具栏的File项中。

2.2.1.2 更改文件编码格式

(1)双击VS中错误列表Error List中的错误,可以打开报错的文件,然后在VS工具栏中选择File -> Advanced Save Options, 如下图:
在这里插入图片描述
(2)修改文件格式为URF-8 with signature, 如下图:
在这里插入图片描述

这样的报错会有大概20个文件左右,一般每次编译只会出现一个,所以要更改完一个文件的格式后,再次编译,再出现报错时,再按照上面的步骤一二,来更改文件格式, 直到编译成功。


2.2.2 LNK2026 module unsafe for SAFESEH image

在这里插入图片描述
编译的时候报 module unsafe for SAFESEH image 的错,找到text2iamge工程,右键属性 -> Linker -> Advanced -> Image Has Safe Exception Handlers 更改为No(/SAFESEH:NO), 然后重新ALL_BUILD编译。 (我编译VS2019 64位版本时未出现这个报错,不知道是32位版本的问题,还是VS2017与VS2019的差别)
在这里插入图片描述

2.3 获取Tesseract编译后的果实

在Debug模式下,编译ALL_BUILD、INSTALL之后, 再在Release模式下,编译ALL_BUILD、INSTALL。完成Tesseract的编译。 在install目录下会有bin、include、lib文件目录
在这里插入图片描述
右键Tesseract工程属性,进入 Linker -> Input -> Additional Dependencies,记录一下下图这两个库的路径(Debug和Release都要)
在这里插入图片描述

我记录下的Debug模式下的是:
C:\Users\hm\.sw\storage\pkg\75\6a\600e\obj\bld\470139\lib\org.sw.demo.danbloomberg.leptonica-1.80.0.lib
C:\Users\hm\.sw\storage\pkg\89\dc\64e7\obj\bld\470139\lib\org.sw.demo.gif-5.2.1.lib

Release模式下的是:
C:\Users\hm\.sw\storage\pkg\75\6a\600e\obj\bld\626420\lib\org.sw.demo.danbloomberg.leptonica-1.80.0.lib
C:\Users\hm\.sw\storage\pkg\89\dc\64e7\obj\bld\626420\lib\org.sw.demo.gif-5.2.1.lib


3. 编译OpenCV

3.1 配置CMake

下载解压opencv、opencv_contrib(opencv_contrib的版本和opencv的版本要保持一致),如下图:
在这里插入图片描述
(1)打开CMake,如下图选择目录,点击Configure,选择VS版本,并选择32位或者64位
在这里插入图片描述
在这里插入图片描述
以上,Configure done后,如果有很多爆红的地方,可以参考文章《opencv_contrib安装笔记》

(2)爆红解决后,配置config:

  • 勾选 OPENCV_EXTRA_NONFREE 项,否则在运行SIFT、SURF等函数时会报错
  • 勾选 BUILD_opencv_world 项,如果需要把生成的opencv的lib和dll包含在一个文件opencv_world.lib和opencv_world.dll内则需要勾选,否则不用勾选
  • 设置 OPENCV_EXTRA_MODULES_PATH 项,填入opencv-contrib的目录下的modules目录
    在这里插入图片描述

(3)再次点击“Configure”按钮,然后会出现Tesseract的配置项,填入上一节中编译Tesseract出的结果,如下图
在这里插入图片描述
(4)Lept_LIBRARY中填入上一节2.3中保存下来的Debug模式下的 C:\Users\hm\.sw\storage\pkg\75\6a\600e\obj\bld\470139\lib\org.sw.demo.danbloomberg.leptonica-1.80.0.lib
在这里插入图片描述
(5)再次点击“Configure”按钮,会出现一个Leptonica_DIR的爆红,可以不用管
在这里插入图片描述
(6)再次点击“Configure”按钮,Leptonica_DIR的爆红消失,Configure done

(7)查看Configure日志,发现有这样一句话: Can’t use Tesseract (details: https://github.com/opencv/opencv_contrib/pull/2220)
在这里插入图片描述
需要添加一个 ENABLE_CXX11=ON,如下图
在这里插入图片描述

(8)再次点击“Configure”按钮,Configure done, Configure日志出现 Tesseract: YES, 表示Tesseract配置成功了,如下图:
在这里插入图片描述

(9)点击“Generate”按钮, Generate done
(10)点击“Open Project”按钮,自动启动VS,打开了OpenCV工程

3.2 编译OpenCV

VS打开OpenCV工程后,在 ALL_BUILD右键,Build, 编译时会报这样的错误,如下图:
在这里插入图片描述
在这里插入图片描述

是因为要在OpenCV属性里面添加Gif的lib,2.3节中已经保存过的,
Debug模式下的是:
C:\Users\hm\.sw\storage\pkg\89\dc\64e7\obj\bld\470139\lib\org.sw.demo.gif-5.2.1.lib
Release模式下的是:
C:\Users\hm\.sw\storage\pkg\89\dc\64e7\obj\bld\626420\lib\org.sw.demo.gif-5.2.1.lib
填入下图的位置,注意以你编译Tesseract后生产的gif的lib路径为准
因为之前在OpenCV的CMake中配置的Leptonica为Debug版本的lib, 这里顺便把Release模式下的配置改为Release版本的Leptonica的lib: C:\Users\hm\.sw\storage\pkg\75\6a\600e\obj\bld\626420\lib\org.sw.demo.danbloomberg.leptonica-1.80.0.lib
在这里插入图片描述
在Debug模式下,编译ALL_BUILD、INSTALL之后, 再在Release模式下,编译ALL_BUILD、INSTALL。完成OpenCV的编译。 在build\install目录下会有bin、include、lib等文件目录

4. 测试Tesseract集成到OpenCV是否成功

在这里插入图片描述
使用OpenCV自带的end_to_end_recognition.cpp这个文件中的代码测试


5. 参考资料

[1] https://tesseract-ocr.github.io/tessdoc/Compiling.html#windows
[2] https://my.oschina.net/lsfx/blog/4996692

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值