首页 > 代码库 > 基于Tesseract OCR的文字识别Android应用开发资料整理

基于Tesseract OCR的文字识别Android应用开发资料整理


前言



一、Tesseract OCR引擎


  Tesseract OCR是HP公司于1985~1995年间开发的商业级OCR(Optical Character Reader, 光学字符阅读器)引擎,并于2005年开放源代码。以下是它sourceforge上的网址:

  http://sourceforge.net/projects/tesseract-ocr/?source=directory

现在已转移到谷歌的代码服务下:

  https://code.google.com/p/tesseract-ocr/

源码和字库的下载列表:

  https://code.google.com/p/tesseract-ocr/downloads/list

谷歌的服务器在国内不稳定,可以从http://pkgs.fedoraproject.org下载到所需的软件包和字库包:

c> 源码:http://pkgs.fedoraproject.org/repo/pkgs/tesseract/tesseract-ocr-3.02.02.tar.gz/

  > 中文字库:http://pkgs.fedoraproject.org/repo/pkgs/tesseract-langpack/tesseract-ocr-3.02.chi_sim.tar.gz/

  > 英文字库:http://pkgs.fedoraproject.org/repo/pkgs/tesseract/tesseract-ocr-3.02.eng.tar.gz/


二、面向Android的Tesseract工具


  tess-two是Tesseract Tools for Android (tesseract-android-tools) 的一份拷贝,并添加了一些功能。Tesseract Tools for Android是Tesseract OCR和Leptonica图像处理库的Android API与构建文件的集合。github上的网址为:

  https://github.com/rmtheis/tess-two

关于tess-two的编译过程,可以参考上述网址,根据我的编译经历,发现执行"android update project --path ."一步是,需要指定--target选项,其参数通过命令"android list targets"获取到id值,再指定,如下(记得连接好你的Android手机)。

root@Leon:/home/work/tess-two# android list targets
Available Android targets:
----------
id: 1 or "android-18"
     Name: Android 4.3
     Type: Platform
     API level: 18
     Revision: 1
     Skins: WVGA854, WXGA800, WSVGA, WVGA800 (default), WQVGA400, WXGA720, QVGA, WQVGA432, WXGA800-7in, HVGA
     ABIs : armeabi-v7a
root@Leon:/home/work/tess-two# android update project --path . --target 1
其中的"1"便是来自id后面的值。之后,便按照tess-two的github上的描述,添加到Eclispe即可。


三、基于tess-two的Android应用


  有了面向Android的Tesseract库tess-two,接下来就是使用Android应用来测试和使用了。github上的android-ocr就是这样的应用:

  https://github.com/rmtheis/android-ocr

我测试使用的是来自Mike_Wong的应用,参考了文章《浅析android OCR文字识别》,文章中包含了源码的下载地址。解压源码并导入到Eclipse之后,删除目录中的"gen"目录,并关闭工程再重新打开即可,为的是重新生成gen目录及其中的内容。源码中已包含tess-two编译会生成的libtess.so和liblept.so,并且包含了libjpeg.so。在编译并安装应用之前的唯一步骤是,在目标手机的SD目录下创建tessdata目录,将上面讲述的中英文字库添加到该目录,即"/sdcard/tessdata/"目录

  经过测试,发现算法的运行时间还是比较慢的,一段话的中文,处理时间大约20秒。识别精度也比较有限,在一张照片中文字比较多时,识别精度有所下降,如果文字比较少且比较大,则精度较高。


附录:其它参考文章


1. 《Android OCR 之 tesseract》:http://www.cnblogs.com/hangxin1940/archive/2012/01/13/2321507.html

2. 《安卓平台tess-two的图片识别终于成功》:http://www.cnblogs.com/muyun/archive/2012/06/12/2546693.html

3. 《tesseract-ocr训练方法》:http://my.oschina.net/lixinspace/blog/60124

4. 《Tesseract 3 语言数据的训练方法》:http://blog.wudilabs.org/entry/f25efc5f/


基于Tesseract OCR的文字识别Android应用开发资料整理