Tesseract-ocr是流行的图像文字识别库,可以识别多种语言文字(包括中文),详细介绍请看官网
https://github.com/tesseract-ocr/tesseract。这篇博文主要介绍如何在windows上使用vcpkg配置tesseract C++Api。
使用tesseract的三种方法
第一种,官方提供了windows安装包,安装在本地,就可以使用命令行来使用tesseract识别图片了。下载地址Home · UB-Mannheim/tesseract Wiki · GitHub,选择合适版本的安装包,安装时注意勾选需要的语言包。
安装好就可以使用命令行调用它了,tesseract input.tiff output --oem 1 -l eng。安装当你勾选其它附加语言时,可能会提示这个语言包安装失败,此时可以直接去官网下载语言包,https://github.com/tesseract-ocr/tessdata,放入安装目录的tessdata文件夹中。
更多的命令行使用方法请查看官网教程:Command Line Usage | tessdoc。
程序员用它做开发时,就需要调用其API接口了,命令行方式不行。
开发者需要编译好的调用库文件和头文件,才能在函数中调用。第二种方法是各平台通用的,即CMake在本地平台编译tesseract源码,然后再配置tesseract库。众所周知,编译源码的方式,在windows上是比较容易失败的 。因此,我选择一个更省心的方法。
第三种方法,使用vcpkg C++ 库管理器,这是微软出的,能够方便开发者使用第三方包的管理工具,只要vcpkg支持的,就可以快速安装配置,用起来类似python的pip。
vcpkg的下载地址:https://github.com/microsoft/vcpkg ,下载到本地后,vcpkg主文件夹下有个bootstrap-vcpkg.bat 批文件,双击运行它,就会在同目录下生成vcpkg执行文件。现在就可以用vcpkg来安装包了(是否要添加到环境变量,根据自身使用需求)。这部分参考知乎大佬的博文[工具]包管理工具Vcpkg 的使用 - 知乎。下面记录一些vcpkg的重要命令,常用命令参考此博文:VCPKG 常用命令 - vcpkg_C++包管理器 - 博客园。
vcpkg list #查看支持库目录
vcpkg search 库名 #搜索是否支持该库
vcpkg install 库名 #安装某个库
vcpkg remove 库名 --recurse #卸载相关库
安装需要注意:vcpkg 默认安装最新版本的库,并且是x86静态库。以tessercat为例,vcpkg install tesseract 安装的是32位动态库 ,而我的项目想用64位的动态库,应是 vcpkg install tesseract:x64-windows。另外请安装动态库,如果是tesseract:x64-windows-static, 会安装静态库,想使用静态库请参考这篇博文:https://blog.csdn.net/xmcy001122/article/details/116227032。安装过程比较缓慢,可能会出错,请多次尝试,我报错过两次。
接下来集成到一个项目中。在命令行运行 vcpkg integrate project,执行命令成功后会在“\scripts\buildsystems”目录下,生成nuget配置文件。
点击菜单“工具”, 选择"NuGet 包管理器->程序包管理器设置"->程序包源,添加新包源,刚才buildsystems目录,名字是vcpkg,更新,确定。
右键点击需要设置的工程弹出菜单,选择“管理 NuGet 程序包”。在右上角的“程序包源”中选择刚刚设置的“vcpkg”。这样在“浏览”选项卡中就可以看到“vcpkg.D.vcpkg”。点击最右侧的“安装”。
现在,vcpkg管理的库集成到这个项目上了,无需再进行其它配置,就可以正常使用第三方库。例如下面的代码。
#include<tesseract/baseapi.h>
#include<tesseract/publictypes.h> //使用tesseract的Api
#include <iostream>
using namespace cv;
using namespace std;