zoukankan      html  css  js  c++  java
  • [置顶] 安卓图片OCR识别技术 tesseract研究文档20130328v1

    针对安卓APP OCR图片识别技术研究与 DEMO

                                                                              

    通过近端时间的在网络上的学习,了解了俩个OCR的技术,包括tesseract  openCv这俩个技术

    主要研究了tesseractOCR技术,并通过模拟器做了个demo app下面与大家分享过程,希望共同进步。

    Tesseract OCR引擎是1995UNLVAccuracy大赛中的排名前三的引擎。1995年到2006年间,它没有大的改进;之后,它被谷歌大幅改进,很可能是识别率最高的可用开源OCR引擎之一了。结合Leptonica图像处理库,它能读取各种各样格式的图像文件,识别出超过40多种语言的文本。

    Tesseract的下载地址为:

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

    Tesseract for android tess-two下载地址为:

    https://github.com/rmtheis/tess-two/archive/master.zip

    接下来需要对下载下来的tess-two进行编译

    如何用android ndk进行so的编译我放在了另外的一个文档中,大家请参考

    也可以直接下载编译好的tess-two  so文件

    http://download.csdn.net/detail/uniquerhythm/5166651

    编译好后,将src下的两个包以及libs导入到自己的项目就可以用啦

    接下来我们还需要 tessractandroid jar

    Android官方地址:tesseract-android-tools

    http://code.google.com/p/tesseract-android-tools/downloads/list?can=1&q=

    但它必须要一个匹配库,即tessdata,我们可以从官方拷贝,在前面git的项目里面tesseract源码目录有现成的tessdata可以用,对于中文,googlecode上也有下载,当然也可以自己训练不同语言的tessdata

    leptonica的类我们不必使用,只要使用tess包的类就行了

    下面是 tessBaseAPI的主要用法

    TessBaseAPI

    //////////////////////华丽的分割线//////////////////////////////////////////////////////
    
    TessBaseAPI baseApi=new TessBaseAPI();
    
    //初始化tess
    //android下面,tessdata肯定得放到sd卡里了
    //如果tessdata这个目录放在sd卡的根目录
    //那么path直接传入sd卡的目录
    //eng就是英文,关于语言,按ISO 639-3标准的代码就行,具体请移步wiki
    baseApi.init("tessdata文件夹的父级目录","eng");
    
    //options是为了缩放图片,这个酌情缩放,图片小的话可以不缩放
    BitmapFactory.Options options=newBitmapFactory.Options();
    //缩小为原来的1/2
    options.inSampleSize=2;
    
    //bitmap,我这里是以流的形式,只要能形成Bitmap就行
    Bitmap bitmap = BitmapFactory.decodeStream(instream,null,options);
            instream.close();    
    //设置要ocr的图片bitmap
    baseApi.setImage(bitmap);
    //根据Init的语言,获得ocr后的字符串
    String text= baseApi.getUTF8Text();
    


     

    通过以上即可对图片进行识别并得到识别文字

    下面是我自身的demo开发的详细过程与大家分享

    首先创建一个界面:主要包括内存图片识别照片识别识别,图片区,以及识别结果区域

    确认之前编译好的so文件以及下载的jar包放入Lib

    针对tessract jar包方法进行程序编写

    因为程序的写法,需要将 tessdata识别库与ocr图片放到SD卡中

    接着,右键项目运行选择android,(android环境的配置请参考李涛的分享文档)

    运行:接下来就是漫长的等待。。。。

    运行成功:

     

    最终运行结果:成功

     

    结论:对于tesseract的识别如果换成其他字体或手写体,则需要手工的训练tesseract的识别字体库及放入SD卡中tessdata文件夹中的文件

    现还有一些问题需要大家一起来共同克服完成

    1.      照相机功能

    2.      对于手写字体的识别训练的识别率的控制

    针对于tessdata的训练,我这里还有一个网址,大家可以上去学习一下相信会有作用

    Tesseract-OCR字符识别-样书训练

    http://www.myexception.cn/mobile/1119147.html

    以上就是我近期的技术研究以及demo,与大家分享希望共同进步,如大家有问题,可以随时找我沟通!

    源码以及程序找不到可以找我联系!站内短信 或者 回复哦!

     

     

  • 相关阅读:
    grunt in webstorm
    10+ Best Responsive HTML5 AngularJS Templates
    响应式布局
    responsive grid
    responsive layout
    js event bubble and capturing
    Understanding Service Types
    To add private variable to this Javascript literal object
    Centering HTML elements larger than their parents
    java5 新特性
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/2994984.html
Copyright © 2011-2022 走看看