vs2017+win10+tesseract5.0编译及配置

参考文献:https://www.w3xue.com/exp/article/20194/31588.html
https://blog.csdn.net/andylanzhiyong/article/details/81746904
https://blog.csdn.net/qq_29473063/article/details/80621115
https://blog.csdn.net/sinat_20265495/article/details/77763244
第1步:下载文件
1.1下载最新的CPPAN版本。解压缩后,将cppan.exe所在的路径添加到系统变量中;
https://cppan.org/client/cppan-master-Windows-client.zip
1.2下载cmake,本文用的是cmake-3.10.1-win64-x64,将cmake.exe所在的路径添加到系统变量中;
https://cmake.org/download/
1.3下载Tesseract源码,
https://github.com/tesseract-ocr/tesseract
第2步:执行文件
2.1首先将将cppan.exe放到Tesseract源码的文件中;
2.2 在命令行中进入到tesseract-master的解压目录下,本文路径为我自己解压E:\tesseract-master这里根据自己情况而定(记住你的路径和我的区别,后面出现这条路径根据自己配置的而改变),依次执行如下命令:

Cppan //这一步下载过程很慢,耐心等待。
mkdir build
cd build
cmake … -G “Visual Studio 15 2017 Win64” //这行对应vs2017 64位,根据自己安装的vs版本而变。
第3步:VS2017编译工程(以管理员身份运行VS)
build目录下会生成tesseract.sln,电脑会自己生产。
3.1打开sln,解决方案点开“CPPAN TARGETS”->“cppan-d-b-d”,右键->“生成”。
这一步可能出现大量错误,大部分都是字符编码的问题。
双击错误,打开”文件选项" 下的"高级保存选项",这里VS2017可能隐藏了高级,
可进行如下操作:
(1)单击“工具”|“自定义”命令,弹出“自定义”对话框。
(2)单击“命令”标签,进入“命令”选项卡。
(3)在“菜单栏”下拉列表中,选择“文件”选项。
(4)单击“添加命令”按钮,弹出“添加命令”对话框。
(5)在“类别”列表中,选择“文件”选项;在“命令”列表中,选择“高级保存选项”选项。
(6)单击“确定”按钮,关闭“添加命令”对话框。
(7)选中“控件”列表中的“高级保存选项”选项,单击“上移”或者“下移”按钮,调整该命令的位置。
(8)单击“关闭”按钮,完成“高级保存选项”命令的添加操作。

双击第一条错误,点击高级保存选项,选择 简体中文(GB2312),保存后再“生成"即可。

每次双击第一条错误重复如上操作,重复大约6次,可消除所有错误。

3.2“ALL_BUILD”右键->生成
3.3编译完成后,在“解决方案资源管理器”中点选“解决方案 tesseract”–>“CMakeTargets”–>“INSTALL”,单击右键,
Debug和release模式下需要分别执行上述步骤

第4步:环境配置
在 vs2017 上编译完成后,可以在 C 盘下发现一个 tesseract 安装文件夹,我的是在 C:\Program Files\tesseract(这里的目录是vs编译后生成的可能根据系统位数不同而不同,64位电脑应该都是我这样,所以一定要管理员模式启动vs)。可以在 /bin 目录下找到 tesseract.exe 文件,将 C:\Program Files\tesseract\bin 添加到环境变量 path 中去(如何在 win10 上添加环境变量就不详细说明了,网上有许多教程)。

此外,在 bin 目录下新建两个文件夹 Debug 和 Release,需要自己新建,分别将 E:\tesseract-master\build\bin\Debug 和 E:\tesseract-master\build\bin\Release (这根据自己解压tesseract位置找到就行,注意是bin目录下)目录下的 .dll 文件复制到所新建的两个文件夹下去;然后将 C:\Program Files\tesseract\bin\Debug 和 C:\Program Files\tesseract\bin\Release 也添加到环境变量 path 中去。

此外,新建一个系统变量TESSDATA_PREFIX,变量值为E:\tesseract-master\tessdata,这个目录下存放的是 tesseract-ocr 语言包文件,可以在 GitHub 上下载,下载后放到该目录下去即可,下载地址为:https://github.com/tesseract-ocr/tessdata/

配置好这两步后,应该就可以在命令行使用 tesseract 命令了,可以简单测试一下 tesseract -v是否安装成功,如下:

