起因
之前的文章里说过,在我的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
- 下载对应的Tesseract,执行:
./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/)
网友评论