
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 详细配置教程所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)