Mac/Linux下Tesseract-OCR 的安装与使用

      这几天为了做一个网站爬虫,涉及到图形验证码的识别,图像这块之前不熟悉,也没时间去琢磨,所以最终选择了开源项目Tesseract-OCR来实现,但是网上大多是windows版本的,当我应用到mac和linux服务器上时遇到了很多坑,寻思可能很多小伙伴也会遇到此类问题,下面就来总结下,也方便自己今后查阅:

废话不多说,先上码:

依赖jar包(我这里用的gradle构建的,maven类似):

compile 'net.java.dev.jna:jna:4.5.0'

compile ('net.sourceforge.tess4j:tess4j:3.4.1'){

    exclude group: 'com.sun.jna', module:'jna'//据说jdk自带的jna包不兼容,所以这里需要exclude掉 

}

import java.io.File;
import net.sourceforge.tess4j.Tesseract;

import net.sourceforge.tess4j.TesseractException;

public class ReadImg {
    public static void main(String args[]){
        File dir = new File("/Users/xx/Desktop/test/img/");  
        File[] files = dir.listFiles();  
        for (File imageFile : files) {  
            Tesseract tessreact = new Tesseract();
            tessreact.setDatapath("/Users/xx/Desktop/test/tessdata");  //语言包文件路径
            try {  
                String result = tessreact.doOCR(imageFile);  
                System.out.println(imageFile.getName()+":"+result);  
            } catch (TesseractException e) {  
                System.err.println(e.getMessage());  
            }  
        }
    }

}

一切看上去都这么简单,运行一下=>各种内裤找不到,于是baidu、google,一顿找之后发现本地需要安装tessreact,

吐槽一下:TMD既然提供了jar包,为什么不把依赖的lib等等都集成进去,非得单独安装。

说安装我们就来安装

==========MAC下安装tessreact===================

mac要比win费劲一些,毕竟网上大都是些windows的贴,找了很多网站,stackoverflow等等都翻了一遍,

最后聚焦到三个单词:brew install tesseract ;

如果找不到brew命令 ,自行百度谷歌安装brew,这里就不细说了,这个命令类似Linux的yum,apt-get,也是一方神器,我之前没用过,安装还费了些劲,就提一点吧,如果brew update很长时间没反应,可能是被great wall挡了,你需要梯子

安装之前还有一点需要注意,mac下brew安装默认会到/usr/local目录下,但是这个目录是root才能访问,切换到root,然后chown -R xx(你的用户名)/usr/local/ ,修改/usr/local的归属,如果改不成功,提升没权限,那是因为mac做了防护机制,你需要重启电脑然后按着Command+R,在修复界面,调出终端,然后在命令行输入csrutil disable ,关闭防护机制,然后再执行即可;

安装完成之后:tesseract --version 查看下,会显示如下信息:

tesseract 3.05.01

 leptonica-1.75.3

libjpeg 9c : libpng 1.6.34 : libtiff 4.0.9 : zlib 1.2.11

说明安装成功!

接下来找到你本地的tessdata目录,brew方式默认安装到/usr/local/share/tessdata目录,可以自己copy出来自定义目录,比如我放在/Users/xx/Desktop/test/tessdata,对应设置tessreact.setDatapath("/Users/xx/Desktop/test/tessdata")即可,最后需要下载识别的语言包,地址:https://github.com/tesseract-ocr/tessdata 

这里根据自己的需要下载相应的语言包,比如下载eng.traineddata,然后把eng.traineddata放到tessdata目录里面,至此main方法跑起来,成功!

注:数字和英文组合的验证码就用eng.traineddata/enm.traineddata,git上提供的语言包不是很准,有个别数字字母出不来的可以自己去训练自己的语言文件,这里我暂时没有进一步尝试了,自行百度吧。

==========LINUX下安装tessreact===================

有了MAC的安装经历,linux还不是分分钟的事。。

源码安装走一波:

1、依赖工具

    yum install autoconf automake libtool 

    yum install libjpeg-devel libpng-devel libtiff-devel zlib-devel

2、leptonica-1.72

    wget http://www.leptonica.com/source/leptonica-1.72.tar.gz

    tar xzvf leptonica-1.72.tar.gz

    cd leptonica-1.72

    ./configure 

make && make install

3、tesseract-ocr 3.04

    wget https://github.com/tesseract-ocr/tesseract/archive/3.04.00.tar.gz

    tar xzvf 3.04.00.tar.gz

    cd tesseract-3.04

    ./configure 

    make && make install

安装完成之后,剩下的内容和mac基本一样,参照mac配置即可。

可能遇到的问题:我的是centos64位的系统,运行时报错提示

java.lang.UnsatisfiedLinkError: Unable to load library 'tesseract': Native library (linux-x86-64/libtesseract.so) not found in resource path ....

这个问题困扰了很久,最后

cp -r /usr/local/lib/ /usr/lib64 解决,猜想是jvm默认读取的系统类库路径不一样吧。


  





















你可能感兴趣的:(Mac/Linux下Tesseract-OCR 的安装与使用)