Ocr 图文识别技术——基于百度云OCR技术学习与总结

1.百度智能云 控制台  https://console.bce.baidu.com/ai/?fromai=1#/ai/ocr/overview/index  创建应用,生成API Key,Secret Key

2.在应用详情页面下载对应应用的授权文件

3.百度智能云   Android-SDK文档链接:https://cloud.baidu.com/doc/OCR/s/fjwvxzeiy

4.SDK下载地址:http://ai.baidu.com/sdk/#ocr

下面我跟大家讲一下开发步骤。

1.下载sdk

2.依赖sdk以及armeabi到lib目录下

3.下载的sdk里面有一个ocr-ui model,如果需要的话,可以作为model到项目中

4.清单文件添加权限:

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

5.Proguard配置:app——proguard-rules.pro

-keep class com.baidu.ocr.sdk.**{*;}
-dontwarn com.baidu.ocr.**

6.代码中:初始化OCR单例:

OCR.getInstance().initAccessTokenWithAkSk(new OnResultListener<AccessToken>() {@Overridepublic void onResult(AccessToken result) {// 调用成功,返回AccessToken对象String token = result.getAccessToken();}@Overridepublic void onError(OCRError error) {// 调用失败,返回OCRError子类SDKError对象}
}, getApplicationContext(), "您的应用AK", "您的应用SK");

7.功能调用以及回调事件:

@Override
public void onClick(View v) {switch (v.getId()) {case R.id.tv_car://车牌识别Intent intent = new Intent(MainActivity.this, CameraActivity.class);intent.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH,FileUtils.getSaveFile(getApplication()).getAbsolutePath());intent.putExtra(CameraActivity.KEY_CONTENT_TYPE,CameraActivity.CONTENT_TYPE_GENERAL);startActivityForResult(intent, REQUEST_CODE_LICENSE_PLATE);break;case R.id.tv_company://营业执照识别Intent intentCompany = new Intent(MainActivity.this, CameraActivity.class);intentCompany.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH,FileUtils.getSaveFile(getApplication()).getAbsolutePath());intentCompany.putExtra(CameraActivity.KEY_CONTENT_TYPE,CameraActivity.CONTENT_TYPE_GENERAL);startActivityForResult(intentCompany, REQUEST_CODE_BUSINESS_LICENSE);break;case R.id.general_basic://通用文字识别Intent intentGener = new Intent(MainActivity.this, CameraActivity.class);intentGener.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH,FileUtils.getSaveFile(getApplication()).getAbsolutePath());intentGener.putExtra(CameraActivity.KEY_CONTENT_TYPE,CameraActivity.CONTENT_TYPE_GENERAL);startActivityForResult(intentGener, REQUEST_CODE_GENERAL_BASIC);break;case R.id.accurate_basic://通用文字识别(高精度版)Intent intentAccur = new Intent(MainActivity.this, CameraActivity.class);intentAccur.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH,FileUtils.getSaveFile(getApplication()).getAbsolutePath());intentAccur.putExtra(CameraActivity.KEY_CONTENT_TYPE,CameraActivity.CONTENT_TYPE_GENERAL);startActivityForResult(intentAccur, REQUEST_CODE_GENERAL_ENHANCED);break;case R.id.general_location://通用文字识别(含位置信息版)Intent intentGenLoca = new Intent(MainActivity.this, CameraActivity.class);intentGenLoca.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH,FileUtils.getSaveFile(getApplication()).getAbsolutePath());intentGenLoca.putExtra(CameraActivity.KEY_CONTENT_TYPE,CameraActivity.CONTENT_TYPE_GENERAL);startActivityForResult(intentGenLoca, REQUEST_CODE_GENERAL);break;case R.id.accurate_location://通用文字识别(高精度含位置信息版)Intent intentAccuLoca = new Intent(MainActivity.this, CameraActivity.class);intentAccuLoca.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH,FileUtils.getSaveFile(getApplication()).getAbsolutePath());intentAccuLoca.putExtra(CameraActivity.KEY_CONTENT_TYPE,CameraActivity.CONTENT_TYPE_GENERAL);startActivityForResult(intentAccuLoca, REQUEST_CODE_ACCURATE);break;case R.id.general_enhance://通用文字识别(含生僻字版)Intent intentEnhance = new Intent(MainActivity.this, CameraActivity.class);intentEnhance.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH,FileUtils.getSaveFile(getApplication()).getAbsolutePath());intentEnhance.putExtra(CameraActivity.KEY_CONTENT_TYPE,CameraActivity.CONTENT_TYPE_GENERAL);startActivityForResult(intentEnhance, REQUEST_CODE_GENERAL_ENHANCED);break;case R.id.general_webimage://网络图片文字识别Intent intentWeb = new Intent(MainActivity.this, CameraActivity.class);intentWeb.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH,FileUtils.getSaveFile(getApplication()).getAbsolutePath());intentWeb.putExtra(CameraActivity.KEY_CONTENT_TYPE,CameraActivity.CONTENT_TYPE_GENERAL);startActivityForResult(intentWeb, REQUEST_CODE_GENERAL_WEBIMAGE);break;case R.id.idcard://身份证识别Intent intentIdCard = new Intent(MainActivity.this, IDCardActivity.class);startActivity(intentIdCard);break;case R.id.bankcard://银行卡识别Intent intentBank = new Intent(MainActivity.this, CameraActivity.class);intentBank.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH,FileUtils.getSaveFile(getApplication()).getAbsolutePath());intentBank.putExtra(CameraActivity.KEY_CONTENT_TYPE,CameraActivity.CONTENT_TYPE_BANK_CARD);startActivityForResult(intentBank, REQUEST_CODE_BANKCARD);break;case R.id.driving_license://驾驶证识别Intent intentDirver = new Intent(MainActivity.this, CameraActivity.class);intentDirver.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH,FileUtils.getSaveFile(getApplication()).getAbsolutePath());intentDirver.putExtra(CameraActivity.KEY_CONTENT_TYPE,CameraActivity.CONTENT_TYPE_GENERAL);startActivityForResult(intentDirver, REQUEST_CODE_VEHICLE_LICENSE);break;case R.id.vehicle_license://行驶证识别Intent intentVehicle = new Intent(MainActivity.this, CameraActivity.class);intentVehicle.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH,FileUtils.getSaveFile(getApplication()).getAbsolutePath());intentVehicle.putExtra(CameraActivity.KEY_CONTENT_TYPE,CameraActivity.CONTENT_TYPE_GENERAL);startActivityForResult(intentVehicle, REQUEST_CODE_DRIVING_LICENSE);break;case R.id.receipt://通用票据识别Intent intentReceipt = new Intent(MainActivity.this, CameraActivity.class);intentReceipt.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH,FileUtils.getSaveFile(getApplication()).getAbsolutePath());intentReceipt.putExtra(CameraActivity.KEY_CONTENT_TYPE,CameraActivity.CONTENT_TYPE_GENERAL);startActivityForResult(intentReceipt, REQUEST_CODE_RECEIPT);break;case R.id.passport://护照识别Intent intentPassport = new Intent(MainActivity.this, CameraActivity.class);intentPassport.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH,FileUtils.getSaveFile(getApplication()).getAbsolutePath());intentPassport.putExtra(CameraActivity.KEY_CONTENT_TYPE,CameraActivity.CONTENT_TYPE_PASSPORT);startActivityForResult(intentPassport, REQUEST_CODE_PASSPORT);break;case R.id.numbers://数字识别Intent intentNum = new Intent(MainActivity.this, CameraActivity.class);intentNum.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH,FileUtils.getSaveFile(getApplication()).getAbsolutePath());intentNum.putExtra(CameraActivity.KEY_CONTENT_TYPE,CameraActivity.CONTENT_TYPE_GENERAL);startActivityForResult(intentNum, REQUEST_CODE_NUMBERS);break;case R.id.qrcode://二维码识别Intent intentCode = new Intent(MainActivity.this, CameraActivity.class);intentCode.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH,FileUtils.getSaveFile(getApplication()).getAbsolutePath());intentCode.putExtra(CameraActivity.KEY_CONTENT_TYPE,CameraActivity.CONTENT_TYPE_GENERAL);startActivityForResult(intentCode, REQUEST_CODE_QRCODE);break;case R.id.business_card://名片识别Intent intentBusiness = new Intent(MainActivity.this, CameraActivity.class);intentBusiness.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH,FileUtils.getSaveFile(getApplication()).getAbsolutePath());intentBusiness.putExtra(CameraActivity.KEY_CONTENT_TYPE,CameraActivity.CONTENT_TYPE_GENERAL);startActivityForResult(intentBusiness, REQUEST_CODE_BUSINESSCARD);break;case R.id.handwritting://手写识别Intent intentHandwrite = new Intent(MainActivity.this, CameraActivity.class);intentHandwrite.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH,FileUtils.getSaveFile(getApplication()).getAbsolutePath());intentHandwrite.putExtra(CameraActivity.KEY_CONTENT_TYPE,CameraActivity.CONTENT_TYPE_GENERAL);startActivityForResult(intentHandwrite, REQUEST_CODE_HANDWRITING);break;case R.id.lottery://彩票识别Intent intentLottery = new Intent(MainActivity.this, CameraActivity.class);intentLottery.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH,FileUtils.getSaveFile(getApplication()).getAbsolutePath());intentLottery.putExtra(CameraActivity.KEY_CONTENT_TYPE,CameraActivity.CONTENT_TYPE_GENERAL);startActivityForResult(intentLottery, REQUEST_CODE_LOTTERY);break;case R.id.vat_invoice://增值税发票识别Intent intentVat = new Intent(MainActivity.this, CameraActivity.class);intentVat.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH,FileUtils.getSaveFile(getApplication()).getAbsolutePath());intentVat.putExtra(CameraActivity.KEY_CONTENT_TYPE,CameraActivity.CONTENT_TYPE_GENERAL);startActivityForResult(intentVat, REQUEST_CODE_VATINVOICE);break;case R.id.custom://自定义模板识别Intent intentCustom = new Intent(MainActivity.this, CameraActivity.class);intentCustom.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH,FileUtils.getSaveFile(getApplication()).getAbsolutePath());intentCustom.putExtra(CameraActivity.KEY_CONTENT_TYPE,CameraActivity.CONTENT_TYPE_GENERAL);startActivityForResult(intentCustom, REQUEST_CODE_CUSTOM);break;}
}@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);// 识别成功回调,通用文字识别(含位置信息)if (requestCode == REQUEST_CODE_GENERAL && resultCode == Activity.RESULT_OK) {RecognizeService.recGeneral(this, FileUtils.getSaveFile(getApplicationContext()).getAbsolutePath(),new RecognizeService.ServiceListener() {@Overridepublic void onResult(String result) {alertText(result);}});}// 识别成功回调,通用文字识别(含位置信息高精度版)if (requestCode == REQUEST_CODE_ACCURATE && resultCode == Activity.RESULT_OK) {RecognizeService.recAccurate(this, FileUtils.getSaveFile(getApplicationContext()).getAbsolutePath(),new RecognizeService.ServiceListener() {@Overridepublic void onResult(String result) {alertText(result);}});}// 识别成功回调,通用文字识别if (requestCode == REQUEST_CODE_GENERAL_BASIC && resultCode == Activity.RESULT_OK) {RecognizeService.recGeneralBasic(this, FileUtils.getSaveFile(getApplicationContext()).getAbsolutePath(),new RecognizeService.ServiceListener() {@Overridepublic void onResult(String result) {alertText(result);}});}// 识别成功回调,通用文字识别(高精度版)if (requestCode == REQUEST_CODE_ACCURATE_BASIC && resultCode == Activity.RESULT_OK) {RecognizeService.recAccurateBasic(this, FileUtils.getSaveFile(getApplicationContext()).getAbsolutePath(),new RecognizeService.ServiceListener() {@Overridepublic void onResult(String result) {alertText(result);}});}// 识别成功回调,通用文字识别(含生僻字版)if (requestCode == REQUEST_CODE_GENERAL_ENHANCED && resultCode == Activity.RESULT_OK) {RecognizeService.recGeneralEnhanced(this, FileUtils.getSaveFile(getApplicationContext()).getAbsolutePath(),new RecognizeService.ServiceListener() {@Overridepublic void onResult(String result) {alertText(result);}});}// 识别成功回调,网络图片文字识别if (requestCode == REQUEST_CODE_GENERAL_WEBIMAGE && resultCode == Activity.RESULT_OK) {RecognizeService.recWebimage(this, FileUtils.getSaveFile(getApplicationContext()).getAbsolutePath(),new RecognizeService.ServiceListener() {@Overridepublic void onResult(String result) {alertText(result);}});}// 识别成功回调,银行卡识别if (requestCode == REQUEST_CODE_BANKCARD && resultCode == Activity.RESULT_OK) {RecognizeService.recBankCard(this, FileUtils.getSaveFile(getApplicationContext()).getAbsolutePath(),new RecognizeService.ServiceListener() {@Overridepublic void onResult(String result) {alertText(result);}});}// 识别成功回调,行驶证识别if (requestCode == REQUEST_CODE_VEHICLE_LICENSE && resultCode == Activity.RESULT_OK) {RecognizeService.recVehicleLicense(this, FileUtils.getSaveFile(getApplicationContext()).getAbsolutePath(),new RecognizeService.ServiceListener() {@Overridepublic void onResult(String result) {alertText(result);}});}// 识别成功回调,驾驶证识别if (requestCode == REQUEST_CODE_DRIVING_LICENSE && resultCode == Activity.RESULT_OK) {RecognizeService.recDrivingLicense(this, FileUtils.getSaveFile(getApplicationContext()).getAbsolutePath(),new RecognizeService.ServiceListener() {@Overridepublic void onResult(String result) {alertText(result);}});}// 识别成功回调,车牌识别if (requestCode == REQUEST_CODE_LICENSE_PLATE && resultCode == Activity.RESULT_OK) {RecognizeService.recLicensePlate(this, FileUtils.getSaveFile(getApplicationContext()).getAbsolutePath(),new RecognizeService.ServiceListener() {@Overridepublic void onResult(String result) {alertText(result);}});}// 识别成功回调,营业执照识别if (requestCode == REQUEST_CODE_BUSINESS_LICENSE && resultCode == Activity.RESULT_OK) {RecognizeService.recBusinessLicense(this, FileUtils.getSaveFile(getApplicationContext()).getAbsolutePath(),new RecognizeService.ServiceListener() {@Overridepublic void onResult(String result) {alertText(result);}});}// 识别成功回调,通用票据识别if (requestCode == REQUEST_CODE_RECEIPT && resultCode == Activity.RESULT_OK) {RecognizeService.recReceipt(this, FileUtils.getSaveFile(getApplicationContext()).getAbsolutePath(),new RecognizeService.ServiceListener() {@Overridepublic void onResult(String result) {alertText(result);}});}// 识别成功回调,护照if (requestCode == REQUEST_CODE_PASSPORT && resultCode == Activity.RESULT_OK) {RecognizeService.recPassport(this, FileUtils.getSaveFile(getApplicationContext()).getAbsolutePath(),new RecognizeService.ServiceListener() {@Overridepublic void onResult(String result) {alertText(result);}});}// 识别成功回调,二维码if (requestCode == REQUEST_CODE_QRCODE && resultCode == Activity.RESULT_OK) {RecognizeService.recQrcode(this, FileUtils.getSaveFile(getApplicationContext()).getAbsolutePath(),new RecognizeService.ServiceListener() {@Overridepublic void onResult(String result) {alertText(result);}});}// 识别成功回调,彩票if (requestCode == REQUEST_CODE_LOTTERY && resultCode == Activity.RESULT_OK) {RecognizeService.recLottery(this, FileUtils.getSaveFile(getApplicationContext()).getAbsolutePath(),new RecognizeService.ServiceListener() {@Overridepublic void onResult(String result) {alertText(result);}});}// 识别成功回调,增值税发票if (requestCode == REQUEST_CODE_VATINVOICE && resultCode == Activity.RESULT_OK) {RecognizeService.recVatInvoice(this, FileUtils.getSaveFile(getApplicationContext()).getAbsolutePath(),new RecognizeService.ServiceListener() {@Overridepublic void onResult(String result) {alertText(result);}});}// 识别成功回调,数字if (requestCode == REQUEST_CODE_NUMBERS && resultCode == Activity.RESULT_OK) {RecognizeService.recNumbers(this, FileUtils.getSaveFile(getApplicationContext()).getAbsolutePath(),new RecognizeService.ServiceListener() {@Overridepublic void onResult(String result) {alertText(result);}});}// 识别成功回调,手写if (requestCode == REQUEST_CODE_HANDWRITING && resultCode == Activity.RESULT_OK) {RecognizeService.recHandwriting(this, FileUtils.getSaveFile(getApplicationContext()).getAbsolutePath(),new RecognizeService.ServiceListener() {@Overridepublic void onResult(String result) {alertText(result);}});}// 识别成功回调,名片if (requestCode == REQUEST_CODE_BUSINESSCARD && resultCode == Activity.RESULT_OK) {RecognizeService.recBusinessCard(this, FileUtils.getSaveFile(getApplicationContext()).getAbsolutePath(),new RecognizeService.ServiceListener() {@Overridepublic void onResult(String result) {alertText(result);}});}// 识别成功回调,自定义模板if (requestCode == REQUEST_CODE_CUSTOM && resultCode == Activity.RESULT_OK) {RecognizeService.recCustom(this, FileUtils.getSaveFile(getApplicationContext()).getAbsolutePath(),new RecognizeService.ServiceListener() {@Overridepublic void onResult(String result) {alertText(result);}});}
}

8.释放内存资源

@Override
protected void onDestroy() {super.onDestroy();// 释放内存资源OCR.getInstance(this).release();
}

9.demo链接:https://download.csdn.net/download/qq_36692282/11709460

10百度云这次不是全部免费的,只有200次一天的免费,之后要收费的,我 还以为 良心了额,开源了,小失落啊

Ocr 图文识别技术——基于百度云OCR技术学习与总结相关推荐

  1. Android Studio实现文字识别(基于百度云OCR)

    前言:之前配置好Android Studio后,一直在参与课程的两个项目,未能及时更新,最近期末考试,可能又要断更一段时间.今天验收好,跟大家分享一下其中我负责的相机相册调用以及文字识别的部分,大家根 ...

  2. 用Python实现最简单的文字识别:基于百度云文字识别API

    Python版本:3.6.5 百度云提供的文字识别技术,准确率还是非常高的,而且每天还有5w次免费的调用量,对于用来学习或者偶尔拿来用用,已经完全足够了.文章提供一个模板,稍加修改就可以直接套用.注释 ...

  3. python百度云ocr文字识别软件_基于百度云的OCR识别(Python)

    2019年7月3日早上,在百度AI开发者大会上,一个来自山西的青年,将一瓶矿泉水浇在了同样来自山西的李彦宏身上. 可以回顾一下 https://b23.tv/av57665929/p1 ,着实让人一惊 ...

  4. python:ocr图文识别(百度智能云API文字识别)

    文章目录 前言 一.创建账号和应用 二.具体步骤 1.第一种方式: 2.第二种方式 总结 前言 说道OCR图文识别,其实python也有在自己的库(以下是我了解,应该还有很多): 第一个 tesser ...

  5. 微信小程序基于百度云实现图文识别(胎教级教程)

    前言 最近开发微信小程序用到了图文识别的功能,刚开始还觉得很难,但其实配合一些第三方api接入,实现这个功能还是很简单的,下面我们一起来看看要怎么实现这个小功能吧. 1.首先我们需要注册一个百度云账号 ...

  6. Java实现百度云OCR接口识别图片文字信息(也包含身份证,银行卡识别,更新添加通用票据识别)

    参考: https://blog.csdn.net/weixin_40165004/article/details/82632229 1.需求背景 因项目需求,需要提取身份证.发票(9/16更新内容) ...

  7. 百度云 OCR 识别图片验证码

    操作系统:Mac OS Python版本:3.7.2 OCR:百度云 遇到的问题: API测试过程中,遇到API Resopnse 为图片验证码的情况,需要对图片进行识别得到text code,进行断 ...

  8. 关于调用百度云OCR身份证识别接口,用Java语言,识别结果缺少身份证号码的问题解决

    问题描述: 最近项目系统开发,使用到了相关证件的信息提取.识别,由于是学校科研使用,选择了百度云OCR文字识别的API.具体的相关识别身份等证件的代码将在另一篇文章中叙述,最近真的太忙了,草稿箱中还有 ...

  9. 基于翔云OCR云平台的人脸识别(1)

    基于翔云OCR云平台的人脸识别 本节通过翔云OCR云平台来实现人脸识别.调用人脸对比API,通过https post方式向云服务器提交两张需要对比的图片Base64流以及其他信息,云服务器处理后返回判 ...

