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

原创 2014年01月27日 10:40:19

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


ps:鉴于大家对这个项目这么感兴趣,问题也比较多,我简单的再说几点。

1.我只是使用了这个ocr引擎,算法什么的我真的不清楚,这个引擎是比较老的,虽然是google旗下的,但是准确率并不算突出,算法是90年代的。

2.很多人问路径是否可以更改,就是语言包tess的路径。这个当然可以改,我写成这样是针对一些基础不好的童鞋。

3.很多人不会翻墙下载中文语言包,我在github里面加入了中文语言包,大家有兴趣的去下载吧。

4.有什么不会的,我建议大家仔细看下博文和评论,如果还不明白,可以给我发邮件。


1.介绍    

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



2.实现

   (1)首先要下载我的源码和语言包,博客下方会给出地址。
    (2)把代码中的lib中的两个文件夹和jar文件导入。
    (3)需要注意的有两点请认真看下面贴出的代码的注释
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.源码及相关文件下载地址


好吧,好多人说代码下载不了或者说10分太贵了,这里提供一下免费下载地址
其中tess文件夹是android程序
tessdata是语言包


4.中文识别
 
 可到以下地址下载,将其解压放到/tesseract/tessdata下面,然后将eng改为chi_sim
http://code.google.com/p/tesseract-ocr/downloads/detail?name=chi_sim.traineddata.gz&can=2&q=


版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

RecyclerView实现悬浮吸顶

使用RecyclerView实现悬浮吸顶效果

unity地形编辑扩展插件Landspace Auto Material介绍

LAM是一套针对复杂地形和植物的编辑工具, 增加了一些unity自带地形编辑器没有的功能, 对其用法做一下简单介绍。

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

关注CSDN程序人生公众号,轻松获得下载积分

关注公众号 在公众号里回复“”秘密“”两个字 返回 http://task.csdn.net/m/task/home?task_id=398 领取奖励 提示:根据公众号里的自动回复,完成...

Android设计模式学习之观察者模式

观察者模式在实际项目中使用的也是非常频繁的,它最常用的地方是GUI系统、订阅——发布系统等。因为这个模式的一个重要作用就是解耦,使得它们之间的依赖性更小,甚至做到毫无依赖。以GUI系统来说,应用的UI...

JavaEE 6及以上版本的web.xml问题?

JavaEE 6及以上版本的web.xml问题?MyEclipse JavaEE 6版本开始web.xml突然消失不见?没这回事,只是不太必须而已,有需要的项目可以自行进行添加或在创建项目的时候点击n...

面试题:8个试剂,其中一个有毒,最少多少只小白鼠能检测出有毒试剂

面试题:8个试剂,其中一个有毒,最少多少只小白鼠能检测出有毒试剂方法1:用3只小鼠,能组合成8种状态。 第一只喂食【1、3、5、7】四只试剂 第二只喂食【2、3、6、7】四只试剂 第三只喂食【4、5、...

感悟达人

在我们这个圈子里,有些话是不能明说的,在题目上更不感放肆,所以就用了达人来暗示一些人一直对于达人,都是很向往的,可以高扬着嗓子,可以威武着眼神,可以挥斥方求.可以视金钱如粪土,又可以满身粪土,满屋粪土...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)