1、登录百度AI平台(https://ai.baidu.com/),下载license文件

包名填写内容:

下载好的文件夹内包含四个文件

(OCR-Android-SDK.md文件里有使用说明)

(1)将libs文件夹下的ocr-sdk.jar拷贝到工程目录中

找到工程存储的文件夹,依次打开app -> libs -> 将jar包拷贝到libs文件夹下

(2)加入工程依赖

File -> Project Structure -> Dependencies -> (在Modules栏)选中app -> (在Declared Dependencies栏)点击“+” -> 选择“jar dependence”

选中刚才导入的jar

(3)将libs目录下armeabi,arm64-v8a,armeabi-v7a,x86文件夹按需添加到android studio工程src/main/jniLibs目录中

(4)将在百度平台上下载下来的api.license文件添加到工程的assets文件夹

找到工程所在的文件夹,依次打开app -> src -> main-> 新建文件夹 assets -> 将license文件放在assets文件夹中

2、在AndroidManifest.xml中添加以下权限

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

3、在oncreate()方法里初始化OCR单例

//初始化OCR单例/OCR.getInstance(getApplication()).initAccessToken(new OnResultListener() {public void onResult(AccessToken result) {// 调用成功,getApplication()返回AccessToken对象String token = result.getAccessToken();}@Overridepublic void onResult(Object o) {}@Overridepublic void onError(OCRError error) {// 调用失败,返回OCRError子类SDKError对象} }, getApplicationContext());
//

在oncreate()方法里定义按钮的点击事件

gray=findViewById(R.id.gray);gray.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v) {//convert2Gray();//ocrNormal();String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());File outImage=new File(getExternalCacheDir(),timeStamp+"output_image.jpg");try{if(outImage.exists()){outImage.delete();}outImage.createNewFile();}catch (IOException e){e.printStackTrace();}if(Build.VERSION.SDK_INT>=24){uri= FileProvider.getUriForFile(MainActivity.this,"com.example.demo_tryopencv_2.fileprovider",outImage);}else{uri=Uri.fromFile(outImage);}Intent intent=new Intent("android.media.action.IMAGE_CAPTURE");intent.putExtra(MediaStore.EXTRA_OUTPUT,uri);startActivityForResult(intent,TAKE_POTHO);}});/

代码展示(先调用摄像头拍摄,再将拍摄图片用来识别文字)

 /*** 拍照*/@Overrideprotected void onActivityResult(int requestCode,int resultCode,Intent data){if (Build.VERSION.SDK_INT >= 23) {int REQUEST_CODE_CONTACT = 101;String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE};//验证是否许可权限for (String str : permissions) {if (this.checkSelfPermission(str) != PackageManager.PERMISSION_GRANTED) {//申请权限this.requestPermissions(permissions, REQUEST_CODE_CONTACT);}}}super.onActivityResult(requestCode,resultCode,data);switch (requestCode){case TAKE_POTHO:if(resultCode==RESULT_OK){try{Bitmap bitmap= BitmapFactory.decodeStream(getContentResolver().openInputStream(uri));pic=(ImageView)findViewById(R.id.pic);pic.setImageBitmap(bitmap);ocrNormal(bitmap);}catch (FileNotFoundException e){e.printStackTrace();}}break;default:break;}}public  File compressImage(Bitmap bitmap) {ByteArrayOutputStream baos = new ByteArrayOutputStream();bitmap.compress(Bitmap.CompressFormat.JPEG, 80, baos);//质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中/* int options = 100;while (baos.toByteArray().length / 1024 > 20) {  //循环判断如果压缩后图片是否大于20kb,大于继续压缩 友盟缩略图要求不大于18kbbaos.reset();//重置baos即清空baosoptions -= 10;//每次都减少10bitmap.compress(Bitmap.CompressFormat.JPEG, options, baos);//这里压缩options%,把压缩后的数据存放到baos中long length = baos.toByteArray().length;}*/if (Build.VERSION.SDK_INT >= 23) {int REQUEST_CODE_CONTACT = 101;String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE};//验证是否许可权限for (String str : permissions) {if (this.checkSelfPermission(str) != PackageManager.PERMISSION_GRANTED) {//申请权限this.requestPermissions(permissions, REQUEST_CODE_CONTACT);}}}SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");Date date = new Date(System.currentTimeMillis());//图片名String filename = format.format(date);File file = new File(Environment.getExternalStorageDirectory(), filename + ".png");try {FileOutputStream fos = new FileOutputStream(file);try {fos.write(baos.toByteArray());fos.flush();fos.close();} catch (IOException e) {e.printStackTrace();}} catch (FileNotFoundException e) {e.printStackTrace();}Log.d("=-=-=-=-=-", "compressImage: " + file);// recycleBitmap(bitmap);return file;}private void ocrNormal(Bitmap bitmap) {text=findViewById(R.id.text);// 通用文字识别参数设置GeneralBasicParams param = new GeneralBasicParams();param.setDetectDirection(true);//这里调用的是本地文件,使用时替换成你的本地文件File file;ByteArrayOutputStream baos = new ByteArrayOutputStream();bitmap.compress(Bitmap.CompressFormat.JPEG, 80, baos);//质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");Date date = new Date(System.currentTimeMillis());//图片名String filename = format.format(date);file = new File(Environment.getExternalStorageDirectory(), filename + ".png");try {FileOutputStream fos = new FileOutputStream(file);try {fos.write(baos.toByteArray());fos.flush();fos.close();} catch (IOException e) {e.printStackTrace();}} catch (FileNotFoundException e) {e.printStackTrace();}param.setImageFile(file);// 调用通用文字识别服务OCR.getInstance(getApplication()).recognizeAccurateBasic(param, new OnResultListener<GeneralResult>() {@Overridepublic void onResult(GeneralResult result) {StringBuilder sb = new StringBuilder();// 调用成功,返回GeneralResult对象for (WordSimple wordSimple : result.getWordList()) {// wordSimple不包含位置信息WordSimple word = wordSimple;sb.append(word.getWords());//sb.append("\n");}//file.delete();//String返回String ocrResult = sb.toString();Log.v("4","===================================="+ocrResult);// json格式返回字符串result.getJsonRes())// text.setText(ocrResult);text.setText("成功了一大半"+ocrResult+"lalala");}@Overridepublic void onError(OCRError error) {// 调用失败,返回OCRError对象text.setText("出错啦");Log.v("1","================================================"+error.getLocalizedMessage());Log.v("2","================================================"+error.getMessage());Log.v("3","================================================"+error.getErrorCode());}});}

Android Studio调用百度API(图片文字识别)相关推荐

  1. 一篇文章搞定百度OCR图片文字识别API

    一篇文章搞定百度OCR图片文字识别API https://www.jianshu.com/p/7905d3b12104 转载于:https://www.cnblogs.com/chongdongxia ...

  2. 微信小程序编程(1)——使用百度API编写文字识别小程序

    编写思路 要使用百度等第三方API,我们得使用微信小程序提供的wx.request来向第三方平台发起请求,我们看到wx.request的参数属性里面url是必填项,接着我们打开和百度AI平台里面的通用 ...

  3. Android Studio调用百度地图(二):实现地图显示后台定位和步行导航

    先看一下运行效果: 实现功能:后台定位+步行导航(可通过长按屏幕自定义终点,起点为定位点) 后台定位即当程序在后台时依旧执行定位功能,步行导航支持30米-50千米范围内的导航 一 导入SDK并配置相关 ...

  4. 百度api做文字识别

    利用百度api进行文字识别 文章目录 利用百度api进行文字识别 前言 一.百度文字识别? 二.使用方法 1.参考官方文档自己写 2.我自己的代码记录 三.使用情况 当然也有一些问题: 四.总结 注意 ...

  5. Android Studio调用python读取图片(使用服务器paddlehub处理图片)

    Android Studio调用python读取图片 一.主要任务 二.环境配置 1.创建一个android studio项目 2.配置项目gradle 3.配置app下的gradle 三.demo测 ...

  6. python3调用百度API完成人脸识别,检测人种-年龄-性别-颜值-眼镜

    https://ai.baidu.com/docs#/Face-Detect/top 这个是百度人脸识别api 参考博客:https://blog.csdn.net/qq_38412868/artic ...

  7. html5d调用百度语音,调用百度API,文字转语音

    前言 文字转语音,运用在什么场景了?一般后台管理系统会用到,提示管理员有"新的订单"."新的任务"等等,管理员可以马上收到,并及时处理.就好比,在餐厅,经常会听 ...

  8. Python实现调用百度API翻译文字

    调用百度API翻译文字 最近复制别人的代码实现百度API翻译文字,总是报错: {'error_code': '52003', 'error_msg': 'UNAUTHORIZED USER'} 后来发 ...

  9. Android集成百度OCR图片文字识别——总结

    近期由于工作内容的需要,我要给项目集成一个图片文字识别功能,据说百度的不错,所以今天写一个关于百度OCR的集成总结,以便以后再次使用不用去看官方文档. 首先肯定是要在百度管理平台注册账号并登录,然后照 ...

最新文章

  1. 每日一皮:当你修bug时,是否碰到过这种场景...
  2. 在 Rss Bandit 和 SharpDevelop 之间的权衡
  3. Unity3D shaderLab
  4. MyEclipse导入jquery-1.8.0.min.js等文件报错的解决方案
  5. 2-SAT适定性(Satisfiability)问题知识点详解
  6. Controller的返回值
  7. C++中的 .h 和 .cpp 区别详解
  8. 如何获取网页付费隐藏链接_如何将SEO变成可衡量的收入来源
  9. 【August】百度运维+测试面试
  10. defer 和 async 区别
  11. cnblogs今天开通了!
  12. 编码的奥秘:电筒密谈
  13. Debian下安装万兆网卡驱动
  14. python调用默认播放器_在PotPlayer和MPV挂载SVP脚本进行补帧的部署方法
  15. unity资源管理器error refreshing assets
  16. NLP会议介绍 2019
  17. 网易邮箱阻止一次非法访问解除方法
  18. 用c#开发Android应用(二)——运行Hello World!
  19. POJ 2210 Metric Time G++
  20. ASP.NET与HTML的关系理解

热门文章

  1. 计算机专业学生如何选择IT认证
  2. mybatis-plus wrapper gt lt ge le的用法
  3. 【iOS】—— 知乎日报第一周遇到的问题
  4. 谷歌联合佐治亚州为小企业免费建站
  5. Java实现阿里云OSS上传文件
  6. 模拟高并发测试的几种方式
  7. lol和dota2哪个好玩
  8. Spark知识点总结大全
  9. 使用jQuery实现图片轮播
  10. 使用 satis 结合 gitlab 搭建 composer 私有包仓库