更新记录

1.0.1(2026-07-11)

  • 经典 uni-app Vue2、Vue3 改为直接导入 UTS API,不再依赖 uni.requireNativePlugin
  • 市场交付统一为单一 UTS 插件,nativeplugin 不再作为发布包。
  • 修正平台声明:经典 uni-app 支持 Vue2/Vue3 的 Android、iOS;HarmonyOS 付费加密版仅支持 uni-app x。
  • 移除容易误导的 uni_modules.encrypt,付费 UTS 源码由 DCloud 插件市场自动加密。
  • 补充付费加密后的云端编译、传统云打包和公开 interface.uts 说明。
  • 明确付费 HarmonyOS 版本要求 HBuilderX 4.81+,并统一从插件根入口导入公开类型。
  • 明确经典 uni-app Vue3 不等于 uni-app x:Vue3 支持范围为 Android、iOS,普通付费加密版 HarmonyOS 仅支持 uni-app x。

1.0.0(2026-07-10)

  • 首次发布 Android、iOS、HarmonyOS 三端离线 OCR UTS 插件。
  • Android / iOS 使用 NCNN 原生推理,HarmonyOS 使用 MindSpore Lite 原生推理。
  • 支持模型初始化、文字检测识别、方向预处理、资源释放和模型就绪状态查询。
  • 支持身份证号、车牌号、购物卡/长数字等常见格式候选提取。
  • 配套 Demo 提供经典 uni-app uni.requireNativePlugin('LiteOCRv6') 兼容包与调用示例。

平台兼容性

uni-app(4.81)

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

uni-app x(4.81)

Chrome Safari Android iOS 鸿蒙 微信小程序
× × 7.0 13 5.0.0 ×

LiteOCRv6 离线文字识别

LiteOCRv6 是面向 uni-app / uni-app x 的端侧离线 OCR UTS 插件。图片解码、文字检测、文字识别和规则候选提取均在设备本地完成,不会上传业务图片或识别结果。

能力与平台

  • Android、iOS、HarmonyOS 真机离线 OCR
  • 经典 uni-app Vue2、Vue3 与 uni-app x 共用同一个 UTS API 插件
  • 通用文字检测与识别:det_rec
  • 仅检测文字区域:det_only
  • 将整张图片作为一个文字区域识别:rec_only
  • 手动旋转、图片方向处理和 OCR 输入图预处理
  • 身份证号、车牌号、购物卡号/长数字、手机号、金额、日期候选提取
  • 内置 tiny 模型,也可通过 modelDir 使用与插件格式匹配的自定义模型

插件不包含拍照 UI、相册 UI、二维码/条码识别。业务侧可先通过 uni.chooseImage、相机插件或其他方式取得本地图片,再将路径传入本插件。

平台 默认 runtimeSet 最低版本 说明
Android ncnn Android 7.0 / API 24 经典 uni-app Vue2/Vue3、uni-app x;arm64-v8a、armeabi-v7a
iOS ncnn iOS 13.0 经典 uni-app Vue2/Vue3、uni-app x;arm64 真机,不支持模拟器
HarmonyOS nativeOptimized HarmonyOS 5.0.0 / API 12 当前市场版本支持 uni-app x 云端编译;HBuilderX 4.81+;arm64-v8a

推荐省略 runtimeSet,插件会按当前平台选择正确默认值。如果显式传值,Android/iOS 使用 ncnn,HarmonyOS 使用 nativeOptimized

HarmonyOS 当前市场版本请使用 uni-app x,并使用 HBuilderX 4.81 或更高版本进行云端编译。

安装和运行

  1. 从 DCloud 插件市场导入 xiaoba777-liteocr-v6 到工程 uni_modules
  2. 在宿主工程中声明拍照、相册等业务实际使用的权限。
  3. @/uni_modules/xiaoba777-liteocr-v6 导入公开 API;经典 uni-app 不需要 uni.requireNativePlugin()
  4. 开发调试时重新制作包含插件原生依赖的基座或重新打包,并使用真机运行。

UTS 插件调用方式

LiteOCRv6 是 UTS API 插件,不需要使用 uni.requireNativePlugin()。OCR 接口、参数和返回值在不同工程中保持一致,区别只在页面脚本类型:

  • 经典 uni-app Vue2/Vue3:在 .vue 的普通 <script> 中导入。
  • uni-app x:在 .uvue<script lang="uts"> 中导入。
