最近研究百度指数的采集,需要用到ocr,在网上找了很多材料,发现tesseract比较容易上手,而且可以自己训练,最重要的是,可以通过tess4j实现Java的JNA调用,如此一来,不但性能有保障,而且还可以跨平台。于是就在我的Windows机器上面创建了工程,参考着百度指数采集这篇博文的思路,写了代码,自己训练了数据样本,实现了百度指数的采集,感觉很开心。于是就想往Linux上面部署试试。结果遇到了问题。
首先,tess4j默认带有win32-x86-64 和win32-86 两个文件夹分别存放着64位和32位动态链接库,但是唯独没有Linux的动态链接库。于是我习惯性地从网上找相关材料,找了很久,只找到tess4j linux需要的so文件 - 下载频道 - CSDN.NET,以及
也安装了Tesseract环境,却出现了glibc版本不兼容,缺少libjpg.so这样的错误。我尝试一一解决这些问题(包括安装各种依赖包、安装和升级gcc、glibc),但是坑越挖越大,最后,发现这篇博文
1、安装GCC开发环境,从而支持后续程序的编译安装:
yum groupinstall "Development Tools"
2、安装tesseract所需的依赖库
yum -y install libjpeg* libpng* freetype* gd* giflib* libtiff* zlib*
3、安装tesseract和leptonica
注意: 安装完成后,将/usr/local/lib/ 目录下的so文件拷贝到 /usr/lib64/
cp /usr/local/lib/*.so.* /usr/lib64/
4、测试和验证
通过上述3步,就完成了tesseract所需的环境配置,你的tess4j相关的应用,就可以在本Linux系统上面溜溜的运行了。
百度指数的原始图片数据,百度对数据做了打乱和混淆处理:
百度指数经过拼接后还原的图片数据(其中图片文件名即为tess4j识别的结果):
完美!
非常感谢上述博主的无私分享,也希望转载本文时注明出处!