更新记录
1.0.1(2025-07-11)
1.0.0(2025-07-11)
平台兼容性
uni-app
Vue2 |
Vue3 |
Chrome |
Safari |
app-vue |
app-nvue |
Android |
iOS |
鸿蒙 |
√ |
√ |
- |
- |
- |
- |
5.0 |
12 |
× |
微信小程序 |
支付宝小程序 |
抖音小程序 |
百度小程序 |
快手小程序 |
京东小程序 |
鸿蒙元服务 |
QQ小程序 |
飞书小程序 |
快应用-华为 |
快应用-联盟 |
× |
× |
× |
× |
× |
× |
- |
× |
× |
× |
× |
uni-app x
Chrome |
Safari |
Android |
iOS |
鸿蒙 |
微信小程序 |
- |
- |
5.0 |
12 |
× |
× |
百度OCR识别插件
开发文档
UTS 语法
UTS API插件
UTS uni-app兼容模式组件
UTS 标准模式组件
Hello UTS
特别提醒
- 购买本插件前,请先试用、并充分自测后再购买,购买后无法退款;
- 如有使用上的疑问、bug,可以进交流群联系作者;
- 结合文档和示例代码集成使用;
- 试用必须先打基座、试用必须先打基座、试用必须先打基座重要事情说三遍;
- 本插件支持uniapp/uniapp-x项目,支持vue2/vue3,支持iOS、Android
- 本插件默认您已在百度文字识别创建了应用并已下载了授权文件(License文件)或API Key(简称AK),Secret Key(简称SK),注意这里申请这些文件的包名和签名证书必须和后续项目打包时一致,iOS则Bubdle ID必须与后续打包的一直,否则会导致授权失败。
- 插件集成后必须打自定义基座才有效
插件功能介绍
- 本插件基于百度OCR文字识别SDK封装的uts插件,支持iOS、Android。uniapp/uniapp-x,vue2/vue3。
- 支持身份证、身份证自动识别、文字、驾驶证、行驶证、车牌、二维码、VIN码、试卷分析、名片、手写文字。。。常规场景识别,更多场景见下表识别类型。
插件使用
- 插件首页试用选择需要集成的项目导入插件
- 将授权文件放入对应位置(如果不是通过授权文件鉴权则可跳过这步),iOS:放在uni_modules/ly-uts-bdocr/utssdk/app-ios/Resources文件夹下名称必须为aip.license。Android:放在uni_modules/ly-uts-bdocr/utssdk/app-android/assets/文件夹下名称必须为aip.license
- 导入插件
- 打自定义基座调试
<script>
//插件首页点击试用,选择试用项目。在试用项目<script>中导入插件。
import * as BDOcr from '../../uni_modules/ly-uts-bdocr'
...
</script>
鉴权
授权res.code鉴权状态码 10000表示鉴权成功,其他状态码可参照百度文字识别官网说明。
//uniapp
BDOcr.auth({
type:"LicenseFile",//授权类型
authHandler: (res) => { //授权回调
console.log(`状态码:${res.code}--token:${res.token}---描述信息:${res.meg}`);
}
})
//uniapp-x
BDOcr.auth({
type: "LicenseFile",
authHandler: (res) => {
console.log(`状态码:${res.code}--token:${res.token}---描述信息:${res.meg}`);
}
} as BDOcr.AuthOptions)
授权参数说明:
参数 |
值类型 |
说明 |
type |
string |
鉴权类型,授权文件鉴权:LicenseFile ,AKSK授权:AK_SK |
AK |
string |
百度文字识别创建应用后生成的Api key,授权文件鉴权可不传 |
SK |
string |
百度文字识别创建应用后生成的Secret key,授权文件鉴权可不传 |
authHandler |
function |
鉴权回调,仅Android有效 |
uniapp-x调用识别
BDOcr.recognition({
ocrType: "bankCard",
recognitionHandler: (res) => {
if (res["code"] == 200) {
let content = res.value;
let recognitionImgPath = res.recognitionImgPath
this.imgPath = `file://${recognitionImgPath}`
this.recognitionValue = content;
let data = JSON.parse(content);
console.log(data)
} else {
console.log(res)
let content = res.meg;
this.recognitionValue = content;
}
uni.hideLoading()
}
} as BDOcr.RecognitionOptions)
uniapp调用识别
BDOcr.recognition({
ocrType: "localIdCardFront",
recognitionHandler: (res) => {
console.log(res)
if (res.code == 200) {
let content = res.value;
let recognitionImgPath = res.recognitionImgPath
if (recognitionImgPath != null) {
this.imgPath = `file://${recognitionImgPath}`
}
this.recognitionValue = content;
let data = JSON.parse(content);
console.log(data)
} else {
console.log(res)
let content = res.meg
this.recognitionValue = content;
}
uni.hideLoading()
}
})
识别参数说明:
参数 |
值类型 |
说明 |
ocrType |
string |
识别类型,详情见下表ocrType 说明 |
recognitionHandler |
function |
识别回调返回的是Map类型数据 |
ocrType说明:
参数 |
说明 |
idCardFront |
身份证正面 |
idCardBack |
身份证反面 |
localIdCardFront |
身份证正面扫描(自动识别) |
localIdCardBack |
身份证反面扫描(自动识别) |
textBasic |
通用文字识别 |
bankCard |
银行卡 |
text |
通用文字识别含位置信息 |
textAccurateBasic |
通用文字识别 高精度 |
textAccurate |
通用文字识别 高精度 含位置信息 |
textEnhanced |
通用文字识别 含生僻字 |
webImage |
网络图片文字识别 |
drivingLicense |
驾驶证 |
vehicleLicense |
行驶证 |
plateNumber |
车牌 |
businessLicense |
营业执照 |
receipt |
通用票据 |
valueAddedTax |
增值税发票 |
taxiReceipt |
出租车票 |
vinCode |
VIN码 |
trainTicket |
火车票 |
numbers |
数字识别 |
qrCode |
二维码 |
household |
户口 |
passport |
护照 |
writtenText |
手写文字 |
exampleDoc |
试卷分析 |
weightNote |
磅单 |
taxiItinerary |
网约车行程单 |
medicalDetail |
医疗费用 |
vehicleInvoice |
机动车销售发票 |
invoice |
通用机打发票 |
businessCard |
名片(仅Android有效) |
vehicleCertificate |
车辆合格证(仅iOS有效) |
清除图片
//uniapp
BDOcr.removePicture({
path: this.imgPath,//图片路径
resultBackcall: (res) => {
if (res) {
uni.showToast({
title: '删除成功',
icon: "none"
})
} else {
uni.showToast({
title: '删除失败',
icon: "none"
})
}
}
} as BDOcr.DeleteFileParams)
//uniapp-x
BDOcr.removePicture({
path: this.imgPath,
resultBackcall: (res) => {
if (res) {
uni.showToast({
title: '删除成功',
icon: "none"
})
} else {
uni.showToast({
title: '删除失败',
icon: "none"
})
}
}
} as BDOcr.DeleteFileParams)
uniapp-x示例
<template>
<view>
<view class="text-area">
<view class="item" @click="authFile">
<text class="title">授权文件授权</text>
</view>
<view class="item" @click="akAuth">
<text class="title">AK—SK授权</text>
</view>
<view class="item" @click="recognition">
<text class="title">识别</text>
</view>
<view class="item" @click="deleteImage">
<text class="title">删除图片</text>
</view>
<image :src="imgPath" mode="widthFix" style="background-color: beige;margin-top: 40rpx;"></image>
<text class="recognition_text">{{recognitionValue}}</text>
</view>
</view>
</template>
<script>
import * as BDOcr from '../../uni_modules/ly-uts-bdocr'
export default {
data() {
return {
title: 'Hello',
imgPath: "",
recognitionValue: ""
}
},
onLoad() {
},
onShow() {
},
methods: {
authFile() {
BDOcr.auth({
type: "LicenseFile",
authHandler: (res) => {
console.log(`鉴权状态码:${res.code}----提示:${res.meg}`)
}
} as BDOcr.AuthOptions)
},
akAuth() {
BDOcr.auth({
type: "AK_SK",
AK: "fC2ttd4bvLW2Z7qI7PSeQfe2",
SK: "k3gm3z3AzKbf9kWDV8E57YeE4CpP9PSo",
authHandler: (res) => {
console.log(`鉴权状态码:${res.code}----提示:${res.meg}`)
}
} as BDOcr.AuthOptions)
},
recognition() {
// if (uni.getSystemInfoSync().platform === 'android') {
// uni.showLoading({
// title: "识别中。。。"
// })
// }
BDOcr.recognition({
ocrType: "bankCard",
recognitionHandler: (res) => {
if (res["code"] == 200) {
let content = res.value;
let recognitionImgPath = res.recognitionImgPath
this.imgPath = `file://${recognitionImgPath}`
this.recognitionValue = content;
let data = JSON.parse(content);
console.log(data)
} else {
console.log(res)
let content = res.meg;
this.recognitionValue = content;
}
uni.hideLoading()
}
} as BDOcr.RecognitionOptions)
},
///删除图片
deleteImage() {
BDOcr.removePicture({
path: this.imgPath,
resultBackcall: (res) => {
if (res) {
uni.showToast({
title: '删除成功',
icon: "none"
})
} else {
uni.showToast({
title: '删除失败',
icon: "none"
})
}
}
} as BDOcr.DeleteFileParams)
}
}
}
</script>
<style>
.item {
display: flex;
align-items: center;
justify-content: center;
background-color: bisque;
height: 88rpx;
margin-top: 20rpx;
}
.title {
font-size: 18px;
color: #333;
text-align: center;
}
.recognition_text {
display: flex;
width: 700rpx;
margin-left: 25rpx;
margin-top: 40rpx;
}
</style>
uniapp示例代码
<template>
<view>
<view class="text-area">
<view class="item" @click="authFile">
<text class="title">授权文件授权</text>
</view>
<view class="item" @click="akAuth">
<text class="title">AK—SK授权</text>
</view>
<view class="item" @click="recognition">
<text class="title">识别</text>
</view>
<view class="item" @click="deleteImage">
<text class="title">删除图片</text>
</view>
<image :src="imgPath" mode="widthFix" style="background-color: beige;margin-top: 40rpx;"></image>
<text class="recognition_text">{{recognitionValue}}</text>
</view>
</view>
</template>
<script>
import * as BDOcr from '../../uni_modules/ly-uts-bdocr'
export default {
data() {
return {
title: 'Hello',
imgPath: "",
recognitionValue: ""
}
},
onLoad() {
},
onShow() {},
methods: {
authFile() {
BDOcr.auth({
type: "LicenseFile",
authHandler: (res) => {
console.log(`状态码:${res.code}--token:${res.token}---描述信息:${res.meg}`);
}
})
},
akAuth() {
BDOcr.auth({
type: "AK_SK",
AK: "fC2tt111111I7PSeQfe2", //换成自己的Api key
SK: "k3gm3z2331252DV8E57YeE4CpP9PSo", //换成自己的SK
authHandler: (res) => {
console.log(`状态码:${res.code}--token:${res.token}---描述信息:${res.meg}`);
}
})
},
recognition() {
// if (uni.getSystemInfoSync().platform === 'android') {
// uni.showLoading({
// title: "识别中。。。"
// })
// }
BDOcr.recognition({
ocrType: "localIdCardFront",
recognitionHandler: (res) => {
console.log(res)
if (res.code == 200) {
let content = res.value;
let recognitionImgPath = res.recognitionImgPath
if (recognitionImgPath != null) {
this.imgPath = `file://${recognitionImgPath}`
}
this.recognitionValue = content;
let data = JSON.parse(content);
console.log(data)
} else {
console.log(res)
let content = res.meg
this.recognitionValue = content;
}
uni.hideLoading()
}
})
},
///删除图片
deleteImage() {
BDOcr.removePicture({
path: this.imgPath,
resultBackcall: (res) => {
if (res) {
uni.showToast({
title: '删除成功',
icon: "none"
})
} else {
uni.showToast({
title: '删除失败',
icon: "none"
})
}
}
})
}
}
}
</script>
<style>
.item {
display: flex;
align-items: center;
justify-content: center;
background-color: bisque;
height: 88rpx;
margin-top: 20rpx;
}
.title {
font-size: 18px;
color: #333;
text-align: center;
}
.recognition_text {
display: flex;
width: 700rpx;
margin-left: 25rpx;
margin-top: 40rpx;
flex-wrap: wrap;
overflow-wrap: anywhere;
}
</style>