欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Tesseract4配置与示例

程序员文章站 2023-12-27 10:21:57
...

接上一篇博客:Tesseract4编译,

原文链接:https://blog.csdn.net/andylanzhiyong/article/details/81746904

       上次编译Tesseract4.0后,在“C:/Programe Files(x86)/tesseract/”目录下生成了目录”include”,”lib”,”bin”,这些就是我们编程需要的头文件和库。没配置之前,感觉挺简单的,无非是一些头文件和库,和opencv配置差不多的。其实一大波坑在等着我…….

        先在网上搜一下别人的配置,大多是直接用的Tesseract4.0安装文件,感觉不适用,看了很多篇文章,貌似找到了一篇靠谱的,原文链接:http://livezingy.com/compilation-tesseract4-in-vs2017-win10/

重点在此,如图:

Tesseract4配置与示例

前面2步整理lib时没问题。

dll感觉不需要那么多,后面再说

在整理头文件时麻烦来了,按照这个目录结构一层层去找,竟然没有“2a”文件夹………..

难道我的编译有问题?应该不会啊,cmake成功,VS里也编译成功,没道理啊……

机智如我,我在”C:\Users\username\.cppan\storage\obj”目录下用windows查找功能搜索”endianness.h”,找到了。

然后在“C:\Users\username\.cppan\storage\src”目录下搜索“src”,悲剧了,找到的还是这个父目录

不知道leptonica的头文件是啥这可咋办?

难道真的是我没编译好?

迫于无奈,又重新编译了一遍,花了好几个小时,再找头文件,还是没找到…….

没辙了,看看别人编译好的头文件和库是哪些吧,又是一顿网络搜索,找到了一篇似乎靠谱的博客:

https://blog.csdn.net/yph001/article/details/78762518

按照这位老铁提供的网址下载了他的头文件和库,他的文件结构如下:

Tesseract4配置与示例

Tesseract4配置与示例

仿佛看到了希望,马上去“C:\Users\username\.cppan\storage\src”下搜索“allheaders.h”

惊喜的是:搜到了!这家伙躲在这个目录下:

Tesseract4配置与示例

然后把这个“src”整个目录拷过来,

还有个config_auto.h这个头文件,直接在“users/用户名/.cppan/”目录下搜“config_auto.h”,

也搜到了,这家伙躲在此处:

Tesseract4配置与示例

把config_auto.h也copy过来。

做到这里,想想也是够坑的,应该是cppan版本不同,然后下载这些文件后解压路径不一样,我们按前辈提供的

路径去找头文件肯定是找不到了。各位前辈说一下主要头文件是什么不就好了嘛。吐血。。。。

OCR识别文字还得有字库,下载链接:https://github.com/tesseract-ocr/tessdata,如图:

Tesseract4配置与示例

我下载了英文和中文简体,建个”tessdata”文件夹存放字库

给大家展示一下我整理的文件结构:(目前不知道动态库是哪些,在运行程序时再找)

Tesseract4配置与示例

头文件结构如下:

Tesseract4配置与示例

leptonica头文件很多,列一部分,注意两个重要头文件(画箭头的):

Tesseract4配置与示例

Tesseract4配置与示例

tesseract头文件也有很多,也列一部分,注意有个重要文件“capi.h”:

Tesseract4配置与示例

lib库全部copy过来:

Tesseract4配置与示例

字库在下载源码的时候可以看到,按需下载后放到新建文件夹”tessdata”下:

Tesseract4配置与示例

找的官网示例代码不能运行,编译一百多个错误,错误原因只有一个:没包含“windows.h”头文件。吐血。。。

