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

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

1.介绍

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


 

2.实现

   (1)首先要下载我的源码和语言包,博客下方会给出地址。(源码设为10分,是想让大家珍惜别人的劳动成果)

    (2)把代码中的lib中的两个文件夹和jar文件导入。

    (3)需要注意的有两点请认真看下面贴出的代码的注释

[java] view plaincopy

  1. package com.example.tess;
  2. import java.io.File;
  3. import com.googlecode.tesseract.android.TessBaseAPI;
  4. import android.os.Bundle;
  5. import android.app.Activity;
  6. import android.content.Intent;
  7. import android.graphics.Bitmap;
  8. import android.graphics.BitmapFactory;
  9. import android.view.Menu;
  10. import android.view.View;
  11. import android.view.View.OnClickListener;
  12. import android.widget.Button;
  13. import android.widget.TextView;
  14. public class MainActivity extends Activity {
  15. private TextView text;
  16. TessBaseAPI baseApi;
  17. @Override
  18. protected void onCreate(Bundle savedInstanceState) {
  19. super.onCreate(savedInstanceState);
  20. setContentView(R.layout.activity_main);
  21. Button bt=new Button(getBaseContext());
  22. bt=(Button)findViewById(R.id.button1);
  23. text=new TextView(getBaseContext());
  24. text=(TextView)findViewById(R.id.textView1);
  25. baseApi=new TessBaseAPI();
  26. //(注意)前面的地址是语言包的父级。eng表示解析的是英文
  27. baseApi.init("/mnt/sdcard/tesseract/", "eng");
  28. bt.setOnClickListener(new OnClickListener() {
  29. @Override
  30. public void onClick(View sourse) {
  31. // text.setText("sb");
  32. //设置要ocr的图片bitmap,要解析的图片地址(注意)
  33. baseApi.setImage(getDiskBitmap("/mnt/sdcard/mypic.bmp"));
  34. //根据Init的语言,获得ocr后的字符串
  35. String text1= baseApi.getUTF8Text();
  36. text.setText(text1);
  37. //释放bitmap
  38. baseApi.clear();
  39. }
  40. }
  41. );
  42. }
  43. /*
  44. * 将本地图片转换为bitmap
  45. */
  46. private Bitmap getDiskBitmap(String pathString)
  47. {
  48. Bitmap bitmap = null;
  49. try
  50. {
  51. File file = new File(pathString);
  52. if(file.exists())
  53. {
  54. bitmap = BitmapFactory.decodeFile(pathString);
  55. }
  56. } catch (Exception e)
  57. {
  58. // TODO: handle exception
  59. }
  60. return bitmap;
  61. }
  62. }