第5步:VS2017调用及其配置
类似配置opencv
5.1在 VC++ 目录中:
选择包含目录,编辑,分别添加这三个目录:
C:\Program Files\tesseract\include
C:\Program Files\tesseract\include\tesseract
C:\Program Files\tesseract\include\leptonica
这里有个问题是,你在 C:\Program Files\tesseract\include 下可能并找不到 leptonica 这个目录,在 C:\Program Files\tesseract\include 下新建文件夹 leptonica,然后将 C:\Users\lenovo.cppan\storage\src\8f\a3\90d7\src (这是第2步中执行Cppan时自动生成的,不同电脑具体的目录可能会不同,不过都在 C:\Users\lenovo.cppan\storage\src\ 下,注意users\lenovo可能和你的电脑不一样,可能是中文 用户\你的用户名.appan\src…)目录下的文件全部复制到 C:\Program Files\tesseract\include\leptonica 下即可

5.2在 VC++ 目录中,选择 库目录,编辑,分别添加这三个目录:
C:\Program Files\tesseract\lib
C:\Program Files\tesseract\lib\Release
C:\Program Files\tesseract\lib\Debug
同样的,先在 C:\Program Files\tesseract\lib(vs编译生成的目录) 目录下新建两个文件夹 Debug 和 Release(需要自己新建),然后将 C:\Users\lenovo.cppan\storage\lib\ab45fb78\Debug(这也是执行Cppan时自动生成的) 目录下的 .lib 文件全部复制到 C:\Program Files\tesseract\lib\Debug 目录下;将 C:\Users\lenovo.cppan\storage\lib\ab45fb78\Release 目录下的 .lib 文件全部复制到 C:\Program Files\tesseract\lib\Release 目录下。
5.3链接器 -> 输入 -> 附加依赖项 中,编辑,添加以下两项:
tesseract50d.lib
pvt.cppan.demo.danbloomberg.leptonica-1.76.0.lib
根据下载的文件后缀数字可能不一样,在C:\Program Files\tesseract\bin这个目录下查看:

tesseract50d.Lib在后面部分可以看到。使用release 加上tesseract50.lib并放在tesseract50d.lib前面即可

完成后,重启vs如果出现找不到上面两个lib的错误,重启一下电脑,应该就可以在 vs2017 上使用 tesseract 了。

第6步:实例
#include <opencv2/opencv.hpp>
#include <tesseract/baseapi.h>
#include <leptonica/allheaders.h>
#include

using namespace std;
using namespace cv;
PIX* cvtMat2PIX(Mat imgGray);
int main(int argc, char *argv[])
{
Mat sourceImage = imread(“5.jpg”, cv::IMREAD_GRAYSCALE);
if (sourceImage.empty()) {
perror(“Failed to load image!\n”);
exit(EXIT_FAILURE);
}
//Mat binImage;
//threshold(sourceImage, binImage, 90, 255, cv::THRESH_BINARY);
PIX pixImage = cvtMat2PIX(sourceImage); // 将图片由 Mat 转换成 Pix 格式
// 使用 tesseract 进行数字识别
const char
lang = “eng”;
string numText;
tesseract::TessBaseAPI tess = new tesseract::TessBaseAPI; // 新建 tesseract 基类
tess->Init(NULL, lang, tesseract::OEM_LSTM_ONLY); // 初始化,可以选择不同识别模式
tess->SetPageSegMode(tesseract::PSM_SINGLE_BLOCK); // 针对不同文本类型选择不同
tess->SetImage(pixImage);
numText = string(tess->GetUTF8Text());
cout << numText << endl;
system(“pause”);
waitKey(0);
}
PIX
cvtMat2PIX(Mat imgGray)
{
int cols = imgGray.cols;
int rows = imgGray.rows;
PIX *pixS = pixCreate(cols, rows, 8);
for (int i = 0; i < rows; i++)
for (int j = 0; j < cols; j++)
pixSetPixel(pixS, j, i, (l_uint32)imgGray.at(i, j));
return pixS;
}
最后跑代码可能出现错误,双击错误如果显示的是endianness找不到,将文件endianness.h保存C:\Program Files\tesseract\include\leptonica
文件endianness.h类容在
https://download.csdn.net/download/qq_42591424/11188346

