• Android文字识别之tesseract的使用


    关于tesseract识别工具有Google提供的版本有tesseract-android-tools,不过还有一个tesseract-two也是非常好用的,这里我们使用的是tesseract-two。tesseract是用c++实现的,需要封装Java API用于Android平台的调用。所以在使用tesseract-two之前得下载Android-NDK ,下载NDK之后,解压到自己电脑的一个文件夹下,配置eclipse引用下载来的NDK。

    解压下载来的NDK,因为要使用ndk-build该命令又为了方便起见,不用CD来CD去的~配置一下环境变量,在path中追加ndk所解压的目录。

    tesseract-two其实是Tesseract Tools for Android的一个git分支,选择它是由于操作简单,并且集成了leptonica,一个图形处理工具。所以可以在gitbub上下载来

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

    也可以通过git来获取想要的资源。

    http://git-scm.com/download/win

    资源都准备好了,然后我们使用NDK编译(Windows下的cmd进入),敲入如下的命令(编译的时间会有点久)

    cd tess-two  
    ndk-build  
    android update project -t 1 --path .  
    ant release  
        
    cd ..  
    cd eyes-two  
    ndk-build  
    android update project -t 1 --path .  
    ant release  
    

    eclipse里面的Android项目中导入编译好的类库,共三个项目,tess-two,tess-two-test 以及eyes-two。其中tess-two和eyes-two为android lib项目,供其它项目引用。

    然后编写Java代码,但是发现会出错。主要由于在/mnt/sdcard/目录下缺少语言包,将tessdata下面的两个语言包放到sd卡的根目录下面就可以了~

    import com.googlecode.tesseract.android.TessBaseAPI;
    import android.app.Activity;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.os.Bundle;
    import android.util.Log;
    
    public class MainActivity extends Activity {
        
        private static final String TESSBASE_PATH = "/mnt/sdcard/";  
        private static final String DEFAULT_LANGUAGE = "eng";  
        private static final String CHINESE_LANGUAGE = "chi_sim";  
        private static final String TAG = "tesseract";
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            TessBaseAPI baseApi=new TessBaseAPI();
            baseApi.init(TESSBASE_PATH, DEFAULT_LANGUAGE);  
            baseApi.setPageSegMode(TessBaseAPI.PSM_AUTO); 
            
            //从资源里获取一张图片
            Bitmap  bitmap = BitmapFactory.decodeResource(MainActivity.this.getResources(), R.drawable.ocr);
            baseApi.setImage(bitmap);         
            
            final String outputText = baseApi.getUTF8Text(); 
            Log.i(TAG, "识别结果:" + outputText);
            baseApi.end();
    } }

    原图:

    识别结果:

  • 相关阅读:
    MySQL之Web乱码问题
    MySQL之表操作
    Python学习笔记调式之抛出异常
    Python学习笔记调试之取得反向跟踪的字符串
    MySQL之库操作
    C#基础 冒泡排序
    C#基础 数组、二维数组
    C#基础 类及常用函数【string 、Math 、DiteTime 、TimeSpan】
    C#基础 异常语句 、跳转语句、while循环、穷举法、迭代法
    C#基础 循环语句【for】
  • 原文地址:https://www.cnblogs.com/chenjianxiang/p/4194707.html
Copyright © 2020-2023  润新知