import {
  initModel,
  recognizeImage,
  releaseModel
} from '@/uni_modules/xiaoba777-liteocr-v6'

所有公开函数和类型均从插件根路径导入,不要直接依赖 utssdk 内部文件。

构建说明

  • Android、iOS 支持经典 uni-app Vue2/Vue3 和 uni-app x,请重新制作包含插件的自定义基座或云端安装包。
  • HarmonyOS 当前支持 uni-app x,要求 HBuilderX 4.81 或更高版本并使用云端编译。
  • 更新插件版本或原生产物后,请重新编译基座或安装包,并在真机上测试。

推荐调用顺序

initModel() -> recognizeImage() 可重复调用多次 -> releaseModel()
  • 页面进入或首次使用时初始化一次模型。
  • 初始化成功后可以连续识别多张图片,不需要每张图片都重新初始化。
  • 页面退出或确定不再使用 OCR 时释放模型。
  • 如果再次调用 initModel 切换模型,应等待最新一次初始化回调成功后再识别。

导入公开接口

import {
  initModel,
  recognizeImage,
  prepareImageForOcr,
  recognizeShoppingCard,
  recognizeIdCard,
  recognizeLicensePlate,
  extractEntities,
  downloadModel,
  isModelReady,
  releaseModel
} from '@/uni_modules/xiaoba777-liteocr-v6'

完整 UTS 类型定义位于 utssdk/interface.uts

基础调用示例

import {
  initModel,
  recognizeImage,
  releaseModel,
  InitModelResult,
  RecognizeImageResult
} from '@/uni_modules/xiaoba777-liteocr-v6'

initModel({
  modelTier: 'tiny',
  threadNum: 2,
  runCls: false
}, (initResult: InitModelResult) => {
  if (initResult.code != 0) {
    console.error(`模型加载失败:${initResult.message}`)
    return
  }

  recognizeImage({
    imagePath: '/path/to/image.jpg',
    maxSideLen: 0,
    runMode: 'det_rec',
    extractEntities: true
  }, (ocrResult: RecognizeImageResult) => {
    if (ocrResult.code != 0) {
      console.error(`识别失败:${ocrResult.message}`)
      return
    }

    console.log('文字行:', ocrResult.results)
    console.log('格式候选:', ocrResult.entities)
  })
})

// 页面退出或不再使用 OCR 时调用
releaseModel((result) => {
  console.log(result.code, result.message)
})

公开接口说明

1. initModel(options, callback)

加载检测模型、识别模型、字符字典和配置文件。必须初始化成功后才能调用图片识别接口。

参数

字段 类型 默认值 说明
modelTier string tiny 模型名称。内置模型使用 tiny;自定义名称可用于区分业务模型。
runtimeSet string 按平台选择 Android/iOS 为 ncnn;HarmonyOS 为 nativeOptimized。一般无需手动传入。
modelDir string 自定义模型的本地绝对目录。传入后优先使用此目录,而不是内置模型。
threadNum number 2 推理线程数。移动端通常建议从 2 开始测试,不是越大越快。
runCls boolean false 预留的文字方向分类开关。当前内置 tiny 模型建议保持 false

自定义模型目录结构

Android / iOS 的 NCNN 模型目录:

modelDir/
├── det/
│   ├── inference.param
│   └── inference.bin
└── rec/
    ├── inference.param
    ├── inference.bin
    ├── charset.txt
    └── ppocr.cfg

HarmonyOS 的 MindSpore Lite 模型目录:

modelDir/
├── det/
│   └── inference.ms
└── rec/
    ├── inference.ms
    ├── charset.txt
    └── ppocr.cfg

识别模型、charset.txtppocr.cfg 必须来自同一套导出结果。插件会校验识别输出类别数与字典映射数量;不匹配时拒绝初始化并返回 code = -4,避免产生“数字看似正确、中文索引错位”的伪识别结果。

初始化成功示例

{
  code: 0,
  message: 'ok',
  tier: 'tiny',
  runtimeSet: 'nativeOptimized'
}

runtimeSet 会随平台变化。例如 Android/iOS 通常返回 ncnn

模型字典不匹配示例

{
  code: -4,
  message: '模型校验失败:识别模型输出 7000 类,但字典映射需要 6906 类',
  tier: 'custom-v1',
  runtimeSet: 'ncnn'
}