6.1其中tess->Init(NULL, lang, tesseract::OEM_LSTM_ONLY);
可以选择:
enum OcrEngineMode {
OEM_TESSERACT_ONLY, // Run Tesseract only - fastest; deprecated
OEM_LSTM_ONLY, // Run just the LSTM line recognizer.本文代码采用此种模式
OEM_TESSERACT_LSTM_COMBINED, // Run the LSTM recognizer, but allow fallback
// to Tesseract when things get difficult.
// deprecated
OEM_DEFAULT, // Specify this mode when calling init_*(),
// to indicate that any of the above modes
// should be automatically inferred from the
// variables in the language-specific config,
// command-line configs, or if not specified
// in any of the above should be set to the
// default OEM_TESSERACT_ONLY.
OEM_COUNT // Number of OEMs
};

6.2其中tess->SetPageSegMode(tesseract::PSM_SINGLE_BLOCK);
可选择:不同格式文件采取不同选择,
enum PageSegMode {
PSM_OSD_ONLY = 0, ///< Orientation and script detection only.
PSM_AUTO_OSD = 1, ///< Automatic page segmentation with orientation and
///< script detection. (OSD)
PSM_AUTO_ONLY = 2, ///< Automatic page segmentation, but no OSD, or OCR.
PSM_AUTO = 3, ///< Fully automatic page segmentation, but no OSD.
PSM_SINGLE_COLUMN = 4, ///< Assume a single column of text of variable sizes.
PSM_SINGLE_BLOCK_VERT_TEXT = 5, ///< Assume a single uniform block of vertically
///< aligned text.
PSM_SINGLE_BLOCK = 6, ///< Assume a single uniform block of text. (Default.)
PSM_SINGLE_LINE = 7, ///< Treat the image as a single text line.
PSM_SINGLE_WORD = 8, ///< Treat the image as a single word.
PSM_CIRCLE_WORD = 9, ///< Treat the image as a single word in a circle.
PSM_SINGLE_CHAR = 10, ///< Treat the image as a single character.
PSM_SPARSE_TEXT = 11, ///< Find as much text as possible in no particular order.
PSM_SPARSE_TEXT_OSD = 12, ///< Sparse text with orientation and script det.
PSM_RAW_LINE = 13, ///< Treat the image as a single text line, bypassing
///< hacks that are Tesseract-specific.

PSM_COUNT ///< Number of enum entries.
};
上面描述中,有针对单行文本格式,文字大小不一等等。

针对上图文本类型PageSegMode 选择第6中效果较好

如果不想下载编译可以直接下载我已经编译好的包
https://download.csdn.net/download/qq_42591424/11266380

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
配置Tesseract OCR环境,您可以按照以下步骤进行操作: 1. 安装Tesseract OCR:根据您的操作系统,您可以从Tesseract OCR官方网站(https://github.com/tesseract-ocr/tesseract)下载并安装适合您系统的Tesseract OCR版本。也可以使用包管理器(如apt、brew或choco)来安装Tesseract OCR。 2. 安装语言数据包:Tesseract OCR需要语言数据包来识别特定语言的文本。您可以从Tesseract OCR官方网站上下载您需要的语言数据包。将其下载并解压缩到您的计算机上的任意目录。 3. 设置环境变量:将Tesseract OCR的安装路径和语言数据包的路径添加到系统环境变量中。这样,您就可以从任意位置访问Tesseract OCR。 4. 安装Tesseract库:如果您是在Python环境下使用Tesseract OCR,可以使用以下命令安装Tesseract库: ``` pip install pytesseract ``` 这将为您提供一个Python接口,方便您在Python中使用Tesseract OCR。 5. 使用Tesseract OCR:现在您已经配置好了Tesseract OCR环境,您可以在您的代码中使用Tesseract OCR进行光学字符识别。例如,在Python中,您可以使用pytesseract库来调用Tesseract OCR的功能。 ```python import pytesseract from PIL import Image # 打开图像文件 image = Image.open('image.jpg') # 使用Tesseract OCR进行识别 text = pytesseract.image_to_string(image) # 输出识别结果 print(text) ``` 这是一个简单的示例,您可以根据需要进行更多的自定义和配置。 希望这些步骤对您有所帮助!如果需要进一步的帮助,请随时提问。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值