基于百度的文字识别实现简单文字识别样例(Kotlin实现)
1.概述
本篇博文是基于百度文字识别做的一款简单印刷体文字识别,更多类型的文字识别还请祥看:百度文字识别文档
适用Android6.0及以上
Kotlin初学者,可能有些地方不太规范,还请各位读者多多包涵
感谢文中的两位博主
2.效果
3.准备工作
首先需要准备注册以及获取百度文字识别的ak、sk,具体的请看这位博主
Android 使用百度云文字识别之实现通用文字识别
我的代码也是基于他的java有所修改的
4.代码说明
代码量不多,也比较好懂
首先是Android6.0以后需要动态去请求用户给予文件操作权限
/**
* 权限检查,Android6.0以后需要
*/
private fun check() {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
val check = checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)
if(check == PackageManager.PERMISSION_DENIED){
requestPermissions(arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.CAMERA),REQUESTCODE)
}
}
}
权限检查后就有系统回调
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if (requestCode == REQUESTCODE){
if(permissions[0] == Manifest.permission.WRITE_EXTERNAL_STORAGE && grantResults[0] == PackageManager.PERMISSION_GRANTED){
Toast.makeText(applicationContext,"存储卡授权成功",Toast.LENGTH_LONG).show()
}else{
Toast.makeText(applicationContext,"授权失败",Toast.LENGTH_LONG).show()
}
if(permissions[1] == Manifest.permission.CAMERA && grantResults[0] == PackageManager.PERMISSION_GRANTED){
Toast.makeText(applicationContext,"媒体库授权成功",Toast.LENGTH_LONG).show()
}else{
Toast.makeText(applicationContext,"授权失败",Toast.LENGTH_LONG).show()
}
}
}
权限解决后就是拍照初始化,拍照更详细更多功能请看这位博主:
Android 选择图片、上传图片之PictureSelector
if(hasGotToken) {//如果通过AK、SK获取token就拍照
PictureSelector.create(this)
.openCamera(PictureMimeType.ofImage())
.previewImage(false)
.isCamera(true)
.imageFormat(PictureMimeType.PNG)
.enableCrop(false)
.compress(true)
.glideOverride(160,160)
.withAspectRatio(16,9)
.freeStyleCropEnabled(true)
.selectionMedia(selectList)
.minimumCompressSize(100)
.forResult(PictureConfig.CHOOSE_REQUEST)
dialog?.show()
}