更新记录

2.0.0(2026-10-19)

首个基于 UTS + uni-app x 蒸汽模式的版本,相对旧版原生插件的变化:

新增

  • 全平台统一 interface.uts 接口契约,三端(Android / iOS / HarmonyOS)API 完全一致
  • TypeScript 解析内核:14 种证件的字段抽取与校验位校验
    • 身份证 GB 11643 校验位、15 位升 18 位
    • VIN ISO 3779 校验位、I/O/Q 形近字纠正
    • 银行卡 Luhn + BIN 发卡行识别(30+ 常见银行)
    • 统一社会信用代码 GB 32100 校验位
  • 置信度评分:由 OCR 行置信度与关键字段命中率加权,校验通过额外加分
  • warnings 字段:字段缺失、校验失败等可解释提示
  • recognizeImageFile:单图识别,便于自定义相机 UI
  • getEngineStatus / preloadEngine:引擎状态查询与预热
  • 示例工程内置「真机自检」,可验证解析内核是否随包正确编译
  • 84 项自动化测试(校验算法、字段抽取、配置校验、源码静态检查)

变更

  • 原生层只负责取景、拍照与文字识别,字段抽取下沉到 TS 层,保证跨端结果一致
  • 扫描界面重写:CameraX + 自定义扫描框 + 自动抓拍(文本/车牌/VIN/电话/电动车牌)
  • keepImage: false 时不再返回已删除的图片路径,imagePath 返回空串
  • 默认参数调整:showBeep 默认 false,showVibrate 默认 true

兼容

  • uTSOCRRecognize / uTSOCRAblumRecognize / getBase64FromFilePath 名称与参数保持兼容
  • recognizeType 0~13 取值与旧版一致

已知限制

  • HarmonyOS 版仅支持图片识别(recognizeImageFile / 相册),原生取景界面暂未提供
  • 蒸汽模式要求 HBuilderX 5.21+(Android)/ 5.11+(iOS)

平台兼容性

uni-app(5.12)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- - - - √ - √ √ √
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - - -

uni-app x(5.24)

Chrome Safari Android iOS 鸿蒙 微信小程序
- - - - - -

其他

多语言 暗黑模式 宽屏模式 蒸汽模式
× × × √

ai-ocr 离线 OCR 识别插件

Android / iOS 双端离线文字与证件识别。所有识别在设备本地完成,不联网、不上传、不采集数据。

特性

  • 完全离线:Android 使用 ML Kit 中文识别与 HyperLPR3 车牌专用模型(均随包,无需下载);iOS 使用系统 Vision 框架(零额外体积)
  • 14 种识别场景:通用文本、身份证正反面、车牌、银行卡、营业执照、自定义证件、社保卡、发票、车架号 VIN、机动车登记证书、电话号码、电动车牌、登机牌
  • 内置校验:身份证 / VIN / 银行卡 Luhn / 统一社会信用代码 校验位算法,校验结果参与置信度计算
  • 容错解析:全角转半角、汉字间空格折叠、形近字纠正(O↔0、I↔1)、跨行住址拼接
  • 蒸汽模式:适配 uni-app x Vapor 渲染,.uvue 页面性能优于原生

平台支持

平台 支持 最低版本 引擎
Android 是 6.0 (API 23) ML Kit Chinese + HyperLPR3 (车牌)
iOS 是 15.0 Apple Vision
HarmonyOS 图片识别 API 20 Core Vision Kit
Web / 小程序 否 - -

CPU 架构:Android arm64-v8a、armeabi-v7a;iOS arm64。

测试效果

汇总 55 条 Android 测试用例、51 张不同原图,包含失败用例。结果页截图为已保存真机识别输出在示例 App 中的回放。

查看 / 下载高清大图(4800×33494,约 14.2 MiB)

Android 测试原图与识别结果截图总览

安装

  1. 将 uni_modules/ai-ocr 复制到项目 uni_modules 目录
  2. manifest.json 中声明相机与相册权限(见下)
  3. 必须制作自定义基座,标准基座不包含 UTS 原生插件

权限

Android(AndroidManifest.xml 已内置,App 侧无需重复声明):

android.permission.CAMERA
android.permission.VIBRATE
android.permission.FLASHLIGHT
android.permission.READ_MEDIA_IMAGES
android.permission.READ_EXTERNAL_STORAGE (maxSdkVersion=32)

iOS(Info.plist 已内置):

NSCameraUsageDescription
NSPhotoLibraryUsageDescription

基本用法

import { uTSOCRRecognize } from '@/uni_modules/ai-ocr'

uTSOCRRecognize({
  recognizeType: 1,
  showPhotoAlbum: true,
  showLightController: true,
  showVibrate: true,
  success: (res) => {
    // res.lines 是原始文本行,交给 js_sdk/parsers.ts 抽取字段
    console.log(res.lines.map(l => l.text).join('\n'))
  },
  fail: (err) => {
    console.error(err.errCode, err.errMsg)
  },
  complete: (res) => {}
})

字段抽取:

import { parseDocument } from '@/uni_modules/ai-ocr/js_sdk/parsers.ts'

const doc = parseDocument(1, res.lines)
// doc.fields.name / doc.fields.idNumber / doc.confidence / doc.warnings

完整 API 见 docs/API.md。

错误码

码 含义
1001 相机权限未授予
1002 相册权限未授予
1003 相机初始化失败
1004 识别引擎初始化失败
1005 模型文件加载失败
1006 识别超时
1007 图片读取失败
1008 不支持的识别类型
1009 用户取消
1010 设备不支持
1011 参数错误
1012 正在识别中
1013 内存不足

常见问题

Q:标准基座报「插件不存在 / 方法未定义」? A:UTS 原生插件必须使用自定义基座,请重新制作并运行到自定义基座。

Q:Android 识别速度慢? A:首次识别会初始化 ML Kit 模型,可在 App.uvue 的 onLaunch 调用 preloadEngine() 预热。

Q:需要 PaddleOCR 而不是 ML Kit? A:见 docs/BUILD.md 的「替换 OCR 引擎」一节,模型与 aar 放入 utssdk/app-android/libs 与 assets 即可,接口无需改动。

隐私

插件不含任何网络请求与埋点;识别图片仅写入应用私有缓存目录,可通过 keepImage: false 关闭。

Android 相机车牌入口仅识别可见框内区域,支持蓝牌、绿牌、黄牌。普通七位号码不能单凭文字判断蓝黄底色;图片引擎没有给出底色时返回空颜色并提示核对。iOS / HarmonyOS 仍使用原文字引擎,不包含本次专用模型和相机裁框改动。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

相机、相册(可选)

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何用户数据,全部识别在设备本地完成

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无

暂无用户评论。