Android Studio里面配置Tesseract
网上大多是eclipse的项目,因为我用的是AS,所以说一下怎么配置。
身份证图片资料来自百度。
一、导入相关文件
其实我们不用自己编译,可以把别人项目编译好的jar包和so库直接拿来用。因为识别的效果只与字库有关,要识别什么字体自己选用字库就行。
1、新建libs文件夹,导入jar包
2、在main文件夹下新建jniLibs文件夹,把armxxxx两个文件复制过去。
注意so库不能乱放,不然会出现java.lang.UnsatisfiedLinkError异常。
3、我已经在github上提供了so库和jar包的资源了,可以直接下载使用。
配置好的路径:

二、实例代码
1、要实现识别功能,手机下要放一个tessdata文件夹,这是我们的字库。我的github项目上提供了下载,包括中英文。
2、直接在代码中调用api,传入字库路径和字库名字
3、传入图片,获取结果
4、识别需要一点时间,为了不让app开启就卡死,我用了handler
5、因为要读取根目录下的tessdata文件,所以app得加上读取SD卡的权限,不然会报错
public class MainActivity extends AppCompatActivity {
private Bitmap srcBitmap;
EditText editText;
String result;
Handler handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
editText.setText(result);
}
};
editText = (EditText)findViewById(R.id.editText);
srcBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.test);
new Thread(new Runnable() {
@Override
public void run() {
result = doOcr(srcBitmap,"/chi_sim");
Message msg = new Message();
handler.sendMessage(msg);
}
}).start();
}
/**
* 进行图片识别
*
* @param bitmap
* 待识别图片
* @param language
* 识别语言
* @return 识别结果字符串
*/
public String doOcr(Bitmap bitmap, String language) {
TessBaseAPI baseApi = new TessBaseAPI();
baseApi.init(getSDPath(), language);
// 必须加此行,tess-two要求BMP必须为此配置
bitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);
baseApi.setImage(bitmap);
String text = baseApi.getUTF8Text();
baseApi.clear();
baseApi.end();
return text;
}
/**
* 获取sd卡的路径
*
* @return 路径的字符串
*/
public static String getSDPath() {
File sdDir = null;
boolean sdCardExist = Environment.getExternalStorageState().equals(
android.os.Environment.MEDIA_MOUNTED); // 判断sd卡是否存在
if (sdCardExist) {
sdDir = Environment.getExternalStorageDirectory();// 获取外存目录
}
return sdDir.toString();
}
}
布局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.binbin.tesseracttest.MainActivity"> <ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/test" android:layout_centerHorizontal="true"
android:layout_marginTop="103dp"
android:id="@+id/imageView" /> <EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="识别结果"
android:id="@+id/editText"
android:layout_below="@+id/imageView"
android:layout_centerHorizontal="true"
android:layout_marginTop="99dp" />
</RelativeLayout>
权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
三、效果图

最后是Github上的项目地址:
https://github.com/wzb19960208/TesseractSample
Android Studio里面配置Tesseract的更多相关文章
- Opencv4android的Android Studio项目配置及实例下载
因为软件竞赛的项目会用到Opencv fo rAndroid,所以就研究了一下如何在Android Studio上配置Opencv4Android 环境概述: Android Studio 2.3 O ...
- 浅谈Kotlin(一):简介及Android Studio中配置
浅谈Kotlin(一):简介及Android Studio中配置 浅谈Kotlin(二):基本类型.基本语法.代码风格 浅谈Kotlin(三):类 浅谈Kotlin(四):控制流 前言: 今日新闻:谷 ...
- android studio+grade配置构建
Android 构建系统编译应用资源和源代码,然后将它们打包成可供您测试.部署.签署和分发的 APK.android Studio 使用 Gradle 这一高级构建工具包来自动化执行和管理构建流程,同 ...
- Android studio gradle配置完整版(转)
Android studio gradle配置完整版https://my.oschina.net/u/1471093/blog/539075 Android studio 自定义打包apk名 - pe ...
- Opencv4android的Android Studio环境配置及项目实例下载
因为软件竞赛的项目会用到Opencv for Android,所以就研究了一下如何在Android Studio上配置Opencv4Android 环境概述: Android Studio 2.3 O ...
- Android Studio最新配置教程2016
http://blog.csdn.net/wen_demo 一.Android studio 基本简单介绍 1.Android studio和Eclipse的差别: 1.Studio中有Project ...
- Android Studio如何配置CURL指令一键打包apk上传至蒲公英
Android Studio如何配置CURL指令一键打包apk上传至蒲公英 第一步:在所需要打包的模块build.gradle文件中加入如下代码: android{ buildTypes { //配置 ...
- Android Studio安装配置、环境搭建详细步骤及基本使用
前言 Android Studio的安装配置及使用篇终于来啦~ 废话不多说,以下针对JDK正确安装(及其环境变量配置完毕,即Java开发环境下).Android Studio的安装,配置,以及创建工程 ...
- android studio ndk配置和ndk开发
配置开发环境: 1:下载ndk,导入android studio中. 2:在项目中引入NDK 3:在计算机path变量中导入NDK路径,在编译.h文件的时候会用到. 一:建立java的native ...
随机推荐
- Netty系列之一开始使用
Netty是用来做什么的呢,我的理解是它是一个网络开发框架,利用它能很快速方便的开发出高性能的服务端和客户端.刚开始学习java的时候你一定接触过怎么利用socket去实现服务端和客户端,后来java ...
- CSS格式化工具
一直想自己写个css格式化工具,因为原先的<CSS代码格式化和压缩化>工具,压缩or格式化的都不是我的编码习惯.我的格式化工具也许代码方面细节方面都没他的好,但是符合自身需要的东西才是好东 ...
- BZOJ4974:[Lydsy1708月赛]字符串大师(逆模拟KMP)
题目描述 一个串T是S的循环节,当且仅当存在正整数k,使得S是T k Tk (即T重复k次)的前缀,比如abcd是abcdabcdab的循环节.给定一个长度为n的仅由小写字符构成的字符串S,请对于每 ...
- python(十一)、线程
一.基本概念 进程是资源分配的基本单位,而线程则是CPU调度和分派的基本单位.系统需要执行创建进程.撤销进程和进程切换等任务,但创建进程开销大限制了并发的提高.因此,成百上千个进程会造成内存浪费,并且 ...
- HashMap,LinkedHashMap,TreeMap之间的区别
java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap . Map 主要用于存储键( ...
- Tornador之初识(一)
一.最简单的web服务器 import socket def handle_request(client): buf = client.recv(1024) client.send("HTT ...
- LG4475 巧克力王国
题意 巧克力王国里的巧克力都是由牛奶和可可做成的.但是并不是每一块巧克力都受王国人民的欢迎,因为大家都不喜欢过于甜的巧克力. 对于每一块巧克力,我们设 x 和 y 为其牛奶和可可的含量.由于每个人对于 ...
- vue踩坑记录
一.element resetFields 方法报错 网上查的解决方案 resetForm(formName) { this.$nextTick(() => { this.$refs[formN ...
- mysql 安装(压缩包安装和exe安装)
1:mysql官网:https://dev.mysql.com/downloads/file/?id=482487 2:压缩包安装:https://www.cnblogs.com/jamespan23 ...
- 几个中文排版web 类库
1. typo.css http://typo.sofi.sh/ 2. yue.css http://lab.lepture.com/yue.css/ 规范,统一才是开发的王道.