2. recognizeImage(options, callback)

通用 OCR 接口。输入本地图片路径或 Base64,返回文字、置信度、文字框、耗时、图片旋转信息和可选的规则候选。

参数

字段 类型 默认值 说明
imagePath string App 可访问的本地图片路径。推荐优先使用此字段。
imageBase64 string 图片 Base64,可传纯 Base64 或包含 data:image/...;base64, 前缀的数据。
maxSideLen number 0 OCR 输入图长边限制。0 表示自动选择;大图会按比例缩放,建议先使用默认值。
runMode string det_rec det_recdet_onlyrec_only
rotate number 未设置 手动顺时针旋转角度,支持 090180270。仅在图片方向信息已丢失且显示方向错误时设置。
imageOrientation string 前端已知图片方向,可传 up/right/down/leftnormal,或 EXIF 值 1/6/3/8
scene string auto 候选筛选场景:autoshoppingCardidCardlicensePlatephoneamountdate
extractEntities boolean true 是否根据 OCR 文本生成 entitiescandidatesbest

正常通过本机相机拍摄并保留方向信息的图片,无需设置 rotate。仅当图片并非本机直接拍摄,或经过转存、压缩等处理后已丢失 EXIF/方向信息,并出现识别方向错误时,才手动传入旋转角度。

imagePathimageBase64 至少提供一个。两者同时提供时建议以 imagePath 为准,不要传入两个不同图片。

runMode 解释

行为 典型用途
det_rec 先检测文字框,再逐框识别文字 普通文档、票据、标签、截图
det_only 只检测文字框,不识别文字;结果中的 text 为空 只需要文字区域坐标或调试检测效果
rec_only 不检测,将整张图当成一行文字识别 已裁剪好的卡号、编号、单行文字图片

返回字段

字段 类型 说明
code number 0 表示成功;非零表示失败。
message string 成功或失败原因。处理错误时应优先展示此字段。
scene string 本次候选筛选场景。
elapsedMs number 总耗时,单位毫秒。
detMs number 文字检测耗时,单位毫秒。
recMs number 文字识别耗时,单位毫秒。
appliedRotation number 插件实际应用的旋转角度。
orientationSource string 方向来源,例如 manualnativeExif 或前端方向信息。
results OCRResultItem[] OCR 文字行。任何非零错误码下都保证为空数组。
entities OCREntities 按类型分组的规则候选;仅在启用候选提取时返回。
candidates OCREntityCandidate[] 当前 scene 对应的候选列表。
best OCREntityCandidate \| null 当前场景的首个候选;未命中时为 null

best 的实际类型是 OCREntityCandidate | null。上表中的竖线表示联合类型。

OCRResultItem

{
  text: '***:***',
  confidence: 0.982,
  points: [[42, 76], [418, 76], [418, 126], [42, 126]]
}
  • text:识别出的文字。
  • confidence:模型置信度,通常在 0~1 之间,仅适合排序和阈值参考,不代表业务真实性。
  • points:文字框四个顶点的 [x, y] 坐标。坐标对应实际完成方向处理后的 OCR 输入图。

完整识别结果示例

以下数据仅用于说明字段结构,实际文字、坐标、置信度和耗时会随图片、设备和平台变化:

{
  code: 0,
  message: 'ok',
  scene: 'auto',
  elapsedMs: 286,
  detMs: 91,
  recMs: 173,
  appliedRotation: 0,
  orientationSource: 'nativeExif',
  results: [
    {
      text: '订单日期:2026-07-10',
      confidence: 0.987,
      points: [[38, 42], [402, 42], [402, 88], [38, 88]]
    },
    {
      text: '***:138 0013 8000',
      confidence: 0.981,
      points: [[40, 104], [438, 104], [438, 152], [40, 152]]
    },
    {
      text: '合计:¥128.50',
      confidence: 0.976,
      points: [[42, 166], [308, 166], [308, 214], [42, 214]]
    }
  ],
  entities: {
    idCards: [],
    plates: [],
    cardNumbers: [],
    phones: [
      {
        value: '***',
        normalized: '***',
        sourceIndex: 1,
        text: '***:138 0013 8000',
        confidence: 0.981,
        points: [[40, 104], [438, 104], [438, 152], [40, 152]]
      }
    ],
    amounts: [
      {
        value: '¥128.50',
        normalized: '¥128.50',
        sourceIndex: 2,
        text: '合计:¥128.50',
        confidence: 0.976,
        points: [[42, 166], [308, 166], [308, 214], [42, 214]]
      }
    ],
    dates: [
      {
        value: '2026-07-10',
        normalized: '2026-07-10',
        sourceIndex: 0,
        text: '订单日期:2026-07-10',
        confidence: 0.987,
        points: [[38, 42], [402, 42], [402, 88], [38, 88]]
      }
    ]
  },
  candidates: [
    { value: '***', normalized: '***', sourceIndex: 1 },
    { value: '¥128.50', normalized: '¥128.50', sourceIndex: 2 },
    { value: '2026-07-10', normalized: '2026-07-10', sourceIndex: 0 }
  ],
  best: {
    value: '***',
    normalized: '***',
    sourceIndex: 1
  }
}

