美文网首页
CentOS安装Tesseract,通过Java程序进行图像识别

CentOS安装Tesseract,通过Java程序进行图像识别

作者: 兔贩子 | 来源:发表于2017-04-02 18:23 被阅读0次

    起因

    之前的文章里说过,在我的Java项目里需要用到Tesseract来进行图像识别,在Mac中只需要通过brew命令即可安装,然而到服务器上就需要下载源码进行编译了。
    还有一个问题是在本地的Java项目中使用了Tess4J来进行Java对Tesseract命令的调用可以很方便进行图像识别,然而在服务器上却出现了“tesseract”等找不到的问题。各种奇葩问题我就不说了,最后的解决方案是弃用Tess4J,改为直接在Java代码中拼接命令执行,相当于模拟在命令行中执行图像识别。

    安装

    • 安装gcc、gcc-c++、make,如果有就不需要安装:
      yum install gcc gcc-c++ make
    • 安装编译相关工具,没有的话编译时候可能报错:
      yum install autoconf automake libtool
    • 安装对图片识别相关支持工具,没有这些在后续执行Tesseract命令时会报错,可以尝试一下:
      yum install libjpeg-devel libpng-devel libtiff-devel zlib-devel
    • 安装leptonica,首先去leptonica下载,下载后放到服务器解压并编译,leptonica是一个tesseract必须的工具:
    #到leptonica的目录执行
    ./configure
    make
    make install
    
    ./autogen.sh
    ./configure
    make
    make install
    ldconfig
    
    cp tessdata /usr/local/share -R
    
    • 配置环境变量,否则在执行时会出现找不到语言包的错误:

    vim ~/.bash_profile

    加入一下内容

    tesseract-ocr

    export TESSDATA_PREFIX=/usr/local/share/tessdata

    然后执行

    source ~/.bash_profile

    - 测试
    我们可以执行```tesseract -v``查看tesseract的版本相关信息
    
    ![Paste_Image.png](https://img.haomeiwen.com/i5402364/ce4493e285b5bcd7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    分别是tesseract版本,leptonica版本,以及对图片文件的支持,这里的支持就是上面第三部安装的支持。
    
    我们可以上传一个示例图片到服务器目录进行测试:
    

    cd ~/testocr
    tesseract test.png out -l eng+chi_sim
    cat out.txt

    如果图片中的内容成功输出表示我们相关配置都已经OK,接下来就可以在Java代码中进行操作了。
    
    #Java代码
    因为此前使用Tess4J在服务器上无法成功执行,所以后来切换成直接调用shell命令执行。在此之前确保上面的步骤都能成功执行。
    

    class TesseractCMDServices {
    def doOCR4lin(String ifile, String iconf = "eng+chi_sim") {
    def res = []
    def xcmd = []
    xcmd.add("tesseract")
    xcmd.add(ifile)
    xcmd.add("tmp")
    xcmd.add("-l")
    xcmd.add(iconf)
    def xpb = new ProcessBuilder()
    xpb.command(xcmd)
    xpb.redirectErrorStream(true)
    def xpc = xpb.start()
    def tim = xpc.waitFor()
    if (tim == 0) {
    def xin = new BufferedReader(new FileReader("tmp.txt"))
    def line = xin.readLine()
    while (line != null) {
    if (!line.isEmpty()) res << line
    line = xin.readLine()
    }
    } else {
    res += "sorry, error code is " + tim
    }
    return res
    }
    }

    #总结
    完成这些之后我在Centos上的图像识别部分代码就可以正常执行了,有相关问题的同学可以留言交流。
    
    #####参考资料
    - [CentOS Install Tesseract-OCR](https://alantamproject.wordpress.com/2015/05/12/centos-install-tesseract-ocr/)
    - [CentOs install Tesseract](https://my.oschina.net/ayy/blog/663592)
    - [Tesseract-ocr and tess4j](https://flystarhe.github.io/2016/01/19/tesseract-ocr/)
    
    
    
    
    

    相关文章

      网友评论

          本文标题:CentOS安装Tesseract,通过Java程序进行图像识别

          本文链接:https://www.haomeiwen.com/subject/iyvgottx.html