1.Tesseract简介
Tesseract是Ray Smith于1985到1995年间在惠普布里斯托实验室开发的一个OCR引擎,曾经在1995 UNLV精确度测试中名列前茅。但1996年后基本停止了开发。2006年,Google邀请Smith加盟,重启该项目。目前项目的许可证是Apache 2.0。该项目目前支持Windows、Linux和Mac OS等主流平台。但作为一个引擎,它只提供命令行工具。
现阶段的Tesseract由Google负责维护,是最好的开源OCR Engine之一,并且支持中文。
主页地址:https://github.com/tesseract-ocr
在Tesseract的主页中,我们可以下载到Tesseract的源码及语言包,常用的语言包为
中文:chi-sim.traineddata
英文:eng.traineddata
2.Tess-two
因为Tesseract使用C++实现的,在Android中不能直接使用,需要封装JavaAPI才能在Android平台中进行调用,这里我们直接使用TessTwo项目,tess-two是TesseraToolsForAndroid的一个Git分支,使用简单,切集成了leptonica,在使用之前需要先从git上下载源码进行编译。
2.1.1 项目地址
Tess-two在git上地址为:https://github.com/rmtheis/tess-two
2.1.2 编译
我编译使用的环境:
- NDK R12
- Cygwin
NDK环境的具体配置及Cygwin的安装方法可以参照这篇博客:Windows下NDK环境的具体配置及Cygwin的安装
配置好NDK环境后,将从git上下载的Tess-two进行解压,放置的路径是: C:\cygwin64\tess-two-master
,下边开始进行编译:
- 第一步:在Cygwin软件中使用cd命令打开Tesstwo的根目录(
cd /cygdrive/c/cygwin64/tess-two-master/
)。 - 第二步:切换到tess-two目录下的jni目录(
cd tess-two/jni
)。 - 第三步:输入命令进行编译(
$NDK/ndk-build.cmd
)
编译之前可以用记事本打开jni目录下的文件Application.mk修改这里可以修改要编译的平台,以减少不必要的编译来节约时间。这个文件用来配置编译平台相关内容,我们最常用的估计只是APP_ABI字段,它用来指定我们需要基于哪些CPU架构的.so文件,当然你可以配置多个平台:
APP_STL := gnustl_static APP_ABI := armeabi armeabi-v7a x86 mips arm64-v8a x86_64 mips64 APP_OPTIM := release APP_PLATFORM := android-9 APP_CPPFLAGS += -fexceptions -frtti NDK_TOOLCHAIN_VERSION := clang
我在安卓开发过程中APP_ABI := 后面只保留了 armeabi armeabi-v7a
编译需要耗费挺长时间,编译完成后,会在tess-two目录下生成libs文件夹,其中包含了编译生成的.so文件,可以进行使用。
也可以直接下载我编译好的包,这里给出下载地址,我测试了一下,是没有问题的。
我编译的Tess-two要求,Android 2.3 或更高版本,v3.04 trained data file for a language. 数据必须复制到安卓设备上子目录命名为tessdata
.
tess-two下载(Tesseract 3.05、Leptonica 1.74.1、libjpeg 9b、libpng 1.6.25)