码迷,mamicode.com
首页 > 移动开发 > 详细

android tesseract-ocr实例教程(包含中文识别)(附源码)--转载

时间:2015-12-29 14:28:36      阅读:399      评论:0      收藏:0      [点我收藏+]

标签:

(转载注明出处:http://blog.csdn.net/buptgshengod)

1.介绍    

    快过年了,博主的新应用-屏幕取词之了老花镜的编码工作也在紧锣密鼓的进行中。下面分享一下这个应用中的核心功能ocr,也就是图片识词功能。先来看下我的实现效果。上图是在网上随便截下来的一个带有英文的页面,下图是我的应用的实现效果。

技术分享

技术分享

 

2.实现

   (1)首先要下载我的源码和语言包,博客下方会给出地址。(源码设为10分,是想让大家珍惜别人的劳动成果)
    (2)把代码中的lib中的两个文件夹和jar文件导入。
    (3)需要注意的有两点请认真看下面贴出的代码的注释
  1. package com.example.tess;  
      
      
    import java.io.File;  
      
    import com.googlecode.tesseract.android.TessBaseAPI;  
      
    import android.os.Bundle;  
    import android.app.Activity;  
    import android.content.Intent;  
    import android.graphics.Bitmap;  
    import android.graphics.BitmapFactory;  
    import android.view.Menu;  
    import android.view.View;  
    import android.view.View.OnClickListener;  
    import android.widget.Button;  
    import android.widget.TextView;  
      
    public class MainActivity extends Activity {  
      
        private TextView text;  
        TessBaseAPI baseApi;  
        @Override  
        protected void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.activity_main);  
              
            Button bt=new Button(getBaseContext());  
            bt=(Button)findViewById(R.id.button1);  
              
              text=new TextView(getBaseContext());  
              text=(TextView)findViewById(R.id.textView1);  
              
              baseApi=new TessBaseAPI();  
              //(注意)前面的地址是语言包的父级。eng表示解析的是英文  
              baseApi.init("/mnt/sdcard/tesseract/", "eng");  
                
            bt.setOnClickListener(new OnClickListener() {  
                @Override  
                 public void onClick(View sourse) {  
               // text.setText("sb");  
                    //设置要ocr的图片bitmap,要解析的图片地址(注意)  
                    baseApi.setImage(getDiskBitmap("/mnt/sdcard/mypic.bmp"));  
                    //根据Init的语言,获得ocr后的字符串  
                    String text1= baseApi.getUTF8Text();  
                    text.setText(text1);  
                    //释放bitmap  
                    baseApi.clear();  
                }  
            }  
             );  
        }  
        /* 
         * 将本地图片转换为bitmap 
         */  
      
        private Bitmap getDiskBitmap(String pathString)  
        {  
            Bitmap bitmap = null;  
            try  
            {  
                File file = new File(pathString);  
                if(file.exists())  
                {  
                    bitmap = BitmapFactory.decodeFile(pathString);  
                      
                }  
            } catch (Exception e)  
            {  
                // TODO: handle exception  
            }  
              
              
            return bitmap;  
        }  
    }  

     


(4)图片越大耗时越长,本例耗时差不多半分钟

3.源码及相关文件下载地址

 
其中tess文件夹是android程序
tessdata是语言包
 
 
4.中文识别
 
 可到以下地址下载,将其解压放到/tesseract/tessdata下面,然后将eng改为chi_sim
chi_sim.traineddata.gz中文语言包下载地址  
 
如果不能访问Google网址请参考另一篇博客:修改电脑HOSTS登陆Google网【仅供学习使用】--给个其他网站博客链接
 
 
/*注:本博经大神发表并转载而成,如有提问请到原博主博客下提问(也可以把问题留下给个学习的机会<(^-^)>)

android tesseract-ocr实例教程(包含中文识别)(附源码)--转载

标签:

原文地址:http://www.cnblogs.com/JohnGene-Blog/p/5085412.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!