Ocr 图文识别技术——基于百度云OCR技术学习与总结
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技术学习与总结相关推荐
- Android Studio实现文字识别(基于百度云OCR)
前言:之前配置好Android Studio后,一直在参与课程的两个项目,未能及时更新,最近期末考试,可能又要断更一段时间.今天验收好,跟大家分享一下其中我负责的相机相册调用以及文字识别的部分,大家根 ...
- 用Python实现最简单的文字识别:基于百度云文字识别API
Python版本:3.6.5 百度云提供的文字识别技术,准确率还是非常高的,而且每天还有5w次免费的调用量,对于用来学习或者偶尔拿来用用,已经完全足够了.文章提供一个模板,稍加修改就可以直接套用.注释 ...
- python百度云ocr文字识别软件_基于百度云的OCR识别(Python)
2019年7月3日早上,在百度AI开发者大会上,一个来自山西的青年,将一瓶矿泉水浇在了同样来自山西的李彦宏身上. 可以回顾一下 https://b23.tv/av57665929/p1 ,着实让人一惊 ...
- python:ocr图文识别(百度智能云API文字识别)
文章目录 前言 一.创建账号和应用 二.具体步骤 1.第一种方式: 2.第二种方式 总结 前言 说道OCR图文识别,其实python也有在自己的库(以下是我了解,应该还有很多): 第一个 tesser ...
- 微信小程序基于百度云实现图文识别(胎教级教程)
前言 最近开发微信小程序用到了图文识别的功能,刚开始还觉得很难,但其实配合一些第三方api接入,实现这个功能还是很简单的,下面我们一起来看看要怎么实现这个小功能吧. 1.首先我们需要注册一个百度云账号 ...
- Java实现百度云OCR接口识别图片文字信息(也包含身份证,银行卡识别,更新添加通用票据识别)
参考: https://blog.csdn.net/weixin_40165004/article/details/82632229 1.需求背景 因项目需求,需要提取身份证.发票(9/16更新内容) ...
- 百度云 OCR 识别图片验证码
操作系统:Mac OS Python版本:3.7.2 OCR:百度云 遇到的问题: API测试过程中,遇到API Resopnse 为图片验证码的情况,需要对图片进行识别得到text code,进行断 ...
- 关于调用百度云OCR身份证识别接口,用Java语言,识别结果缺少身份证号码的问题解决
问题描述: 最近项目系统开发,使用到了相关证件的信息提取.识别,由于是学校科研使用,选择了百度云OCR文字识别的API.具体的相关识别身份等证件的代码将在另一篇文章中叙述,最近真的太忙了,草稿箱中还有 ...
- 基于翔云OCR云平台的人脸识别(1)
基于翔云OCR云平台的人脸识别 本节通过翔云OCR云平台来实现人脸识别.调用人脸对比API,通过https post方式向云服务器提交两张需要对比的图片Base64流以及其他信息,云服务器处理后返回判 ...
最新文章
- html5表单实例元素,HTML5新表单元素的图文实例-
- bootstrap 右对齐样式_Bootstrap的文本处理
- 从Chrome源码看audio/video流媒体实现二
- 如何在运行时使用SAP Commerce Cloud backoffice直接给类型增添新属性
- 解决$ is not define
- 分形之希尔伯特-皮亚诺(Hilbert-Peano)曲线
- c# 定义operator运算符
- micropython logging文档
- rest framework 权限
- Zookeeper案例之分布式全局唯一ID生成
- canvas画钟表demo
- IAR for ARM介绍、下载、安装与注册
- 养生秘诀呼吸吐纳真的可以养生嘛?
- python 绘制RGB三维颜色空间色谱图(已实现)
- FPGA vs ASIC
- Flex 桌面应用 adl 调试模式运行
- 钉钉小程序的坑 么有开启通讯录权限,导致后台报错“没有调用该接口的权限”
- MFC应用程序设计(第二版)学习笔记
- nyoj-741-“数学家“ST
- 3GPP TS 23501-g51 中英文对照 | 4.4.5 Application Triggering Services