当前位置: 首页 > news >正文

市网站制作番禺绿叶居

市网站制作,番禺绿叶居,宁波网站建设推广报价,南宁市建设厅网站下面是整个详解步骤过程 效果图一、OCR的含义二、什么是Tesseract三、前提准备1、添加依赖2、数据文件下载路径 四、实际代码案例Demo如下#xff1a;Main.xmlMain.java 效果图 流程#xff1a;获取assets中的图片显示到页面#xff0c;提取照片内的文字 一、OCR的含义 o… 下面是整个详解步骤过程 效果图一、OCR的含义二、什么是Tesseract三、前提准备1、添加依赖2、数据文件下载路径 四、实际代码案例Demo如下Main.xmlMain.java 效果图 流程获取assets中的图片显示到页面提取照片内的文字 一、OCR的含义 ocr是Optical Character Recognition光学字符识别是指电子设备例如扫描仪或数码相机检查纸上打印的字符通过检测暗、亮的模式确定其形状然后用字符识别方法将形状翻译成计算机文字的过程 二、什么是Tesseract 官网奉上 简单地说Tesseract 就是OCR所说的“识别软件”的具体实现 其实看官网已经是5、6年前就开始不维护了 这里也指明了不在维护可前往 Tesseract Tools 的一个分支Tesseract4Android官网这里还是写一下Tesseract 的demo吧做参考 当然你也可以直接去Tesseract4Android的参考文章Tesseract4Android参考文章 三、前提准备 1、添加依赖 注意 1、Android 2.3 或更高版本 2、数据文件必须是 复制到 Android 设备的子目录中tessdata上一级文件夹的名称必须是tessdata后缀必须是.traineddata dependencies {implementation com.rmtheis:tess-two:9.1.0 }2、数据文件下载路径 数据文件下载路径或者直接下载中文数据包中文数据包 数据包下载下来放到assets文件夹下 四、实际代码案例Demo如下 Main.xml ?xml version1.0 encodingutf-8? LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticaltools:context.MainActivityImageViewandroid:idid/main_iv_imageandroid:layout_widthmatch_parentandroid:layout_height500dpandroid:layout_gravitycenter_horizontalandroid:layout_marginLeft5dpandroid:layout_marginRight5dp/Buttonandroid:idid/main_bt_recognizeandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:layout_marginLeft5dpandroid:layout_marginRight5dpandroid:layout_gravitycenter_horizontalandroid:text读取一张图片并识别 /TextViewandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:layout_marginLeft5dpandroid:layout_marginRight5dpandroid:layout_gravitycenter_horizontalandroid:text识别结果 /TextViewandroid:idid/main_tv_resultandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:layout_marginLeft5dpandroid:layout_marginRight5dpandroid:layout_gravitycenter_horizontal / /LinearLayoutMain.java package com.example.ocrapplication.ui;import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat;import android.Manifest; import android.annotation.SuppressLint; import android.content.Context; import android.content.pm.PackageManager; import android.content.res.AssetManager; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast;import com.example.ocrapplication.R; import com.googlecode.tesseract.android.TessBaseAPI;import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream;public class TesseractActivity extends AppCompatActivity {public static final String TESS_DATA /tessdata;private static final String TARGET_FILENAME cs.png;// private static final String DATA_FILENAME eng.traineddata;private static final String DATA_FILENAME chi_sim.traineddata;private static final String TAG TesseractActivity.class.getSimpleName();private Button main_bt_recognize;private TextView main_tv_result;private ImageView main_iv_image;private Bitmap bitmap;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_tesseract);// 检查并请求应用所需权限checkPermission();// 获取控件对象initView();// 设置控件的监听器setListener();}SuppressLint(HandlerLeak)private Handler handlernew Handler(){Overridepublic void handleMessage(NonNull Message msg) {super.handleMessage(msg);switch (msg.what){case 1:Bundle data msg.getData();main_tv_result.setText(data.getString(data));break;}}};private void setListener() {// 设置识别按钮的监听器main_bt_recognize.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {// 点击后的主程序mainProgram();}});}// 获得界面需要交互的控件private void initView() {main_bt_recognize findViewById(R.id.main_bt_recognize);main_tv_result findViewById(R.id.main_tv_result);main_iv_image findViewById(R.id.main_iv_image);// 从assets中获取一张Bitmap图片bitmap getBitmapFromAssets(TesseractActivity.this, TARGET_FILENAME);// 同时显示在界面main_iv_image.setImageBitmap(bitmap);}// OCR识别的主程序private void mainProgram() {if (bitmap ! null) {// 准备工作创建路径和Tesserect的数据prepareTess();// 初始化TesserectTessBaseAPI tessBaseAPI new TessBaseAPI();String dataPath getExternalFilesDir(/).getPath() /;tessBaseAPI.init(dataPath, chi_sim);//因为识别比较耗时建议开启开启子线程识别new Thread(new Runnable() {Overridepublic void run() {// 识别并显示结果String result getOCRResult(tessBaseAPI, bitmap);//把数据返回到主线程上面显示Message messagenew Message();message.what1;Bundle bundle new Bundle();bundle.putString(data,result);message.setData(bundle);handler.sendMessage(message);}}).start();}}// 进行OCR并返回识别结果private String getOCRResult(TessBaseAPI tessBaseAPI, Bitmap bitmap) {tessBaseAPI.setImage(bitmap);String result -;try{result tessBaseAPI.getUTF8Text();}catch (Exception e){}tessBaseAPI.end();return result;}// 为Tesserect复制(从assets中复制过去)所需的数据private void prepareTess() {try{// 先创建必须的目录File dir getExternalFilesDir(TESS_DATA);if(!dir.exists()){if (!dir.mkdir()) {Toast.makeText(getApplicationContext(), 目录 dir.getPath() 没有创建成功, Toast.LENGTH_SHORT).show();}}// 从assets中复制必须的数据String pathToDataFile dir / DATA_FILENAME;if (!(new File(pathToDataFile)).exists()) {InputStream in getAssets().open(DATA_FILENAME);OutputStream out new FileOutputStream(pathToDataFile);byte[] buff new byte[1024];int len;while ((len in.read(buff)) 0) {out.write(buff, 0, len);}in.close();out.close();}} catch (Exception e) {Log.e(TAG, e.getMessage());}}// 从assets中读取一张Bitmap类型的图片private Bitmap getBitmapFromAssets(Context context, String filename) {Bitmap bitmap null;AssetManager assetManager context.getAssets();try {InputStream is assetManager.open(filename);bitmap BitmapFactory.decodeStream(is);is.close();Log.i(TAG, 图片读取成功。); // Toast.makeText(getApplicationContext(), 图片读取成功。, Toast.LENGTH_SHORT).show();} catch (IOException e) {Log.i(TAG, 图片读取失败。); // Toast.makeText(getApplicationContext(), 图片读取失败。, Toast.LENGTH_SHORT).show();e.printStackTrace();}return bitmap;}// 检查应用所需的权限如不满足则发出权限请求private void checkPermission() {if (ContextCompat.checkSelfPermission(getApplicationContext(),Manifest.permission.READ_EXTERNAL_STORAGE) ! PackageManager.PERMISSION_GRANTED) {ActivityCompat.requestPermissions(TesseractActivity.this,new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 120);}if (ContextCompat.checkSelfPermission(getApplicationContext(),Manifest.permission.WRITE_EXTERNAL_STORAGE) ! PackageManager.PERMISSION_GRANTED) {ActivityCompat.requestPermissions(TesseractActivity.this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 121);}} }
http://www.zqtcl.cn/news/774905/

