Android Studio里面配置Tesseract

达人科技 2016-10-05 16:35

网上大多是eclipse的项目,因为我用的是AS,所以说一下怎么配置。

身份证图片资料来自百度。

一、导入相关文件

其实我们不用自己编译,可以把别人项目编译好的jar包和so库直接拿来用。因为识别的效果只与字库有关,要识别什么字体自己选用字库就行。

1、新建libs文件夹,导入jar包

2、在main文件夹下新建jniLibs文件夹,把armxxxx两个文件复制过去。

注意so库不能乱放,不然会出现java.lang.UnsatisfiedLinkError异常。

3、我已经在github上提供了so库和jar包的资源了,可以直接下载使用。

配置好的路径:

Android Studio里面配置Tesseract

二、实例代码

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" />

三、效果图

Android Studio里面配置Tesseract

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值