在C++中使用tesseract4.0

在上一章中我们从源码生成了tesseract4.0的执行程序exe以及所有的动态库依赖,这个exe程序其实就和你在网上下载的tesseract安装包是一样的,只不过自己编译的执行程序可以在vs2015环境中运行。
我们把E:\tesseract-4.0.0\build_x86\bin\Release这个目录添加到环境变量里去,这个目录是tesseract.exe所在的目录。
在这里插入图片描述
将tesseract.exe所在目录添加到环境变量path里
在这里插入图片描述
tesseract4.0的语言库tessdata也需要添加到环境变量里,如下为语言库

在这里插入图片描述
在系统环境变量里设置语言库的环境变量
变量名为:TESSDATA_PREFIX
变量值为tessdata目录:E:\tesseract-4.0.0\tessdata
在这里插入图片描述
然后我们可以在控制台测试已经可以成功使用
测试tesseract
在这里插入图片描述
测试语言库tessdata
tesseract --list-langs

在这里插入图片描述
接下来就可以在vs2015中使用tesseract了
.h头文件为
E:\tesseract-4.0.0\build_x86\api
E:\tesseract-4.0.0\src\wordrec
E:\tesseract-4.0.0\src\vs2010
E:\tesseract-4.0.0\src\viewer
E:\tesseract-4.0.0\src\training
E:\tesseract-4.0.0\src\textord
E:\tesseract-4.0.0\src\opencl
E:\tesseract-4.0.0\src\lstm
E:\tesseract-4.0.0\src\cutil
E:\tesseract-4.0.0\src\classify
E:\tesseract-4.0.0\src\ccutil
E:\tesseract-4.0.0\src\ccstruct
E:\tesseract-4.0.0\src\ccmain
E:\tesseract-4.0.0\src\arch
E:\tesseract-4.0.0\src\api
lib文件为:tesseract40.lib

在这里插入图片描述
动态库dll由于已经添加到环境变量里,所以不用管。
一下为使用实例:

#include<iostream>
#include<string.h>
#include<baseapi.h>
#include <codecvt>
#include<opencv2/opencv.hpp>
#include<fstream>
using namespace std;
using namespace cv;

std::wstring to_wchar_t(std::string str);
std::string to_utf8(std::wstring wstr);

int main()
{
	string outText;
	string imgPath = "3.jpg";
	//定义tesseract
	tesseract::TessBaseAPI *ocr = new tesseract::TessBaseAPI();

	//把tessdata拷贝到exe的所在目录,或者设置TESSDATA_PREFIX环境变量
	ocr->Init("./tessdata", "chi_sim+eng+chi_sim_vert", tesseract::OEM_DEFAULT);
	ocr->SetPageSegMode(tesseract::PSM_AUTO);

	//使用OpenCV读取图片
	Mat image = imread(imgPath,1);

	//使用OCR识别图片
	ocr->SetImage(image.data, image.cols, image.rows, 3, image.step);

	//ocr获取的数据直接就是utf8格式的,存入文本文件也是utf8格式
	char* u8_array = ocr->GetUTF8Text();
	string u8_str= u8_array;
	ocr->End();

	//utf8转Unicode
	std::wstring w_str = to_wchar_t(u8_str);
	//unicode转ANSI
	std::wstring_convert<codecvt<wchar_t, char, mbstate_t>> converter(new codecvt<wchar_t, char, mbstate_t>("CHS"));
	string ansi_str = converter.to_bytes(w_str);

	cout << ansi_str << endl;


	system("pause");
	return 0;
}

std::wstring to_wchar_t(std::string str)
{
	return std::wstring_convert< std::codecvt_utf8<wchar_t>, wchar_t >{}.from_bytes(str);
}

std::string to_utf8(std::wstring wstr)
{
	return std::wstring_convert< std::codecvt_utf8<wchar_t>, wchar_t >{}.to_bytes(wstr);
}

下图为程序执行结果,可以看出,识别率非常高。其实tesseract要想提高识别率,应该从图片源头做起,利用OpenCV处理下图片,识别率可以接近百分百。
在这里插入图片描述

Tesseract 4.0 是一个开源的OCR(Optical Character Recognition)引擎,用于从图像或扫描的文档识别和提取文字信息。Tesseract最初是由惠普实验室开发的,后来由Google维护和开源。Tesseract 4.0Tesseract的最新版本,带来了一些重要的改进和新功能。 Tesseract 4.0引入了一个新的神经网络架构,称为LSTM(Long Short-Term Memory)。这种架构在OCR任务表现出色,提高了精度和准确性,尤其是对于复杂的字体和布局。与之前的版本相比,Tesseract 4.0能够更好地识别不同大小、字体和方向的文本。 除了LSTM,Tesseract 4.0还引入了一些其他改进。它可以处理多种语言,并且支持超过100种语言的OCR识别。这使得Tesseract成为全球范围内使用最广泛的OCR引擎之一。同时,Tesseract 4.0还增强了对图像预处理和文本后处理的支持,以提高识别的准确性和可正确解释的识别结果。 Tesseract 4.0还提供了一组API,以便开发人员可以集成Tesseract OCR引擎到他们的应用程序。这些API可以在各种编程语言使用,包括Python、Java和C++,使得开发OCR应用程序变得更加快捷和方便。 总的来说,Tesseract 4.0是一个功能强大、高度准确、可扩展和易于使用的OCR引擎。它在处理复杂文本布局和多语言识别方面表现出色,适用于各种OCR应用领域,包括扫描文档的数字化、图像识别和文本提取等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Keras深度学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值