Linux下安装tesseract-ocr和以命令行和c++代码的使用方法
以下示例来自Ubuntu17.10
(1)安装tesseract
sudo apt-get install tesseract-ocr
(2)如果想用 Tesseract 对图像进行识别,还需要对应的语言文件。所谓的语言文件是 Tesseract 识别某种语言的文字图像时需要的一些资源,这些东西也可以通过包管理器获取。
sudo apt-get install tesseract-ocr-eng tesseract-ocr-chi-sim
这里就下了:eng是英语,chi_sim是中文
(3)安装tesseract-ocr编译必须的包。autoconf 可以帮助你写出款平台编译的程序,而automake则主要是帮你更好的完成跨 平台编译这件事情。编译需要用到各种编译器命令,因为不想手动的执行这些命名出现了 Makefile,又因为不想手动的编写Makefile出现了automake这类的工具,它让你可以 只提供源文件的名称便替你生成 Makefile,这也着实省下不少的麻烦。
程序库的发展过程中首先出现的是静态库,实际上只是.o的打包而已。后来出现了更高级 的动态库,可惜的是和之前一样,这些动态库在不同的系统上实现是不一样的,为了能够跨 平台的生成这些程序库,也就有了libtool这类的工具。
sudo apt-get install autoconf automake libtool
(4)安装libleptonica
您还需要安装Leptonica。确保在编译Tesseract之前安装了Leptonica的开发头文件
sudo apt-get install libleptonica-dev
安装过程就告一段落了
下面介绍一下怎么使用
现在我的home下有两张图test.png
和test1.png
(1)命令行模式
lzj:~$ tesseract test.png out -l chi_sim
识别test.png 结果保存到out.txt文件
(2)c++代码
#include <tesseract/baseapi.h>
#include <leptonica/allheaders.h>
int main()
{
char *outText;
tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI();
//使用中文初始化tesseract-ocr,而不指定tessdata路径。
if (api->Init(NULL, "chi_sim"/*"eng"*/)) {
fprintf(stderr, "Could not initialize tesseract.\n");
exit(1);
}
// 使用leptonica库打开输入图像。
Pix* image = pixRead("test.png");
api->SetImage(image);
// 得到光学字符识别结果
outText = api->GetUTF8Text();
printf("OCR output:\n%s", outText);
// 销毁使用过的对象并释放内存。
api->End();
delete [] outText;
pixDestroy(&image);
return 0;
}
编译
g++ 1.cpp -llept -ltesseract
结果如下(命令行方式结果相同)
再贴一个英文的,图片如下
结果为
我们可以看到,对英文的识别是优于中文的(中文这种象形文太复杂了…)
等我学完了如何提高识别度再回来总结一波
上一篇: 这些学生,真是太有才了,太幽默了
下一篇: 我的宿是个很迷糊的MM
推荐阅读