Android Studio + Tesseract 详细配置教程

Android Studio + Tesseract 详细配置教程,第1张

概述1、创建Project  选EmptyActivity,其它信息自己填。2、配置一、在app的build.gradle中添加依赖   implementation'com.rmtheis:tess-two:8.0.0'二、在 AndroidManifest.xml中添加权限   <uses-permissionandroid:name="android.permission 1、创建 Project@H_301_2@    选 Empty Activity,其它信息自己填。

2、配置一、在 app 的 build.gradle 中添加依赖@H_301_2@    

implementation 'com.rmtheis:tess-two:8.0.0'
二、在 AndroIDManifest.xml 中添加权限@H_301_2@    

    <uses-permission androID:name="androID.permission.READ_EXTERNAL_STORAGE" />    <uses-permission androID:name="androID.permission.WRITE_EXTERNAL_STORAGE" />    <uses-permission androID:name="androID.permission.MOUNT_UNMOUNT_fileSYstemS" />
3、下载 tesseract 的字库@H_301_2@    git 地址,这里只下两个,分别为简体中文的和英文的:chi_sim.traineddata 和 eng.traineddata。

@H_301_2@    在 app/src/main 下创建 assets 文件夹,将下载好的两个字库拷进去。

@H_301_2@    

4、测试@H_301_2@    准备好一张测试图片,这里为 nine.png:

 。

@H_301_2@    把这张图拷到 res/drawable 文件夹中。

@H_301_2@    

@H_301_2@    以下是 MainActivity.java 的源码,注释详尽,可直接运行。

package com.example.imgpstrtest;import androID.Manifest;import androID.content.pm.PackageManager;import androID.content.res.AssetManager;import androID.graphics.Bitmap;import androID.graphics.BitmapFactory;import androID.os.Environment;import androID.support.v4.app.ActivityCompat;import androID.support.v7.app.AppCompatActivity;import androID.os.Bundle;import androID.util.Log;import androID.Widget.Toast;import com.Googlecode.tesseract.androID.TessBaseAPI;import java.io.file;import java.io.fileNotFoundException;import java.io.fileOutputStream;import java.io.IOException;import java.io.inputStream;import java.io.OutputStream;public class MainActivity extends AppCompatActivity {    /* mDataPath 是字库在手机上的存储位置 */    private String mDataPath = Environment.getExternalStorageDirectory().getabsolutePath() + "/tessdata/";    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_main);        getStorageAccesspermission(); // 获取权限        file parentfile = new file(mDataPath);        if (!parentfile.exists()){ // 确保路径存在            parentfile.mkdir();        }        copyfiles(); // 复制字库到手机        String lang = "chi_sim+eng"; // 使用简体中文 + 英文检测        TessBaseAPI mTess = new TessBaseAPI();        mTess.init(Environment.getExternalStorageDirectory().getabsolutePath(), lang); // 初始化,第一个参数为 mDataPath 的父目录        Long starttime = System.currentTimeMillis(); // 检测开始时间        String OCRresult = null;        Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.nine); // 获取测试图片        mTess.setimage(bitmap);        OCRresult = mTess.getUTF8Text(); // 拿到字符串结果        Long endtime = System.currentTimeMillis(); // 检测结束时间        Log.e("test", OCRresult);        Log.e("test", (endtime - starttime) + " ms");    }    private voID copyfiles() {        String[] datafilepaths = new String[]{mDataPath + "/chi_sim.traineddata", mDataPath + "/eng.traineddata"}; // 拷两个字库过去        for (String datafilepath : datafilepaths) {            copyfile(datafilepath);        }    }    private voID copyfile(String datafilepath) {        try {            String filepath = datafilepath;            String[] filesegment = filepath.split(file.separator);            String filename = filesegment[(filesegment.length - 1)]; // 获取字库文件名            AssetManager assetManager = getAssets();            inputStream instream = assetManager.open(filename); // 打开字库文件            OutputStream outstream = new fileOutputStream(filepath);            byte[] buffer = new byte[1024];            int read;            while ((read = instream.read(buffer)) != -1) {                outstream.write(buffer, 0, read);            }            outstream.flush();            outstream.close();            instream.close();            file file = new file(filepath);            if (!file.exists()) {                throw new fileNotFoundException();            }        } catch (fileNotFoundException e) {            e.printstacktrace();        } catch (IOException e) {            e.printstacktrace();        }    }    private voID getStorageAccesspermission() {        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {            // 没有获得授权,申请授权            if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this,                    Manifest.permission.WRITE_EXTERNAL_STORAGE)) {                Toast.makeText(MainActivity.this, "请先授权!", Toast.LENGTH_LONG).show();            } else {                // 不需要解释为何需要该权限,直接请求授权                ActivityCompat.requestPermissions(MainActivity.this,                        new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);            }        }    }}
5、参考@H_301_2@    https://blog.csdn.net/qq_33440246/article/details/78654871

@H_301_2@    https://blog.csdn.net/danfengw/article/details/79231201

总结

以上是内存溢出为你收集整理的Android Studio + Tesseract 详细配置教程全部内容,希望文章能够帮你解决Android Studio + Tesseract 详细配置教程所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1115361.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存