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

2017-04-02  本文已影响0人  兔贩子

起因

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

安装

#到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/)




上一篇下一篇

猜你喜欢

热点阅读