(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-10-07 16:37:05

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

HTML5与CSS3实例教程(第2版) 附源码 中文pdf扫描版

HTML5和CSS3技术是目前整个网页的基础.<HTML5与CSS3实例教程(第2版)>共分3部分,集中讨论了HTML5和CSS3规范及其技术的使用方法.这一版全面讲解了最新的HTML5和CSS3技术,所有实例均使用最新特性实现,针对的是最新版本的浏览器. <HTML5与CSS3实例教程(第2版)>适合所有使用HTML和CSS的Web开发人员学习参考. 目录 第1章 HTML5和CSS3概述 第一部分 用户界面增强 第2章 新的结构化标签和属性 第二部分 新视角.新声音 第6章 在

Android中Loader及LoaderManager的使用(附源码下载)

managedQuery方法的缺陷 Loader是用来更好地加载数据的,在我们谈论Loader之前,我们先研究一下Activity的managedQuery方法,该方法也是用于在Activity中加载数据的.在Android 3.0之前的版本中,我们如果想在Activity中通过ContentResolver对ContentProvider进行查询,我们可以方便的调用Activity的managedQuery方法,该方法的源码如下: @Deprecated public final Cursor

Android仿UC浏览器左右上下滚动功能(附源码)

本文要解决在侧滑菜单右边加个文本框,并能实现文本的上下滑动和菜单的左右滚动.这里推荐可以好好看看android的触摸事件的分发机制,这里我就不详细讲了,我只讲讲这个应用.要实现的功能就像UC浏览器(或其它手机浏览器)的左右滚动,切换网页,上下滚动,拖动内容. 目录:一.功能要求与实现       二.布局与代码       三.原理与说明 本文的效果:(源码下载) 一.功能要求与实现 1.功能要求: (1)手指一开始按着屏幕左右移动时,只能左右滚动菜单,如果这时手指一直按着,而且上下移动了,那么

Android仿微信底部菜单栏+顶部菜单栏(附源码)

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文要实现仿微信微信底部菜单栏+顶部菜单栏,采用ViewPage来做,每一个page对应一个XML,当手指在ViewPage左右滑动时,就相应显示不同的page(其实就是xml)并且同时改变底部菜单按钮的图片变暗或变亮,同时如果点击底部菜单按钮,左右滑动page(其实就是xml)并且改变相应按钮的亮度. 最终效果:源码免费下载 一.布局 1.顶部菜单布局,命名为top_layout.xml

android 打造ListView和Gridview万能adapter适配器(附源码)

android开发中,我们离不开adapter,每个项目都有很多地方需要adapter,那么我们如何让自己少写adapter代码呢?那就是封装adapter,让我们的adapter成为万能的adapter.下面我列出我实现的思路,供给大家学习与参考,当然有更好的方式也可以提供建议哦. 一.针对Listview或GridView的万能适配器(源码) 1.第一步实现公用的viewholder/** * 优化adapter用的ViewHolder * Created by admin on 17/8/

Android使用xml自定义软键盘效果(附源码)

Android使用xml自定义软键盘效果原理: 1,软键盘其实是个控件,使用android.inputmethodserver.KeyboardView类定义. 2,主布局中使用帧布局,当我们需要显示软键盘时设置为可见,不需要时设置为不可见. 3,编写xml文件,定义键盘内容.使用xml文件填充KeyBoardView布局 4,设置EditText的监听事件. 完成键盘开发. 上效果图: 1,源码研究android.inputmethodserver.KeyboardView: /* * Cop

Android Paint的使用以及方法介绍(附源码下载)

要绘图,首先得调整画笔,待画笔调整好之后,再将图像绘制到画布上,这样才可以显示在手机屏幕上.Android 中的画笔是 Paint类,Paint 中包含了很多方法对其属性进行设置,主要方法如下: setAntiAlias: 设置画笔的锯齿效果.    setColor: 设置画笔颜色    setARGB:  设置画笔的a,r,p,g值.    setAlpha:  设置Alpha值    setTextSize: 设置字体尺寸.    setStyle:  设置画笔风格,空心或者实心.    

Android中的多线程编程(一)附源码

Android中多线程编程:Handler类.Runnable类.Thread类之概念分析 1.Handler类: Handler是谷歌封装的一种机制:可以用来更新UI以及消息的发送和处理.Handler是运行在主线程(UI线程). (2).使用Handler机制的原因: 这是谷歌封装的一种更新UI机制和消息机制,如果不使用这个来更新UI和发送处理消息的时候就会抛出异常. (3).Handler的使用: Handler发送消息其实是发送给自己.也就是说由自己来进行发送和处理.是因为Handler

android 实现检测版本,下载apk更新(附源码)

其实这不是什么难事了,都有热更新的技术了,只是记录一下,大神勿嘲笑. 先说下思路,首先要有更新的接口,只要进入app,就监测一下接口,是否更新,更新的话,检测本地版本是否低于接口返回的版本,低的话,就根据返回的路径下载apk更新.接口返回的字段起码有 更新标志.更新版本,更新描述,apk下载地址. 更新标志应该有三种状态,更新,询问更新,强制更新,可以启动一个Service(不要忘记在清单文件中注册)来进行检查更新以及下载的工作: 这下面就是 Service里的全部代码,也不是很难理解,重要的地

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

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