您的位置:首页 > 其它

xcode+tesseract 搭建一个简单的图像文字识别程序

2017-09-08 17:54 495 查看

获取tesseract

作为开源项目,tesseract的官方资源可以从GitHub上面得到。阅读readme文件可以解决大部分初步使用者的疑问。

tesseract在GitHub上的链接:https://github.com/tesseract-ocr/tesseract

使用homebrew安装tesseract:

brew install tesseract


安装好后,在终端输入tesseract会出现帮助文档。

查看装好的语言库:

tesseract --list-langs


可以看见只有英语(eng),于是我又装了简体中文(chi_sim)。在https://github.com/tesseract-ocr/tessdata中下载chi_sim.traineddate,放在tesseract的目录(/usr/local/Cellar/tesseract/3.05.01/share/tessdata)下。

现在来测试一下,使用本页的截图:



在终端输入命令:

tesseract 获取tesseract.png out -l eng+chi_sim


得到的结果:



好像也并没有特别准 -_-!

在Xcode中配置

说实话是第一次用Xcode,于是浪费了很多时间在熟悉ide上面,不过最终还是纯野生地搞定了。

tesseract自带对C/C++的API,于是第一个程序我就选择了用C++写。官方的使用手册在http://tesseract-ocr.github.io

发现了比较简单的添加lib文件的办法。首先将lib直接拖拽到project的framework中:



这里调用的是/usr/local/Cellar/tesseract/3.05.01/lib/libtesseract.dylib。这时候库文件的路径已经自动导入了,还需要再添加一个头文件的搜索路径。在header search paths里面添加一项/usr/local/Cellar/tesseract/3.05.01/include/tesseract/:



第一个程序使用了别人的代码。参考这个网页:http://www.cnblogs.com/cappuccino/p/4650665.html,原博应该是转载的谷歌本身提供的代码样例,但是很遗憾在原博提供的地址上我没有找到所转原文。下面是我使用的代码和运行结果:

#include <iostream>
#include <baseapi.h>
#include <allheaders.h>

int main()
{
char *outText;

tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI();
// Initialize tesseract-ocr with English, without specifying tessdata path
if (api->Init(NULL, "eng+chi_sim")) {
fprintf(stderr, "Could not initialize tesseract.\n");
exit(1);
}

// Open input image with leptonica library
Pix *image = pixRead("/Users/mac/Desktop/获取tesseract.png");
api->SetImage(image);
// Get OCR result
outText = api->GetUTF8Text();
printf("OCR output:\n%s", outText);

// Destroy used object and release memory
api->End();
delete [] outText;
pixDestroy(&image);

return 0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: