CMake C++环境下配置OpenCV与Tesseract联合开发环境遇到问题
OpenCV 集成 Tesseract 并适配 Qt 5.15 Qmake 配置方案
第一步:重新编译带Tesseract支持的OpenCV模块
- 首先确认你已经正确编译安装了Leptonica和Tesseract,二者都要生成对应你编译OpenCV时使用的编译器版本的静态/动态库(注意和你Qt用的编译器架构一致,比如都是MSVC2019 64位或者MinGW 64位,架构不匹配一定加载失败)
- 重新打开CMake-gui加载OpenCV源码,勾选
BUILD_opencv_text模块,这是OpenCV封装Tesseract的核心模块 - 在CMake的搜索条目里手动补全以下变量的值,找不到的话点击
Add Entry手动添加:Leptonica_INCLUDE_DIR:填写你编译好的Leptonica的include文件夹路径Leptonica_LIBRARY:填写Leptonica对应的lib文件路径(比如liblept.lib或者libleptonica.a)Tesseract_INCLUDE_DIR:填写Tesseract的include文件夹路径Tesseract_LIBRARY:填写Tesseract对应的lib文件路径(比如tesseract53.lib或者libtesseract.a)
- 点击Configure确认没有报Tesseract/Leptonica相关的错误后,再点击Generate生成工程,重新编译安装OpenCV,编译完成后确认install目录下的lib文件夹里有opencv_text相关的库文件
第二步:适配Qt Qmake配置
- 打开你的.pro项目文件,在原有OpenCV的库引入基础上,额外添加Tesseract和Leptonica的头文件与库引用:
# 引入Tesseract和Leptonica头文件 INCLUDEPATH += 你的Tesseract安装路径/include \ 你的Leptonica安装路径/include # 引入依赖库 LIBS += -L你的Tesseract安装路径/lib -ltesseract \ -L你的Leptonica安装路径/lib -llept \ # 对应你的OpenCV版本填写opencv_text库,debug版本加d后缀 -lopencv_text480
- 把Tesseract、Leptonica对应的dll文件(如果是动态编译的话)放到你Qt项目生成的exe同目录下,避免运行时找不到依赖
常见问题排查
- 编译时报Tesseract相关的函数未定义:90%都是库的架构和编译器不匹配,确认你编译Tesseract、Leptonica、OpenCV、Qt项目用的是同一个编译器同一个架构
- 运行时找不到Tesseract语言包:需要把tessdata文件夹放到exe同目录,或者在代码里调用
cv::text::OCRTesseract::create()时手动指定tessdata的路径 - 如果你的Tesseract是5.x版本,要确保你用的OpenCV版本已经支持5.x接口,过低的OpenCV版本(比如3.x)只能适配Tesseract4.x及以下版本
内容的提问来源于stack exchange,提问作者VolkKiiroi
相关产品推荐
相关产品推荐