福利来了,现贴出我将示例代码略作修改后的代码(代码中路径均为相对路径,没用环境变量):

  1. #include<iostream>
  2. #include <stdio.h>
  3. #include<windows.h>
  4. #include “leptonica/allheaders.h”
  5. #include “tesseract/capi.h”
  6. using namespace std;
  7. void die(const char *errstr) {
  8. fputs(errstr, stderr);
  9. exit(1);
  10. }
  11. void ConvertUtf8ToGBK(char **amp, char *strUtf8) //转码
  12. {
  13. int len = MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)strUtf8, -1, NULL, 0);
  14. unsigned short * wszGBK = new unsigned short[len + 1];
  15. memset(wszGBK, 0, len * 2 + 2);
  16. MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)strUtf8, -1, (LPWSTR)wszGBK, len);
  17. len = WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)wszGBK, -1, NULL, 0, NULL, NULL);
  18. //char *szGBK=new char[len + 1];
  19. *amp = new char[len + 1];
  20. memset(*amp, 0, len + 1);
  21. WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)wszGBK, -1, *amp, len, NULL, NULL);
  22. }
  23. int main(int argc, char *argv[]) {
  24. TessBaseAPI *handle;
  25. PIX *img;
  26. char *text = NULL;
  27. //读取图片,原图像的路径
  28. if ((img = pixRead(“test.jpg”)) == NULL)
  29. die(“Error reading image\n”);
  30. handle = TessBaseAPICreate();
  31. //加载字库及设置语言
  32. if (TessBaseAPIInit3(handle,“../tessdata”, “eng+chi_sim”) != 0)
  33. die(“Error initialising tesseract\n”);
  34. //设置图片及识别
  35. TessBaseAPISetImage2(handle, img);
  36. if (TessBaseAPIRecognize(handle, NULL) != 0)
  37. die(“Error in Tesseract recognition\n”);
  38. if ((text = TessBaseAPIGetUTF8Text(handle)) == NULL)
  39. die(“Error getting text\n”);
  40. char *pResult = NULL;
  41. ConvertUtf8ToGBK(&pResult, text); //对结果转码
  42. cout << pResult << endl; //输出OCR识别的文本信息
  43. delete pResult;
  44. system(“pause”);
  45. TessDeleteText(text);
  46. TessBaseAPIEnd(handle);
  47. TessBaseAPIDelete(handle);
  48. pixDestroy(&img);
  49. return 0;
  50. }

头文件和lib库配置不用说了,和opencv配置差不多

按需为字库设置环境变量TESSDATA_PREFIX(本示例用的相对路径未用环境变量),值为字库文件的目录。

本示例工程 Tess4Test 文件结构如下:(tessdata为字库文件)

Tesseract4配置与示例

项目配置如下:

Tesseract4配置与示例

Tesseract4配置与示例

此时由于还不知道有哪些动态库,编译运行后会有错误,如图:

Tesseract4配置与示例

根据这些错误提示去搜相应的dll文件,

tesseract40(d).dll在“C:\Program Files (x86)\tesseract\bin”目录下搜索到

其它的dll在“C:\Users\用户名\.cppan\storage\bin”目录下搜索到

一共9个dll放到Debug/Release文件夹下(或者系统目录):

Tesseract4配置与示例

上一张测试图片:

Tesseract4配置与示例

运行后输出结果:

Tesseract4配置与示例

这张中、英文、数字混合的图片识别率在90%以上,还算可以了

到此,配置成功!

如需本示例程序,请至https://download.csdn.net/download/andylanzhiyong/10616943下载。

下载后无需配置任何环境变量,头文件、库、字库都已打包好,只要你电脑装有VS2015就可以正常编译、调试、运行。

*****************  以上为个人吐血整理,堪称全网最详细!如有转载,请标明出处! *******************

 

另外,目前在网络上搜索Tesseract4的学习资料基本没有,看它的源码头文件中的函数声明,

这几百个函数连个注释都没有,这将又是一个大坑,探索之旅还很漫长。。。。

Tesseract4配置与示例

 

网友如有Tesseract4的学习资料,还望能发个链接一起互相学习。

 

 

 

 

            </div>
相关标签: Tesseract OCR

上一篇:

下一篇: