更新记录

1.0.0(2026-06-21)

  • 发布插件
  • 支持二维码和条形码扫描(13种格式)
  • 支持OCR文本识别,自动提取手机号和身份证号
  • 支持闪光灯控制
  • 支持相机缩放(放大/缩小)
  • 支持自定义扫描线、提示文案、边框颜色等UI元素
  • 支持扫描完成提示音与震动反馈控制
  • 支持Android 5.0及以上版本

平台兼容性

uni-app x(4.0)

Chrome Safari Android Android插件版本 iOS 鸿蒙 微信小程序
× × 5.0 1.0.0 × × ×

安卓原生扫码OCR识别UTS插件 (scan-pro)

基于 uni.scanCode 调起系统摄像头扫码,内置智能文本解析引擎,自动提取手机号和身份证号。搭配可自定义扫描UI组件,适用于 uni-app x 项目,标准基座直接可用。


平台兼容性

uni-app x (5.07+)

Chrome Safari Android 插件版本 iOS 鸿蒙
- - 5.0+ 1.0.0 x x

需在 uni-app x 项目中使用 .uvue 文件。


功能特性

  • 二维码和条形码扫描(QR码、EAN、Code128、Data Matrix、PDF417 等)
  • 智能文本解析:自动提取手机号(1开头的11位数字)和身份证号(18位)
  • 调用系统摄像头扫码,标准基座直接可用,无需自定义基座
  • 自定义扫描框比例、扫描线颜色、边框样式、遮罩透明度、提示文案
  • 扫描线 CSS 动画、闪光灯开关、提示音/自动停止控制
  • 相机权限检查

快速开始

1. 放置扫描组件

<template>
  <view class="page">
    <scan-pro
      id="scannerPreview"
      :width="scannerWidth"
      :height="scannerHeight"
      :scanLineColor="'#00FF00'"
      :hintText="'请将条码置于框内扫描'"
      :showScanLine="true"
      :showOverlay="true"
    ></scan-pro>

    <view @tap="doScan"><text>开始扫码</text></view>
  </view>
</template>

2. 写脚本调用扫码

import { processScanResult, HasCameraPermission } from "@/uni_modules/scan-pro";

function doScan() {
  uni.scanCode({
    scanType: ["barCode", "qrCode", "datamatrix", "pdf417"],
    success: (res) => {
      const json = processScanResult(res.result, res.scanType)
      const rawValue = json.get("rawValue") as string
      const format   = json.get("format") as string
      const phones   = json.get("phoneNumbers") as string[]
      const idCards  = json.get("idCardNumbers") as string[]
      console.log(rawValue, format, phones, idCards)
    }
  })
}

API 参考

processScanResult(result, scanType)

解析 uni.scanCode 回调结果,自动提取手机号和身份证号。

参数

参数 类型 说明
result String 回调中的 res.result
scanType String 回调中的 res.scanType

返回 UTSJSONObject,包含以下字段:

字段 类型 说明
rawValue String 扫描的原始内容
format String 条码格式,如 QR_CODE、EAN_13 等
valueType Number 值类型
phoneNumbers String[] 提取到的手机号列表
idCardNumbers String[] 提取到的身份证号列表

HasCameraPermission()

检查相机权限是否已授予,返回 boolean

CreateNativeScannerContext(id)

创建扫描上下文,返回 INativeScannerContext 实例。


组件属性

属性 类型 默认值 说明
width Number - 宽度(像素),必填
height Number - 高度(像素),必填
scanFrameWidthRatio Number 0.7 扫描框宽度占预览宽度的比例
scanFrameHeightRatio Number 0.5 扫描框高度占预览高度的比例
frameBorderColor String '#FFFFFF' 扫描框边框颜色
frameBorderWidth Number 2 扫描框边框宽度(像素)
scanLineColor String '#00FF00' 扫描线颜色
scanLineWidth Number 2 扫描线宽度(像素)
scanLineHeight Number 2 扫描线高度(像素)
showScanLine Boolean true 是否显示扫描线动画
hintText String '请扫描' 扫描提示文案
hintColor String '#FFFFFF' 提示文案颜色
hintTextSize Number 14 提示文案大小(sp)
maskOpacity Number 0.5 遮罩透明度(0.0~1.0)
maskColor String '#000000' 遮罩颜色
showOverlay Boolean true 是否显示扫描框遮罩
playSound Boolean true 扫描成功后播放提示音
autoStop Boolean false 扫描成功后自动停止

支持的条码格式

格式 说明
QR_CODE 二维码
EAN_13 EAN-13 条形码
EAN_8 EAN-8 条形码
UPC_A UPC-A 条形码
UPC_E UPC-E 条形码
CODE_128 Code 128 条形码
CODE_39 Code 39 条形码
CODE_93 Code 93 条形码
CODABAR Codabar 条形码
ITF ITF 条形码
DATA_MATRIX Data Matrix 码
PDF_417 PDF 417 条形码
AZTEC Aztec 码

智能文本解析

processScanResult 自动从扫码结果中匹配:

  • 手机号:1 开头的 11 位连续数字
  • 身份证号:18 位,末位可为 X
// 扫码"张三 *** 110101199001011234"的结果
{
  rawValue: "张三 *** 110101199001011234",
  format: "TEXT",
  valueType: 0,
  phoneNumbers: ["***"],
  idCardNumbers: ["110101199001011234"]
}

常见问题

扫描没有反应?

  • 确认 Android 5.0 以上设备
  • 首次使用需在系统设置中授予相机权限
  • 调用 uni.scanCode() 触发扫码,非自动启动
  • scanType 包含 "barCode" 确保条形码识别

文字重叠或被截断?

  • 结果卡片设置了 max-heightlines 限制
  • 可通过组件属性自定义样式

如何自定义UI?

  • 设置 showOverlay="false" 隐藏内置覆盖层
  • 参考 pages/custom/custom.uvue 完整自绘示例

演示项目

插件含 4 个演示页面:

页面 说明
pages/index/index 完整功能演示:扫码、颜色、缩放、开关
pages/simple/simple 最简入门:3 行代码集成
pages/ocr/ocr OCR 专项:手机号、身份证提取与复制
pages/custom/custom 全自定义 UI:自绘扫描框、扫描线弹窗

插件信息

  • 插件 ID:scan-pro
  • 版本:1.0.0
  • 平台:uni-app x Android 5.0+
  • 依赖:无三方 SDK,标准基座直接可用

隐私、权限声明

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

android.permission.CAMERA

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

插件不采集任何数据

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

暂无用户评论。