TesseractOCR + OpenCV环境搭建
TesseractOCR + OpenCV环境搭建
Vcpkg包管理工具
想使用TesseractOCR + OpenCV当然可以下载源代码自己编译,但这样对于小白来说会遇到许多问题,尤其是库的依赖需要自己补全。踩了许多坑,后来了解到可以使用包管理工具进行环境搭建。
Vcpkg是可用于Windows,linux和MacOS上跨平台的开源 C/C++ 库管理工具。
Vcpkg安装
Vcpkg的使用需要Git环境。
Vcpkg可以通过Vcpkg官网下载安装包进行安装。
也可以通过git指令git clone https://github.com/Microsoft/vcpkg
来下载到当前目录,再使用.\bootstrap-vcpkg.bat
安装。
安装完成后记得配置下系统环境变量。
使用Vcpkg安装C++库
想要使用Vcpkg安装C++库需要在终端切到安装目录使用.\vcpkg install 库名
来安装对应的库。
比如使用以下命令来安装OpenCV与TesseractOCR
1 2 3
| .\vcpkg install opencv:x64-windows
.\vcpkg install tesseract
|
安装需要时间,耐心等待。
安装完成后Vcpkg目录下的packages文件夹存放着对应的库与依赖的文件。可以将其添加进入环境变量中。
tesseract还需要下载训练好的语言包放入.vcpkg\packages\tesseract_x64-windows\share
的tessdata文件夹下,
并添加系统变量TESSDATA_PREFIX
为tessdata的路径才可以正常使用。
使用
nuget配置文件
使用vcpkg integrate project
指令集成到工程,会提醒你在那生成了nuget配置文件

比如我的在C:\Users\20190\vcpkg
在vs中设置nuget配置文件

然后右击项目名选择->管理 NuGet 程序包
安装对应的包,这样就可以将下载的第三方库集成到指定的工程里。
Cmake配置文件
或使用vcpkg integrate install
指令集成到全局

在项目的Cmake配置文件中添加
1 2
| // 修改为你自己的路径 set(CMAKE_TOOLCHAIN_FILE "C:/Users/HYW/vcpkg/scripts/buildsystems/vcpkg.cmake")
|
就可以在项目中#include
对应库来使用
测试代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| ui.setupUi(this);
tesseract::TessBaseAPI* api = new tesseract::TessBaseAPI();
if (api->Init(NULL, "chi_sim")) { QMessageBox mesg; mesg.warning(this, "错误", "Could not initialize tesseract."); return; } cv::Mat image = cv::imread(utf8Bytes.toStdString(), 1); namedWindow("Display window", cv::WINDOW_AUTOSIZE); imshow("Display window", image);
cv::Mat grayImage; cv::cvtColor(image, grayImage, cv::COLOR_BGR2GRAY);
Pix* pixImage = pixCreate(grayImage.cols, grayImage.rows, 8); for (int y = 0; y < grayImage.rows; ++y) { for (int x = 0; x < grayImage.cols; ++x) { uchar pixelValue = grayImage.at<uchar>(y, x);
pixSetPixel(pixImage, x, y, (l_uint32)pixelValue); } }
api->SetImage(pixImage);
char* outText = api->GetUTF8Text(); ui.groupBox->setTitle("识别结果:"); ui.textEdit->setText(outText);
qDebug() << "识别结果: " << outText;
api->End(); delete[] outText; pixDestroy(&pixImage);
|
效果

Vcpkg其他指令
1 2 3 4 5 6 7 8 9 10 11 12
| 集成到全局:vcpkg integrate install 移除全局:vcpkg integrate remove 集成到工程:vcpkg integrate project(在“\scripts\buildsystems”目录下,生成nuget配置文件) 查看库目录:vcpkg search 查看支持的架构:vcpkg help triplet 指定编译某种架构的程序库:vcpkg install xxxx:x64-windows(x86-windows) 卸载已安装库:vcpkg remove xxxx 指定卸载平台:vcpkg remove xxxx:x64-windows 移除所有旧版本库:vcpkg remove --outdated 查看已经安装的库:vcpkg list 更新已经安装的库:vcpkg update xxx 导出已经安装的库:vcpkg export xxxx --7zip(–7zip –raw –nuget –ifw –zip)
|
参考资料
个人博客
Vcpkg C/C++库管理工具安装和使用教程
win10 使用vcpkg 安装 opencv 教程
一键部署Tesseract-OCR环境C++版本(Windows)
Qt利用VCPKG和CMake和OpenCV和Tesseract实现中英文OCR