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

时间:2022-08-10 10:17:05

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

1.介绍

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

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

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

 

2.实现

   (1)首先要下载我的源码和语言包,博客下方会给出地址。(源码设为10分,是想让大家珍惜别人的劳动成果)
    (2)把代码中的lib中的两个文件夹和jar文件导入。
    (3)需要注意的有两点请认真看下面贴出的代码的注释
  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=

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

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

    HTML5和CSS3技术是目前整个网页的基础.<HTML5与CSS3实例教程(第2版)>共分3部分,集中讨论了HTML5和CSS3规范及其技术的使用方法.这一版全面讲解了最新的HTML5和 ...

  2. Android中Canvas绘图基础详解(附源码下载) &lpar;转&rpar;

    Android中Canvas绘图基础详解(附源码下载) 原文链接  http://blog.csdn.net/iispring/article/details/49770651   AndroidCa ...

  3. Android 音视频深入 二十 FFmpeg视频压缩&lpar;附源码下载&rpar;

    项目源码https://github.com/979451341/FFmpegCompress 这个视频压缩是通过类似在mac终端上输入FFmpeg命令来完成,意思是我们需要在Android上达到能够 ...

  4. OpenCV&plus;TensorFlow图片手写数字识别&lpar;附源码&rpar;

    初次接触TensorFlow,而手写数字训练识别是其最基本的入门教程,网上关于训练的教程很多,但是模型的测试大多都是官方提供的一些素材,能不能自己随便写一串数字让机器识别出来呢?纸上得来终觉浅,带着这 ...

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

    要绘图,首先得调整画笔,待画笔调整好之后,再将图像绘制到画布上,这样才可以显示在手机屏幕上.Android 中的画笔是 Paint类,Paint 中包含了很多方法对其属性进行设置,主要方法如下: se ...

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

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

  7. PHP简单的长文章分页教程 附源码

    PHP简单的长文章分页教程 附源码.本文将content.txt里的内容分割成3页,这样浏览起来用户体验很好. 根据分页参数ipage,获取对应文章内容 include('page.class.php ...

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

    这篇文章主要介绍了一个超详细的php用户注册页面填写信息完整实例,内容包括邮箱自动匹配.密码强度验证以及防止表单重复等,小编特别喜欢这篇文章,推荐给大家. 注册页面是大多数网站必备的页面,所以很有必要 ...

  9. Python的开源人脸识别库:离线识别率高达99&period;38&percnt;(附源码)

    Python的开源人脸识别库:离线识别率高达99.38%(附源码) 转https://cloud.tencent.com/developer/article/1359073   11.11 智慧上云 ...

  10. C&num;共享内存实例 附源码

    原文 C#共享内存实例 附源码 网上有C#共享内存类,不过功能太简单了,并且写内存每次都从开头写.故对此进行了改进,并做了个小例子,供需要的人参考. 主要改进点: 通过利用共享内存的一部分空间(以下称 ...

随机推荐

  1. linux 星际词霸安装

    安装StarDict星际译王.这是linux系统中最常用的翻译软件之一,但好久没有更新了.Ubuntu14.04下直接在ubuntu软件中心中搜索stardict即可图形界面安装. 命令行安装:sud ...

  2. 丰富&OpenCurlyDoubleQuote;WinForms” 的一个别样&quot&semi;项目&quot&semi;(学生管理)

    一个别样的WinForms项目,他并没多么的新颖,但是它的用处确实有点多,或许会有你需要的地方:如果你对WinForms中那么多控件无法把握,又或者是你根本就不懂,那我觉得你应该好好看看,如果一个人的 ...

  3. DOM &lpar;Document Object Model&rpar;文档对象模型

    [理解下DOM] DOM——Document Object Mode.DOM是网页上XHTML中文档正文标题啊.段落.列表.样式.以及ID/class等所有其他数据的一个内部表示.我自己的理解是将网页 ...

  4. express3&period;0安装并使用layout模板

    转自:http://cnodejs.org/topic/5073989b01d0b801480520e4 1.安装 express-partials. 方法一:运行 cmd 用 npm install ...

  5. spring 获取 bean

    不通过注解或者是配置文件怎么获取spring中定义的bean呢?有几个方法: 1.实现ApplicationContextAware <bean class="com.xxx.Spri ...

  6. Codeforces Round &num;273 &lpar;Div&period; 2&rpar;

    A. Initial Bet 题意:给出5个数,判断它们的和是否为5的倍数,注意和为0的情况 #include<iostream> #include<cstdio> #incl ...

  7. o怎么样racle输入dmp数据库文件

    Oracle进出口数据imp/exp等价物oracle数据恢复和备份. exp命令可以从远程数据库传输数据server出到本地的dmp文件,imp命令能够把dmp文件从本地导入到远处的数据库serve ...

  8. 理解js中的作用域,作用域链以及闭包

    作用域变量作用域的类型:全局变量和局部变量全局作用域对于最外层函数定义的变量拥有全局作用域,即对任何内部函数来说,都是可以访问的 <script> var outerVar = &quot ...

  9. 2017北京国庆刷题Day1 afternoon

    期望得分:100+100+100=300 实际得分:100+100+100=300 T1 一道图论好题(graph) Time Limit:1000ms   Memory Limit:128MB 题目 ...

  10. 重签名提示:无法对 jar 进行签名&colon; java&period;util&period;zip&period;ZipException

    使用jarsigner对APK重签名,提示:jarsigner: 无法对 jar 进行签名: java.util.zip.ZipException: invalid entry compressed ...