det_only 结果示例

{
  code: 0,
  message: 'ok',
  detMs: 78,
  recMs: 0,
  results: [
    {
      text: '',
      confidence: 0.94,
      points: [[30, 40], [420, 40], [420, 96], [30, 96]]
    }
  ]
}

错误结果示例

模型未初始化或图片无法读取时:

{
  code: -1,
  message: '模型未初始化',
  elapsedMs: 0,
  detMs: 0,
  recMs: 0,
  results: []
}

模型与字符字典不匹配时:

{
  code: -4,
  message: '识别模型输出类别与字典映射不一致',
  elapsedMs: 0,
  detMs: 0,
  recMs: 0,
  results: []
}

3. prepareImageForOcr(options, callback)

根据 rotateimageOrientationmaxSideLen 准备与 OCR 实际输入方向一致的图片。适合在页面上预览“模型真正看到的图片”,或将处理后的图片用于调试。

参数与 recognizeImage 中同名字段含义一致,但不需要 runModesceneextractEntities

prepareImageForOcr({
  imagePath: '/path/to/photo.jpg',
  rotate: 90,
  maxSideLen: 1280
}, (result) => {
  if (result.code == 0) {
    console.log('处理后图片:', result.imagePath)
    console.log(`尺寸:${result.width} x ${result.height}`)
  }
})

返回示例:

{
  code: 0,
  message: 'ok',
  imagePath: '/app/cache/liteocrv6/prepared-20260710.jpg',
  width: 960,
  height: 1280,
  appliedRotation: 90,
  orientationSource: 'manual',
  elapsedMs: 24
}

平台说明:

  • iOS、HarmonyOS 会生成处理后的临时图片路径。
  • Android 当前使用 AAR 内部方向处理,prepareImageForOcr 为兼容透传,可能直接返回原路径且不提供宽高;实际识别仍会正确应用方向参数。

4. 场景快捷识别接口

以下三个接口参数和返回结构都与 recognizeImage 相同,但会固定 scene 并启用候选提取:

方法 固定场景 candidates 内容
recognizeShoppingCard(options, callback) shoppingCard 购物卡号、券码等 12~24 位长数字候选
recognizeIdCard(options, callback) idCard 18 位身份证号格式候选
recognizeLicensePlate(options, callback) licensePlate 7~8 位中国大陆车牌格式候选

购物卡号示例

recognizeShoppingCard({
  imagePath: '/path/to/card.jpg',
  runMode: 'det_rec'
}, (result) => {
  if (result.code == 0) {
    const best = result.best
    if (best != null) {
      console.log('最佳卡号:', best.normalized)
    }
  }
})

返回示例:

{
  code: 0,
  message: 'ok',
  scene: 'shoppingCard',
  results: [
    {
      text: '2336 3760 3106 6276095',
      confidence: 0.991,
      points: [[24, 38], [536, 38], [536, 104], [24, 104]]
    }
  ],
  candidates: [
    {
      value: '2336376031066276095',
      normalized: '2336376031066276095',
      sourceIndex: 0,
      text: '2336 3760 3106 6276095',
      confidence: 0.991,
      points: [[24, 38], [536, 38], [536, 104], [24, 104]]
    }
  ],
  best: {
    value: '2336376031066276095',
    normalized: '2336376031066276095',
    sourceIndex: 0
  }
}

身份证号和车牌号调用示例

