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

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

程序员文章站 2022-05-29 16:25:09
...

以下示例来自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
Linux下安装tesseract-ocr和以命令行和c++代码的使用方法

和test1.png
Linux下安装tesseract-ocr和以命令行和c++代码的使用方法

(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

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

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

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

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

结果为

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


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

相关标签: 图文识别