[原]Linux下安装tesseract-ocr和以命令行和c++代码的使用方法

吕子健 18/05/27 17:07:14

以下示例来自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

结果如下(命令行方式结果相同)

这里写图片描述

再贴一个英文的,图片如下

这里写图片描述

结果为

这里写图片描述


我们可以看到,对英文的识别是优于中文的(中文这种象形文太复杂了…)
等我学完了如何提高识别度再回来总结一波

作者:weixin_36888577 发表于 2018/05/27 17:07:14 原文链接 https://blog.csdn.net/weixin_36888577/article/details/80470722
阅读:200