recognizeIdCard({ imagePath: '/path/to/id-card.jpg' }, (result) => {
  console.log('身份证号候选:', result.candidates)
})

recognizeLicensePlate({ imagePath: '/path/to/plate.jpg' }, (result) => {
  console.log('车牌号候选:', result.candidates)
})

候选格式示例:

// 身份证号,仅作格式示例
{
  value: '11010119900101123X',
  normalized: '11010119900101123X',
  sourceIndex: 0
}

// 车牌号,仅作格式示例
{
  value: '粤B12345',
  normalized: '粤B12345',
  sourceIndex: 0
}

5. extractEntities(options, callback)

只对已有文本或 OCR 结果执行规则提取,不会重新运行 OCR。适合对服务器文本、手工输入文本或已缓存的 OCR 结果进行二次筛选。

输入字段

字段 类型 说明
text string 单段文本。
texts string[] 多段文本,每段会转换成一个候选来源。
results OCRResultItem[] 已有 OCR 结果;传入后可保留置信度和坐标。
scene string auto 或指定候选场景。

results 的优先级高于 texttexts

使用示例

extractEntities({
  scene: 'auto',
  texts: [
    '手机号:138 0013 8000',
    '身份证:11010119900101123X',
    '车牌:粤B12345',
    '金额:¥128.50',
    '日期:2026-07-10'
  ]
}, (result) => {
  console.log(JSON.stringify(result.entities))
})

返回示例:

{
  code: 0,
  message: 'ok',
  scene: 'auto',
  entities: {
    idCards: [
      { value: '11010119900101123X', normalized: '11010119900101123X', sourceIndex: 1 }
    ],
    plates: [
      { value: '粤B12345', normalized: '粤B12345', sourceIndex: 2 }
    ],
    cardNumbers: [
      { value: '11010119900101123', normalized: '11010119900101123', sourceIndex: 1 }
    ],
    phones: [
      { value: '***', normalized: '***', sourceIndex: 0 }
    ],
    amounts: [
      { value: '¥128.50', normalized: '¥128.50', sourceIndex: 3 }
    ],
    dates: [
      { value: '2026-07-10', normalized: '2026-07-10', sourceIndex: 4 }
    ]
  },
  candidates: [
    { value: '11010119900101123', sourceIndex: 1 },
    { value: '11010119900101123X', sourceIndex: 1 },
    { value: '粤B12345', sourceIndex: 2 },
    { value: '***', sourceIndex: 0 },
    { value: '¥128.50', sourceIndex: 3 },
    { value: '2026-07-10', sourceIndex: 4 }
  ],
  best: {
    value: '11010119900101123',
    sourceIndex: 1
  }
}

候选规则说明

  • cardNumbers:去除空格、短横线等分隔符后,提取 12~24 位数字。
  • phones:提取 11 位、以 1 开头且第二位为 3~9 的号码。
  • idCards:提取前 17 位为数字、最后一位为数字或 X 的 18 位字符串。
  • plates:提取以省份简称开头、第二位为大写字母、长度为 7~8 位的字符串。
  • amounts:提取带 ¥,或位于“元”之前的数字金额。
  • dates:提取包含 8 位数字且年份以 1920 开头的日期样式文本。

这些结果只是快速规则候选,不执行身份证校验位、银行卡 Luhn 校验、手机号归属、车牌真实性或日期合法性校验。正式业务仍应在候选结果上增加自己的校验规则。


6. downloadModel(options, progress, callback)

用于下载业务指定的模型文件。当前平台状态:

平台 状态
Android 支持传入 detUrlrecUrl 下载自定义 NCNN 模型包。
iOS 当前仅内置 tiny,在线下载暂未开放,返回 code = -20
HarmonyOS 当前仅内置 tiny,在线下载暂未开放,返回 code = -20

参数

字段 类型 说明
modelTier string 模型名称;未传 modelId 时作为本地保存名称。
modelId string 自定义模型标识,建议只使用字母、数字、点、下划线和短横线。
detUrl string Android 检测模型压缩包地址。
recUrl string Android 识别模型、字典和配置压缩包地址。
force boolean 是否覆盖本地已有模型。

Android 当前未配置内置远程模型地址,因此仅传 modelTier 不会自动下载;必须同时提供 detUrlrecUrl。下载完成后仍会执行模型与字典契约校验。