相关文章:

  • 网站漂浮物怎么做电子商务网站开发实训体会
  • 电商网站建设定制济南网站建设及推广
  • 网站标签化wordpress 输出评论内容 函数
  • 明星个人网站设计汕头网络推广公司
  • 深圳有哪些做网站公司好武夷山建设局网站
  • 怎么设立网站赚广告费一个网站可以做多少关键字
  • 网站刚建好怎么做能让百度收录成都定制网站建
  • thinkphp网站开发技术做电脑租赁网站
  • 网站设计评语中午版wordpress
  • 邢台企业手机网站建设汕头网站制作后缀
  • 微网站后台内容设置做网站语言排名2018
  • 嘉兴网站制作网站建设外贸营销推广平台有哪些
  • 网站开发集广州高端网站定制开发价格
  • 网站开发培训成都网站建设 报价单 doc
  • 苏州哪里有做淘宝网站的WordPress模板博客主题
  • 网站做中转做任务 网站
  • 深圳住房建设局网站网站的建设教程
  • 6免费建站的网站在线建筑设计
  • 哪些网站做任务可以赚钱的建设厅网站如何查询企业信息
  • 深圳网站设计+建设首选深圳市服装网站建设需求分析报告
  • 肥城网站制作浙江省建设厅信息港官网
  • 手机网站建设进度南宁企业网站设计
  • 建设学校网站方案大淘客网站上的推广怎么做
  • 哪个网站可以免费学设计南阳网站建设页面
  • 外贸公司建网站一般多少钱南京网站建设小程
  • 洛阳霞光做网站公司手机编程教学
  • 深圳正规网站建设公司顺德网页制作公司
  • 消防中队网站建设筑云电商网站建设公司
  • 天津网站建设天津中国东盟建设集团有限公司网站
  • 正版传奇手游官方网站宁波建设银行网站首页