官方参考资料说明:
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用vs编译成库
1.下载teseract 下载地址github: https://github.com/tesseract-ocr/tesseract/releases/ 2.编译源码 源码的编译有两种方式 ...
- Linux主机上使用交叉编译移植u-boot到树莓派
0环境 Linux主机OS:Ubuntu14.04 64位,运行在wmware workstation 10虚拟机 树莓派版本:raspberry pi 2 B型. 树莓派OS: Debian Jes ...
- Ubuntu 16.04 安装 arm-linux-gcc 嵌入式交叉编译环境 问题汇总
闲扯: 实习了将近半年一直在做硬件以及底层的驱动,最近要找工作了发现了对linux普遍要求很高,而且工作岗位也非常多,所以最近一些时间在时不时地接触linux. 正文:(我一时兴起开始写博客,准备不充 ...
- Linux 14.04lts 环境下搭建交叉编译环境arm-linux-gcc-4.5.1
交叉编译工具链是为了编译.链接.处理和调试跨平台体系结构的程序代码,在该环境下编译出嵌入式Linux系统所需要的操作系统.应用程序等,然后再上传到目标板上. 首 先要明确gcc 和arm-linux- ...
- Linux主机上实现树莓派的交叉编译及文件传输,远程登陆
0.环境 Linux主机OS:Ubuntu14.04 64位,运行在wmware workstation 10虚拟机 树莓派版本:raspberry pi 2 B型. 树莓派OS:官网下的的raspb ...
- FFmpeg和X264的交叉编译环境
在下载好了FFmpeg和X264的源码包之后,在Linux下进行安装的基本流程就是切换到其源码的根目录,然后以此执行以下命令.基本上所有的开源源码包的默认编译安装都是这三步. ./configure ...
- Windows7 64位系统搭建Cocos2d-x-2.2.1最新版以及Android交叉编译环境(详细教程)
Windows7 64位系统搭建Cocos2d-x-2.2.1最新版以及Android交叉编译环境(详细教程) 声明:本教程在参考了以下博文,并经过自己的摸索后实际操作得出,本教程系本人原创,由于升级 ...
- selenium使用笔记(二)——Tesseract OCR
在自动化测试过程中我们经常会遇到需要输入验证码的情况,而现在一般以图片验证码居多.通常我们处理这种情况应该用最简单的方式,让开发给个万能验证码或者直接将验证码这个环节跳过.之前在技术交流群里也跟朋友讨 ...
- Ubuntu 树莓派2b交叉编译环境
在一个平台上生成另一个平台上的可执行代码.为什么要大费周折的进行交叉编译呢?一句话:不得已而为之.有时是因为目的平台上不允许或不能够安装所需要的编译器,而又需要这个编译器的某些特征:有时是因为目的平台 ...
随机推荐
- mxnet:结合R与GPU加速深度学习(转)
近年来,深度学习可谓是机器学习方向的明星概念,不同的模型分别在图像处理与自然语言处理等任务中取得了前所未有的好成绩.在实际的应用中,大家除了关心模型的准确度,还常常希望能比较快速地完成模型的训练.一个 ...
- 特朗普退出《巴黎协定》:python词云图舆情分析
1 前言 2017年6月1日,美国特朗普总统正式宣布美国退出<巴黎协定>.宣布退出<巴黎协定>后,特朗普似乎成了“全球公敌”. 特斯拉总裁马斯克宣布退出总统顾问团队 迪士尼董事 ...
- js 玩一玩
闲着没事学了学js,做了一个下页面玩玩. 下面是html代码: <!DOCTYPE html><html> <head> <meta charset=&quo ...
- C#实现谷歌翻译API
由于谷歌翻译官方API是付费版本,本着免费和开源的精神,分享一下用C#实现谷歌翻译API的代码.这个代码非常简单,主要分两块:通过WebRequest的方式请求内容:获取Get方式的请求参数(难点在于 ...
- 搭建arm交叉工具链
1.将arm-linux-gcc-4.4.3压缩包,拷到home/armtoolchain下,进行压缩. 2.压缩命令:tar -xzvf arm-linux-gcc-4.4.3.tgz,解压后得到了 ...
- openresty使用笔记(一)
背景介绍 游戏经过一段时间的运营,发现了原来的设计缺陷太多,所以决定重新设计架构.使用到nginx作为核心并通过lua+redis设计实现自己的负载分配方案.先看看下面这张简单的架构图吧~ 从图上看, ...
- 影响国内WinCE7发展的最大障碍是没有D版下载
WinCE红火的时代已经过去,做嵌入式系统时考虑WinCE的越来越少,网络上相关文章也是越来越少. 但真正用过WinCE的应该有体会,它集成了文件系统,tcp/ip,GUI系统,usb驱动,就这些,你 ...
- sqlmap用户手册 [详细]
当给sqlmap这么一个url的时候,它会: 1.判断可注入的参数 2.判断可以用那种SQL注入技术来注入 3.识别出哪种数据库 4.根据用户选择,读取哪些数据 sqlmap支持五种不同的注入模式: ...
- JavaScript之语句,循环
JavaScript中语句主要分为三类:顺序,分支,循环. 1.顺序语句: 按照循序依次执行,最普通常见的语句,这里不多赘述. 其结构如下 2.分支语句: 根据条件判断,不同的结果执行不同的语句. 其 ...
- Mybatis配置(一)
1.导入Mybatis包 2.得到SqlSession来访问数据库 /** * 访问数据库 */public class DBAccess { public SqlSession g ...