downloadModel({
  modelId: 'custom-v1',
  detUrl: 'https://example.com/liteocr/det.zip',
  recUrl: 'https://example.com/liteocr/rec.zip',
  force: false
}, (event) => {
  console.log(`下载进度:${event.progress}%`)
}, (result) => {
  if (result.code == 0) {
    console.log('模型目录:', result.localDir)

    initModel({
      modelTier: 'custom-v1',
      modelDir: result.localDir
    }, (initResult) => {
      console.log(initResult.code, initResult.message)
    })
  } else {
    console.error(result.message)
  }
})

下载成功示例:

{
  code: 0,
  message: 'ok',
  localDir: '/app/files/ppocr_models/custom-v1'
}

7. isModelReady(tier)

同步查询指定模型资源是否已经可用。

const tinyReady = isModelReady('tiny')
console.log('tiny 是否可用:', tinyReady)

返回值:

true

该接口用于快速检查模型文件是否存在且满足基本要求,不替代 initModel。真正开始识别前仍应以 initModel 的回调结果为准。


8. releaseModel(callback)

释放当前 OCR 引擎和模型资源。

releaseModel((result) => {
  console.log(result)
})

返回示例:

{
  code: 0,
  message: 'released'
}

释放后再次识别前必须重新调用 initModel


数据结构说明

OCREntityCandidate

{
  value: '***',
  normalized: '***',
  sourceIndex: 1,
  text: '***:138 0013 8000',
  confidence: 0.981,
  points: [[40, 104], [438, 104], [438, 152], [40, 152]]
}
字段 说明
value 提取出的候选值。
normalized 去除部分空格、短横线等分隔符后的标准化值。
sourceIndex 候选来自 resultstexts 的第几项,从 0 开始。
text 产生该候选的原始整行文字。
confidence 原 OCR 文字行的置信度。纯文本提取时通常为 1
points 原 OCR 文字行坐标。纯文本提取时通常为空数组。

OCREntities

{
  idCards: [],
  plates: [],
  cardNumbers: [],
  phones: [],
  amounts: [],
  dates: []
}

每个字段都是 OCREntityCandidate[]。未命中时为空数组,不代表 OCR 失败。

常见错误码

code 含义 建议处理
0 成功 读取返回数据。
-1 未初始化、图片读取失败、运行状态变化或其他运行错误 展示 message,检查初始化和图片路径后重试。
-2 运行后端不支持、模型文件缺失或下载参数不完整 检查平台 runtimeSet、模型目录和参数。
-4 模型、字符字典或输出类别契约不一致 不要继续使用该模型;换回配套模型和字典。识别结果保证为 []
-5 预处理图片写入失败 检查可写缓存目录和设备空间。
-8 原生推理库未包含在当前安装包中 重新制作包含插件的自定义基座或正式包。
-20 当前平台暂未开放该功能 使用内置 tiny 或按平台说明选择替代方案。

不同平台的底层错误可能使用同一错误码表达不同细节,应始终以 message 为主要诊断信息。

使用建议

  1. 首次接入先使用内置 tiny,确认三端调用链正常后再接自定义模型。
  2. 普通图片优先使用 imagePath,避免大尺寸 Base64 增加内存占用。
  3. maxSideLen 先保持 0;只有性能或小字识别需要调优时再对比 960/1280/1600/1920
  4. 已裁剪的单行文字可尝试 rec_only,完整文档使用 det_rec
  5. 规则候选用于缩小范围,不能替代业务真实性校验。
  6. 更换模型时必须同时更换配套的识别字典和配置文件。
  7. 更新插件原生产物后,应清理 HBuilderX 缓存、卸载旧 App,并重新制作自定义基座或正式包。

权限与隐私

  • 插件不会采集、存储或上传用户图片、识别文本或设备信息。
  • 插件本身不主动弹出相机或相册权限;宿主业务使用拍照、选图能力时需自行声明权限。
  • 只有业务主动调用 downloadModel 时才会访问开发者传入的模型下载地址。

隐私、权限声明

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

插件本身不主动申请相机或相册权限;宿主应用拍照、选图时需自行声明对应权限。调用 downloadModel 下载模型时需要网络权限。

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

插件不采集、存储或上传用户数据,OCR 推理完全在设备本地完成。仅在业务主动调用 downloadModel 时访问开发者指定的模型下载地址。

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

暂无用户评论。