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

(转载请注明出处: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=

时间: 2024-09-21 21:12:16

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

Android仿腾讯QQ实现滑动删除 附源码下载_Android

看了很多大神们的文章,感觉受益良多,也非常欣赏大家的分享态度,所以决定开始写Blog,给大家分享自己的心得. 先看看效果图: 本来准备在ListView的每个Item的布局上设置一个隐藏的Button,当滑动的时候显示.但是因为每次只要存在一个Button,发现每个Item上的Button相互间不好控制.所以决定继承ListView然后结合PopupWindow. 首先是布局文件: delete_btn.xml:这里只需要一个Button <?xml version="1.0"

android SQLite数据库用法图文详解(附源码)

1.背景 SQLite是嵌入式设备使用的一种轻量型数据库.可以通过执行sql语句对数据库进行操作,android也为其提供了完善的函数接口支持.下面就来实现一个简单的数据库,可以实现查询以及插入等功能. 例图如下: 返回栏目页:http://www.bianceng.cnhttp://www.bianceng.cn/OS/extra/

Android中Canvas绘图基础详解(附源码下载)

Android中,如果我们想绘制复杂的自定义View或游戏,我们就需要熟悉绘图API.Android通过Canvas类暴露了很多drawXXX方法,我们可以通过这些方法绘制各种各样的图形.Canvas绘图有三个基本要素:Canvas.绘图坐标系以及Paint.Canvas是画布,我们通过Canvas的各种drawXXX方法将图形绘制到Canvas上面,在drawXXX方法中我们需要传入要绘制的图形的坐标形状,还要传入一个画笔Paint.drawXXX方法以及传入其中的坐标决定了要绘制的图形的形状

(转)干货|这篇TensorFlow实例教程文章告诉你GANs为何引爆机器学习?(附源码)

干货|这篇TensorFlow实例教程文章告诉你GANs为何引爆机器学习?(附源码)   该博客来源自:https://mp.weixin.qq.com/s?__biz=MzA4NzE1NzYyMw==&mid=2247492203&idx=5&sn=3020c3a43bd4dd678782d8aa24996745&chksm=903f1c73a74895652ee688d070fd807771e3fe6a8947f77f3a15a44a65557da0313ac5ad59

android仿新闻阅读器菜单弹出效果实例(附源码DEMO下载)_Android

开发中碰到问题之后实现的,觉得可能有的开发者用的到或则希望独立成一个小功能DEMO,所以就放出来这么一个DEMO. 原本觉得是最后完成后发网站客户端的,可是这样体现不出一个功能一个功能的分析实现效果,而且周期时间长,所以就完成一部分,发一部分,敬请谅解. 下面的菜单弹出效果在很多的新闻阅读器上都有,比如今日头条.360新闻等. 其实这个实现起来很简单,看其效果,其实就是一个PopupWindow,之后设定相应postion的按钮点击属性,之后获取按钮的位置,给它设置动画显示消失就可以出现了. 下

简单实现Android学生管理系统(附源码)_Android

本文实例讲述了Android实现学生管理系统,分享给大家供大家参考.具体如下: (1)管理系统实现的功能主要是:学生.教师的注册登录,和选课,以及修改学生的成绩等基本简单的功能,最主要的是实现一些Dialog的使用. 界面如下: (2)主要代码如下:(个人留作笔记,如需要完整代码,在最下边免费下载) 下边是一个适配器,适配器是为了一个listvie进行设置值,其中加载的是一个itemview,适配器中还是用了继承的方法,用于通知适配器进行更新. public class CourseAdapte

超详细的php用户注册页面填写信息完整实例(附源码)_php实例

注册页面是大多数网站必备的页面,所以很有必要对自己的注册页面做些精心的设计.下面三张图,第一张是注册的展示页面,第二张思维导图就一个简单的逻辑,第三张是通过firebug查看调用的JS文件. 一.给每个输入框写下说明 在用户看到这个输入框的时候,就能非常清晰的明白这个输入框是做啥用的,最大限度的降低他们产生疑惑的可能性.我们需要假设用户毫不了解注册需要输入的内容,随后给他们足够的信息以便帮助他们理解.  二.小图标icon Icon是增强内容的工具,而且能给访客一个很好的暗示.以前使用小图标都是

自定义Android六边形进度条(附源码)_Android

本文实例讲述了Android自定义圆形进度条,分享给大家供大家参考.具体如下: 大家也可以参考这两篇文章进行学习: <自定义Android圆形进度条(附源码)>   <Android带进度的圆形进度条> 运行效果截图如下: 主要代码: package com.sxc.hexagonprogress; import java.util.Random; import android.content.Context; import android.content.res.ColorSta

自定义Android六边形进度条(附源码)

本文实例讲述了Android自定义圆形进度条,分享给大家供大家参考.具体如下: 大家也可以参考这两篇文章进行学习: <自定义Android圆形进度条(附源码)>   <Android带进度的圆形进度条> 运行效果截图如下: 主要代码: package com.sxc.hexagonprogress; import java.util.Random; import android.content.Context; import android.content.res.ColorSta

Android菜鸟的成长笔记(6)——剖析源码学自定义主题Theme

原文:Android菜鸟的成长笔记(6)--剖析源码学自定义主题Theme 还记得在Android菜鸟的成长笔记(3)中我们曾经遇到了一个问题吗?"这个界面和真真的QQ界面还有点不同的就是上面的标题myFirstApp,怎么去掉这个标题呢?",当时我直接在AndroidMainfest.xml中添加了一个属性: android:theme="@android:style/Theme.NoTitleBar" 可能有的朋友就会迷惑了,为什么添加了这个属性就可以了.这一篇