官方参考资料说明:
  leptonica 依赖库: ( http://www.leptonica.org/source/README.html )
             

                交叉编译 tesseract
                     (以 tesseract 3.01 为例)
 
说明:
  1. 嵌入式环境:mips架构, linux 3.08
  2. 交叉工具链: mips-linux-gnu-
  3.工具链路径: /home/newton_linux/prebuilts/toolchains/mips-gcc472-glibc216/
 
一、依赖库:
  依赖库: (官方有说明:https://github.com/tesseract-ocr/tesseract/wiki/Compiling#linux)
  1. leptonica-1.67
    > 其依赖库: (官方说明:http://www.leptonica.org/source/README.html)
    (1) libz (建议版本zlib_1.2.3, 实测zlib_1.2.8也可)
    (2) libjpeg_9.0 (使tesseract支持jpeg,pbm图片格式)
    (3) 如需支持其他图片格式如tif,需要安装其他库libtiif
 
二、交叉编译 leptonica-1.67
  1. 交叉编译 libjpeg_9.0
    (1)mkdir tmp
    (2)./configure --host=mips-linux-gnu --target=mips-linux-gnu --prefix=$PWD/tmp 
       CC=mips-linux-gnu-gcc CXX=mips-linux-gnu-g++
       CFLAGS=-I/home/newton_linux/prebuilts/toolchains/mips-gcc472-glibc216/include
       LDFLAGS=-L/home/newton_linux/prebuilts/toolchains/mips-gcc472-glibc216/lib
    (3)make -j4
    (4)make install
    (5)把tmp/下的include头文件和库文件lib复制到
        /home/newton_linux/prebuilts/toolchains/mips-gcc472-glibc216/include
        /home/newton_linux/prebuilts/toolchains/mips-gcc472-glibc216/lib
      工具链下
 
  2. mkdir tmp
  3. ./configure --host=mips-linux-gnu --target=mips-linux-gnu --prefix=$PWD/tmp
    CC=mips-linux-gnu-gcc CXX=mips-linux-gnu-g++
    CFLAGS=-I/home/newton_linux/prebuilts/toolchains/mips-gcc472-glibc216/include
    LDFLAGS=-L/home/newton_linux/prebuilts/toolchains/mips-gcc472-glibc216/lib
    --with-jpeg (表示添加jpeg库)
    --includedir=/home/newton_linux/prebuilts/toolchains/mips-gcc472-glibc216/include
    --libdir=/home/newton_linux/prebuilts/toolchains/mips-gcc472-glibc216/lib
 
    其中:
        --includedir= 表示头文件安装目录
        --libdir= 表示库安装目录
    必需配置,否则会找不到库文件,导致编译不通过
 
  4. 链接库环境变量
    export  LD_LIBRARY_PATH=/home/newton_linux/prebuilts/toolchains/mips-gcc472-glibc216
        :/home/newton_linux/prebuilts/toolchains/mips-gcc472-glibc216/lib
 
  5. make -j4
    出现错误:
    /home/newton_linux/prebuilts/toolchains/mips-gcc472-glibc216/bin/../lib/gcc/mips-linux-gnu/4.7.2/../../../../mips-linux-gnu/bin/ld: warning: libz.so.1,     needed by ./.libs/liblept.so, not found (try using -rpath or -rpath-link)
    ./.libs/liblept.so: undefined reference to `inflate'
    ./.libs/liblept.so: undefined reference to `powf'
    ./.libs/liblept.so: undefined reference to `ceil'
    ./.libs/liblept.so: undefined reference to `atan2'
    ./.libs/liblept.so: undefined reference to `expf'
    ./.libs/liblept.so: undefined reference to `deflate'
    ./.libs/liblept.so: undefined reference to `floorf'
    ./.libs/liblept.so: undefined reference to `deflateInit_'
    ./.libs/liblept.so: undefined reference to `sin'
    ./.libs/liblept.so: undefined reference to `inflateEnd'
    ./.libs/liblept.so: undefined reference to `atan'
    ./.libs/liblept.so: undefined reference to `deflateEnd'
    ./.libs/liblept.so: undefined reference to `tan'
    ./.libs/liblept.so: undefined reference to `inflateInit_'
    ./.libs/liblept.so: undefined reference to `cos'
    ./.libs/liblept.so: undefined reference to `log'
    ./.libs/liblept.so: undefined reference to `sqrt'
    collect2: error: ld returned 1 exit status
    
    原因:找不到libz库,缺少math库
    解决:修改 Makefile
        对于当前路径下 src/Makefile 和 Makefile:
      (1) LIBS =
          -> LIBS = -lm
      (2) ZLIB_LIBS =
          -> ZLIB_LIBS = -lz
      (3) LDFLAGS = -L/home/newton_linux/prebuilts/toolchains/mips-gcc472-glibc216/mips-linux-gnu/libc/lib
               -L/home/newton_linux/prebuilts/toolchains/mips-gcc472-glibc216/lib
 
  6. make install
 
  7. 把tmp/下的include头文件和库文件lib复制到
    /home/newton_linux/prebuilts/toolchains/mips-gcc472-glibc216/include
    /home/newton_linux/prebuilts/toolchains/mips-gcc472-glibc216/lib
   工具链下(如已配置 --includedir --libdir, 则make install时已经安装到以上目录)
 
 
三、交叉编译tesseract 3.01
  1. ./autogen.sh
  2. mkdir tmp
  3. ./configure --host=mips-linux-gnu --target=mips-linux-gnu --prefix=$PWD/tmp
    CC=mips-linux-gnu-gcc CXX=mips-linux-gnu-g++
    CFLAGS=-I/home/newton_linux/prebuilts/toolchains/mips-gcc472- glibc216/include
    LDFLAGS=-L/home/newton_linux/prebuilts/toolchains/mips-gcc472-glibc216/lib
    报错:
       checking for leptonica... configure: error: leptonica not found:
    修改为:
    ./configure --host=mips-linux-gnu --target=mips-linux-gnu --prefix=$PWD/tmp
    CC=mips-linux-gnu-gcc CXX=mips-linux-gnu-g++
    CFLAGS=-I/home/newton_linux/prebuilts/toolchains/mips-gcc472-glibc216/include
    LDFLAGS=-L/home/newton_linux/prebuilts/toolchains/mips-gcc472-glibc216/lib
    LIBLEPT_HEADERSDIR=/home/newton_linux/prebuilts/toolchains/mips-gcc472-glibc216/include (指定leptonica库路径)
 
    如果再报错:
        checking for leptonica... yes
        checking for pixCreate in -llept... no
        configure: error: leptonica library missing
        则删除 configure 文件中的以下内容的带”*“的行
          * if test "x$ac_cv_lib_lept_pixCreate" = xyes; then :
            cat >>confdefs.h <<_ACEOF
            #define HAVE_LIBLEPT 1
            _ACEOF
            LIBS="-llept $LIBS"
          * else
            * as_fn_error $? "leptonica library missing" "$LINENO" 5
          * fi
 
  4. 链接库环境变量不变
    export LD_LIBRARY_PATH=/home/newton_linux/prebuilts/toolchains/mips-gcc472-glibc216:
                 /home/newton_linux/prebuilts/toolchains/mips-gcc472-glibc216/lib
 
  5. make -j4
    出现错误:
      svutil.cpp: In static member function 'static void SVSync::StartProcess(const char*, const char*)':
      svutil.cpp:89:18: error: 'fork' was not declared in this scope
      svutil.cpp:119:28: error: 'execvp' was not declared in this scope
      svutil.cpp: In member function 'void SVNetwork::Close()':
      svutil.cpp:262:16: error: 'close' was not declared in this scope
      svutil.cpp: In constructor 'SVNetwork::SVNetwork(const char*, int)':
      svutil.cpp:417:14: error: 'sleep' was not declared in this scope
 
    原因:无对应头文件
    解决:
       svutil.cpp 文件开始出添加头文件: #include <unistd.h>
 
  6. make install
 
四、开发板上使用tesseract
  1. 分别把tesseract、leptonica、libjpeg_9、libz的tmp/下的include头文件和库文件lib复制到开发板/include和/lib目录下
  2. 在开发板上设置语言数据路径:
    export TESSDATA_PREFIX=/alg
    即把语言数据文件放置在/alg/tessdata之下
  3. 开发板上执行:
    tesseract   xxx.jpg   out   -l eng
 

交叉编译 tesseract的更多相关文章

  1. tesseract系列(1) -- tesseract用vs编译成库

    1.下载teseract 下载地址github:     https://github.com/tesseract-ocr/tesseract/releases/ 2.编译源码 源码的编译有两种方式 ...

  2. Linux主机上使用交叉编译移植u-boot到树莓派

    0环境 Linux主机OS:Ubuntu14.04 64位,运行在wmware workstation 10虚拟机 树莓派版本:raspberry pi 2 B型. 树莓派OS: Debian Jes ...

  3. Ubuntu 16.04 安装 arm-linux-gcc 嵌入式交叉编译环境 问题汇总

    闲扯: 实习了将近半年一直在做硬件以及底层的驱动,最近要找工作了发现了对linux普遍要求很高,而且工作岗位也非常多,所以最近一些时间在时不时地接触linux. 正文:(我一时兴起开始写博客,准备不充 ...

  4. Linux 14.04lts 环境下搭建交叉编译环境arm-linux-gcc-4.5.1

    交叉编译工具链是为了编译.链接.处理和调试跨平台体系结构的程序代码,在该环境下编译出嵌入式Linux系统所需要的操作系统.应用程序等,然后再上传到目标板上. 首 先要明确gcc 和arm-linux- ...

  5. Linux主机上实现树莓派的交叉编译及文件传输,远程登陆

    0.环境 Linux主机OS:Ubuntu14.04 64位,运行在wmware workstation 10虚拟机 树莓派版本:raspberry pi 2 B型. 树莓派OS:官网下的的raspb ...

  6. FFmpeg和X264的交叉编译环境

    在下载好了FFmpeg和X264的源码包之后,在Linux下进行安装的基本流程就是切换到其源码的根目录,然后以此执行以下命令.基本上所有的开源源码包的默认编译安装都是这三步. ./configure ...

  7. Windows7 64位系统搭建Cocos2d-x-2.2.1最新版以及Android交叉编译环境(详细教程)

    Windows7 64位系统搭建Cocos2d-x-2.2.1最新版以及Android交叉编译环境(详细教程) 声明:本教程在参考了以下博文,并经过自己的摸索后实际操作得出,本教程系本人原创,由于升级 ...

  8. selenium使用笔记(二)——Tesseract OCR

    在自动化测试过程中我们经常会遇到需要输入验证码的情况,而现在一般以图片验证码居多.通常我们处理这种情况应该用最简单的方式,让开发给个万能验证码或者直接将验证码这个环节跳过.之前在技术交流群里也跟朋友讨 ...

  9. Ubuntu 树莓派2b交叉编译环境

    在一个平台上生成另一个平台上的可执行代码.为什么要大费周折的进行交叉编译呢?一句话:不得已而为之.有时是因为目的平台上不允许或不能够安装所需要的编译器,而又需要这个编译器的某些特征:有时是因为目的平台 ...

随机推荐

  1. python连接sql server数据库实现增删改查

    简述 python连接微软的sql server数据库用的第三方模块叫做pymssql(document:http://www.pymssql.org/en/stable/index.html).在官 ...

  2. CCNA毕业测试

    要求: 1:不同楼层物理隔离,但逻辑相连 2:相同楼层物理相连,但逻辑隔离 3:主机可以动态获取IP地址 4:不同VLAN间可以进行通信 5:主机最终访问www.baidu.com弹出Congratu ...

  3. JS实现鼠标移上去图片停止滚动移开恢复滚动效果

    这是在做个人站的时候展示项目成果,因为不光需要展示,还需要介绍详细内容,就在滚动展示的地方做了这个效果以便于点开想要看的项目. 首先,要做的是一个需要滚动的区域.我前边写过一个关于图片循环滚动的示例, ...

  4. css reset的重置作用(可取还是不可取,取决于你)

    一.重置的理由 当今流行的浏览器中,有些都是以自己的方式去理解css规范,这就会到只有的浏览器对css的解释与设计师的css定义初衷相冲突,使得网页的样子在某些浏览器下能正确按照设计师的想法显示.,但 ...

  5. 关于bootstrap中cropper的截图上传问题

    之前做一个关于截图的东东,搞了好久终于弄好了,其主要关键是把前端截图的数据(x坐标,y坐标,宽度,高度和旋转角度)传到后台,然后在后台对图片做相关处理,记录一下方便以后查看. 后台配置为ssm. Ja ...

  6. SQL Server AG集群启动不起来的临时自救大招

    SQL Server AG集群启动不起来的临时自救大招 背景 前晚一朋友遇到AG集群发生来回切换不稳定的情况,情急之下,朋友在命令行使用命令重启WSFC集群 结果重启WSFC集群之后,非但没有好转,导 ...

  7. 初学JVM

    最近在读周志明的<深入理解Java虚拟机:JVM高级特性与最佳实践>,从中学到了很多,有些人可能会问为什么我们要学习JVM,他有什么用?在这里我想说一下,并不是这本书是大家都推荐的说有用处 ...

  8. 织梦DedeCMS调用二级子栏目或者多级栏目的方法

    图2 当前栏目typeid值为3,所以代码如下: {dede:channelartlist typeid='3,3'} <a href="{dede:field name='typeu ...

  9. Windows server 2008 r2 开启Aero

    1.右键“计算机”----“管理”----“添加功能”,选上“桌面体验”,一般来说要把服务器系统做成工作 站的话,最好再选上“优质WINDOWS音频视频体验”,如果有无线网卡再选上“无线LAN服务”, ...

  10. idea live template

    最近正在研究如何给idea添加注释模板. 此篇文章是记录在写(开发)注释模板的过程中遇到的坑. 1. methodParameters() 当函数的参数列表为空的时候返回的是: [] 当函数的参数列表 ...