OCR Android App(采用Tesseract)

    最近想做一个android app来实现通过手机照相识别文本信息。后来查到网上有现成的Fork of Tesseract Tools for Android。调试了两天才把程序调通,现在看起来过程还是挺简单明了的。

 

    我做这个工程的时候,主要参考了下面一些资料
    1android摄像头获取图像,参考了stopit的博文
       http://www.cnblogs.com/mengyan/archive/2012/09/01/2666636.html
       这里他描述的很简单详细
    2ocr这块我参考了黑暗伯爵和gautam的博文
       黑暗伯爵的博文:http://www.cnblogs.com/hangxin1940/archive/2012/01/13/2321507.html
       gautam的博文:http://gaut.am/making-an-ocr-android-app-using-tesseract/
    非常感谢这三位位牛人提供的指导,但我觉得有些初学者刚做起来还是有点不知所措,所以我想再写一篇傻瓜式的文章。如果有错误的地方希望大家多多指点。

 

    好吧,那么我们开始创建我们的工程

1、编译tess-two

(1)下载NDK,安装NDK,将NDK根目录加入到环境变量PATH

(2)https://github.com/rmtheis/tess-two下载tess-wo。其中有三个子目录eyes-twotess-two-testtess-two。这里我们后面只用到tess-two

(3)在命令行中进入tess-two的目录下。 输入ndk-build

    其实这步理论上也可以省略,黑暗伯爵的博文中有编译完成的tess-two供大家使用,不过我先采用他的没有调试成功,所以我建议大家还是自己编译。NDK我是直接百度下载的,操作系统是win7,后面采用NDK进行编译的时候,编译了很长时间,大家耐心等等。

2、将tess-two当做library文件来使用

(1)tess-two导入到eclipse。 File -> Import -> Existing Projects into workspace -> tess-two directory.

(2)右击该工程 Android Tools -> Fix Project Properties

(2)右击该工程 Properties -> Android ,在project build target中,选择一个较新的android版本,并在Is Library前点上勾,点击OK。

    这个地方我遇到了很多问题,理论上直接Fix Project Properties可以消除的一些错误,我却没能完成。后来我在右击该工程->build path->configure build path 的soure中添加了res和gen文件夹,在library中add library加入了android class path container和JRE8。这样tess-two工程才没有错误了。

3、在自己的工程中,把tess-two当做一个library project

(1)在自己的工程中右击该工程-> Properties -> Android -> Library -> Add, 选择 tess-two.这样我们就可以在自己的工程中使用TessBaseAPI了。

到这基本就算是成功了。

(2)使用TessBaseAPI必要的代码

//新建一个TessBaseAPI
TessBaseAPI baseApi=new TessBaseAPI();
//初始化API //android下面,tessdata肯定得放到sd卡里了,如果直接将tessdata文件夹放在SD卡得根目录下,我们这可以这样写初始化 File path = Environment.getExternalStorageDirectory();//获取SD卡根目录 baseApi.init(path.getAbsolutePath(),"eng");//英文是eng,简体中文是chi_sim,目测应该就是tessdata文件夹中.tessdata文件的文件名
//设置要ocr的图片bitmap,这个我是采用摄像头获得的图片位图,大家也可以从文件获得,只要得到bitmap就行 baseApi.setImage(bitmap);
//根据Init的语言,获得ocr后的字符串 String text= baseApi.getUTF8Text();
//释放bitmap baseApi.clear(); //如果连续ocr多张图片,这个end可以不调用,但每次ocr之后,必须调用clear来对bitmap进行释放 //释放native内存 baseApi.end();

4、下载tessdata

    tessdata数据文件决定了TessBaseAPI可以识别那些文字。下载地址:http://code.google.com/p/tesseract-ocr/downloads/list

    我们将数据文件解压后,直接将其中的tessdata文件夹放入SD卡中,如果不放入根目录下,API初始化代码可以改成如baseApi.init("mnt/sdcard","eng"),其中mnt/sdcard为tessdata文件夹所在的目录。注意,放入SD卡的时候必须有tessdata文件夹,没有该文件夹会报错。

         

 大概这些了,希望大家多多指点,如果在调试该程序的过程中遇到一些问题,也可以一起讨论,谢谢!

转载于:https://www.cnblogs.com/pangkuo/p/android_ocr_application.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值