最新文章

  1. html5表单实例元素,HTML5新表单元素的图文实例-
  2. bootstrap 右对齐样式_Bootstrap的文本处理
  3. 从Chrome源码看audio/video流媒体实现二
  4. 如何在运行时使用SAP Commerce Cloud backoffice直接给类型增添新属性
  5. 解决$ is not define
  6. 分形之希尔伯特-皮亚诺(Hilbert-Peano)曲线
  7. c# 定义operator运算符
  8. micropython logging文档
  9. rest framework 权限
  10. Zookeeper案例之分布式全局唯一ID生成
  11. canvas画钟表demo
  12. IAR for ARM介绍、下载、安装与注册
  13. 养生秘诀呼吸吐纳真的可以养生嘛?
  14. python 绘制RGB三维颜色空间色谱图(已实现)
  15. FPGA vs ASIC
  16. Flex 桌面应用 adl 调试模式运行
  17. 钉钉小程序的坑 么有开启通讯录权限,导致后台报错“没有调用该接口的权限”
  18. MFC应用程序设计(第二版)学习笔记
  19. nyoj-741-“数学家“ST
  20. 3GPP TS 23501-g51 中英文对照 | 4.4.5 Application Triggering Services

热门文章

  1. 为什么要学习 Linux?
  2. Python数据分析高薪实战第一天 python基础与项目环境搭建
  3. 计算机组成原理实验四 微程序控制器实验报告
  4. Vue 项目中使用Lodop进行打印
  5. vue +springboot项目部署(nginx)
  6. 人生到处知何似,应似飞鸿踏雪泥
  7. 35岁,转行AI年薪100万,牛逼的人生无需解释
  8. 【Windows】win10 禁止 IE 自动跳转到 Edge
  9. numpy第三章-索引器、多级索引
  10. android 经典rpg,安卓TOP10:SE经典RPG游戏《最终幻想7》领衔