更新记录

1.1.6(2026-06-18)

  • 修复 Android 高像素机型拍照后进入手动矫正页可能因全尺寸 Bitmap 解码导致 App 崩溃的问题。
  • Android CameraX 拍照输出尺寸选择迁移到 ResolutionSelector / ResolutionStrategy,清理编译 deprecated warning,并继续保留安全分辨率上限,降低华为 P40 系列等高像素设备的内存峰值。
  • Android 图片处理链路改为采样解码,手动矫正页显示轻量预览图,但仍按原图尺寸输出四角坐标,保留客户真实调用语义。
  • 拍照回调新增并发保护和异常兜底,异常时走插件错误回调,不再让 App 进程直接关闭。
  • 更新发布守卫,后续会阻止 Android 拍照链路回退到已废弃的 CameraX 配置方式或全尺寸解码路径。

1.1.5(2026-06-18)

  • 清理 Android CameraX 编译 deprecated warning:拍照输出尺寸选择从旧目标分辨率 API 迁移到 ResolutionSelector / ResolutionStrategy
  • 保留 1.1.4 的高像素机型拍照内存保护,继续限制拍照输出长边并使用采样解码,降低华为 P40 系列等设备点击拍照后关闭 App 的风险。
  • 更新发布守卫,后续会阻止 Android 拍照链路回退到已废弃的 CameraX 配置方式。

1.1.2(2026-05-09)

  • Android 四角识别主链路升级为 OpenCV:通过灰度、降噪、Canny、findContoursapproxPolyDP、四边形评分和角点排序生成实时预览框,旧自研边缘/亮度算法仅作为兜底。
  • Android 透视矫正切换为 OpenCV getPerspectiveTransform + warpPerspective,让自动检测角点和最终矫正输出使用同一套视觉算法。
  • Android 实时预览新增多帧稳定、首次识别提速、贴边/近全屏四边形过滤和安全兜底策略,减少预览框跳动、贴屏误判和复杂背景下的错误识别。
  • Android 新增 CaptureFrameState:实时预览只缓存最后一份可信状态,记录预览 View 角点、分析帧角点、旋转角、尺寸、置信度、来源和时间戳。
  • Android 点击拍摄时冻结当前可信预览状态,拍照完成后把冻结角点按 PreviewView.ScaleType.FILL_CENTER 语义映射到高清照片手动矫正页,避免拍完后四角跳位。
  • Android 手动矫正页同样采用全屏 FILL_CENTER 显示,并按预览视图坐标反算到照片像素;本地文件解码时读取 EXIF Orientation 并旋正图片,避免角点和图片方向不一致。
  • Android 拍后高清二次检测同样使用可信度和贴边过滤;没有可信冻结角点或高清检测失败时进入手动微调,并在最终 warnings 中追加兜底来源。
  • iOS 接入系统 Vision VNDetectRectanglesRequest 检测文档矩形,图片检测和拍照后矫正均优先使用 Vision 角点,失败时回退手动微调默认角点。
  • warnings 增加识别来源标记:opencv_previewopencv_capturepreview_lockededge_contourvision_rectanglepreview_fallbackmanual_adjustmanual_adjust_fallback,方便业务侧排查自动识别来源。
  • Android config.json 新增 org.opencv:opencv:4.10.0 依赖;文档补充 OpenCV 依赖、自定义基座和包体积说明。
查看更多

平台兼容性

uni-app(4.84)

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

uni-app x(4.84)

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

lizhao-doc-corrector

lizhao-doc-corrector 是纯 UTS API 插件,用于合同、身份证、银行卡、相片、海报、试卷等矩形文档的捕捉、检测、矫正、增强、批量处理、导出与 OCR 字段抽取。

当前版本:1.1.6

1.1.6 Android 拍照闪退与 CameraX 告警修复

本版本合并 Android 高像素机型拍照闪退修复和 CameraX deprecated warning 清理:插件会通过 ResolutionSelector / ResolutionStrategy 限制 CameraX 拍照输出长边,并在手动矫正和图片处理阶段使用采样解码;手动矫正页仍按原图尺寸输出四角坐标,不需要客户修改真实调用方式。

1.1.3 发布版本号递增

插件市场已存在 1.1.2,本版本在保留 1.1.2 iOS 云打包兼容修复的基础上,仅递增发布版本号与发布日志,便于重新提交市场审核;插件运行逻辑不变。

1.1.2 iOS 云打包兼容修复

本版本修复 iOS 云打包低部署目标下 Vision OCR 与场景窗口 API 的可用性检查问题:OCR 入口在 iOS 13 以下返回明确错误,connectedScenes / UIWindowScene 仅在 iOS 13+ 分支使用,低版本回落 keyWindow

本插件不使用老式 App 原生语言插件,不支持 uni.requireNativePlugin 调用方式。页面端必须从插件根目录 import。

import { correctDocument, recognizeDocument } from "@/uni_modules/lizhao-doc-corrector";

支持平台

平台 是否支持 说明
uni-app Android 支持 UTS API 调用;startDocumentSession 打开插件原生全屏相机捕捉页
uni-app iOS 支持 UTS API 调用;startDocumentSession 打开插件原生全屏相机捕捉页
uni-app x Android 支持 UTS API 调用;startDocumentSession 打开插件原生全屏相机捕捉页
uni-app x iOS 支持 UTS API 调用;startDocumentSession 打开插件原生全屏相机捕捉页
Harmony 当前同接口返回 9020001
Web 当前同接口返回 9020001
微信小程序 当前同接口返回 9020001
支付宝小程序 当前同接口返回 9020001

目录结构

uni_modules/lizhao-doc-corrector
├─ package.json
├─ readme.md
├─ changelog.md
└─ utssdk
   ├─ interface.uts
   ├─ unierror.uts
   ├─ index.uts
   ├─ app-android
   ├─ app-ios
   ├─ app-harmony
   ├─ web
   ├─ mp-weixin
   └─ mp-alipay

权限与自定义基座

平台 权限 配置位置 是否需要自定义基座
Android 相机、相册/图片读取、震动 utssdk/app-android/AndroidManifest.xmlconfig.json 使用 CameraX / ML Kit 依赖时需要
iOS 相机、相册读取、相册写入 utssdk/app-ios/Info.plistPrivacyInfo.xcprivacy 使用系统 Vision / CoreImage 不需要三方 SDK
Harmony 当前降级
Web/小程序 当前降级

相机权限来自插件原生全屏拍摄页的 Android CameraX / iOS AVFoundation 调用,不是依赖 uni.chooseImage 或 uni 页面相机组件完成核心拍摄。

API 列表

API 说明
detect(options) 一键文档扫描(推荐主入口)
startDocumentSession(options) 启动文档捕捉会话
captureDocument(options) 从当前会话捕捉文档
pauseDocumentSession(options) 暂停会话
resumeDocumentSession(options) 恢复会话
stopDocumentSession(options) 停止会话
detectDocumentCorners(options) 检测文档四角
correctDocument(options) 矫正文档
enhanceDocument(options) 增强文档
batchProcessDocuments(options) 批量处理文档
exportDocument(options) 导出 JPEG / PDF
recognizeDocument(options) 通用 OCR 与文档类型识别
recognizeIdCard(options) 身份证字段抽取
recognizeBankCard(options) 银行卡字段抽取
recognizeContract(options) 合同字段抽取
recognizeExamPaper(options) 试卷字段抽取
getDebugTrace() 获取调试轨迹
clearDebugTrace() 清空调试轨迹

detect(options)(推荐)

说明
一键拉起原生拍摄页,执行“拍照 -> 手动四角微调 -> 确认矫正 -> 返回结果”的完整链路。
默认会在拍后回调结果并自动结束会话,用户不需要再手动点“捕捉当前文档”。

支持平台
Android / iOS

参数

参数 类型 必填 说明 默认值 可选参数
options DocumentDetectOptions 一键扫描参数对象 sessionId / documentType / mode / autoCapture / enableManualAdjust / enableEnhance / enhanceMode / enableOcr / torchEnabled / success / fail / complete / onStatus / onQuality / onCornersChanged / cameraResult / adjustResult / onCaptured
options.enableManualAdjust boolean 是否允许拍后手动拖拽四角 true true / false
options.cameraResult UTSCallback 拍照阶段回调(原图阶段)
options.adjustResult UTSCallback 确认矫正后回调(结果图阶段)

最短可用示例

import { detect } from "@/uni_modules/lizhao-doc-corrector";

detect({
  sessionId: "main",
  documentType: "contract",
  enableManualAdjust: true,
  cameraResult(res) {
    console.log("拍照结果", res.imagePath);
  },
  adjustResult(res) {
    console.log("矫正结果", res.imagePath, res.corners);
  },
  fail(err) {
    console.log("扫描失败", err.errCode, err.errMsg);
  },
});

startDocumentSession(options)

说明 启动原生文档捕捉会话。

支持平台 Android / iOS

参数

参数 类型 必填 说明 默认值 可选参数
options DocumentSessionOptions 会话参数对象 sessionId / documentType / mode / autoCapture / enableManualAdjust / enableEnhance / enhanceMode / enableOcr / torchEnabled / success / fail / complete / onStatus / onQuality / onCornersChanged / onCaptured
options.sessionId string 会话 ID default
options.documentType DocumentType 文档类型提示 unknown contract / idCard / bankCard / photo / poster / examPaper / paper / unknown
options.mode DocumentProcessMode 处理策略 balanced fast / balanced / accurate
options.autoCapture boolean 是否自动拍摄 false true / false
options.enableManualAdjust boolean 是否允许手动调整四点 true true / false
options.enableEnhance boolean 是否自动增强 true true / false
options.enhanceMode DocumentEnhanceMode 增强模式 color original / color / grayscale / bw / sharp / shadowRemoval
options.enableOcr boolean 是否启用 OCR false true / false
options.torchEnabled boolean 是否开启闪光灯 false true / false
options.success UTSCallback 会话启动成功回调
options.fail UTSCallback 会话启动失败回调
options.complete UTSCallback 会话启动完成回调
options.onStatus UTSCallback 会话状态持续回调
options.onQuality UTSCallback 文档质量持续回调
options.onCornersChanged UTSCallback 四角变化持续回调
options.onCaptured UTSCallback 原生全屏捕捉页拍摄并矫正完成回调

返回值

字段 类型 说明
sessionId string 会话 ID
platform string 当前平台
running boolean 是否已启动

captureDocument(options)

说明 触发当前原生全屏捕捉会话拍摄一张文档图片,并复用插件的检测、矫正和增强流程输出结果。

支持平台 Android / iOS

参数

参数 类型 必填 说明 默认值 可选参数
options CaptureDocumentOptions 捕捉参数对象 sessionId / success / fail / complete
options.sessionId string 会话 ID,需与 startDocumentSession 一致 default
options.success function 拍摄、矫正成功回调
options.fail function 拍摄失败或会话不存在时触发
options.complete function 拍摄流程结束回调

返回值

字段 类型 说明
sessionId string 会话 ID
imagePath string 原生相机拍摄并矫正后的输出图片路径
corners Array 检测或矫正使用的文档四角
qualityScore number 文档质量评分

correctDocument(options)

说明 对已有图片执行文档四角检测、透视矫正与可选增强。

支持平台 Android / iOS

参数

参数 类型 必填 说明 默认值 可选参数
options CorrectDocumentOptions 矫正参数对象 sessionId / imagePath / corners / stretchFix / enableEnhance / enhanceMode / documentType / success / fail / complete
options.sessionId string 会话 ID default
options.imagePath string 图片路径 本地路径、file://content://
options.corners Array 手动指定四角 自动检测 左上、右上、右下、左下
options.stretchFix boolean 是否拉伸修复 true true / false
options.enableEnhance boolean 是否增强 true true / false
options.enhanceMode DocumentEnhanceMode 增强模式 color original / color / grayscale / bw / sharp / shadowRemoval
options.documentType DocumentType 文档类型提示 unknown contract / idCard / bankCard / photo / poster / examPaper / paper / unknown
options.success function 成功回调
options.fail function 失败回调
options.complete function 完成回调

返回值

字段 类型 说明
sessionId string 会话 ID
imagePath string 输出图片路径
originalImagePath string 原图路径
corners Array 文档四角
qualityScore number 综合质量分
confidence number 置信度
warnings Array 警告列表
durationMs number 处理耗时
documentType DocumentType 文档类型
quality DocumentQualityInfo 质量详情

recognizeDocument(options)

说明 对图片执行通用 OCR、文档类型判别与结构化字段抽取。

支持平台 Android / iOS

参数

参数 类型 必填 说明 默认值 可选参数
options RecognizeDocumentOptions OCR 参数对象 sessionId / imagePath / documentType / mode / languages / success / fail / complete
options.sessionId string 会话 ID default
options.imagePath string 图片路径 本地路径、file://content://
options.documentType DocumentType 文档类型提示 unknown contract / idCard / bankCard / photo / poster / examPaper / paper / unknown
options.mode DocumentProcessMode 识别策略 balanced fast / balanced / accurate
options.languages Array OCR 语言 zh-Hans,en
options.success function 成功回调
options.fail function 失败回调
options.complete function 完成回调

返回值

字段 类型 说明
sessionId string 会话 ID
imagePath string 图片路径
documentType DocumentType 文档类型
confidence number 识别置信度
rawText string 原始文本
textBlocks Array 文本块
structuredFields Array 结构化字段
warnings Array 警告列表
durationMs number 识别耗时

错误码

错误码 含义 说明
9020001 platform unsupported 当前平台暂不支持
9020002 camera permission denied 相机权限被拒绝
9020003 album permission denied 相册权限被拒绝
9020004 camera unavailable 相机不可用或当前构建未启用相机 UI
9020005 image path is empty 图片路径为空
9020006 image read failed 图片读取失败
9020007 document corners not found 未检测到矩形文档
9020008 document correction failed 文档矫正失败
9020009 ocr unavailable OCR 不可用
9020010 export failed 导出失败
9020011 session not found 会话不存在
9020012 native dependency missing 原生依赖缺失

uni-app 示例

import {
  correctDocument,
  recognizeDocument,
  exportDocument,
} from "@/uni_modules/lizhao-doc-corrector";

correctDocument({
  imagePath: "/storage/emulated/0/DCIM/sample.jpg",
  documentType: "contract",
  enhanceMode: "color",
  success(res) {
    console.log("矫正结果", res.imagePath, res.corners);
    recognizeDocument({
      imagePath: res.imagePath,
      documentType: "contract",
      success(ocr) {
        console.log("OCR", ocr.rawText, ocr.structuredFields);
      },
    });
  },
  fail(err) {
    console.log("矫正失败", err.errCode, err.errMsg);
  },
});

exportDocument({
  imagePaths: ["/storage/emulated/0/DCIM/sample.jpg"],
  format: "pdf",
  fileName: "contract.pdf",
  success(res) {
    console.log("导出文件", res.filePath);
  },
});

uni-app x 示例

import {
  startDocumentSession,
  captureDocument,
  stopDocumentSession,
  correctDocument,
} from "@/uni_modules/lizhao-doc-corrector";

startDocumentSession({
  sessionId: "main",
  documentType: "examPaper",
  enableManualAdjust: true,
  enableOcr: true,
  onStatus(res) {
    console.log("会话状态", res.status);
  },
  onCaptured(res) {
    console.log("原生相机拍摄完成", res.imagePath, res.qualityScore);
  },
  success(res) {
    console.log("会话启动", res.sessionId);
  },
  fail(err) {
    console.log("会话失败", err.errCode, err.errMsg);
  },
});

captureDocument({
  sessionId: "main",
  success(res) {
    console.log("主动触发拍摄", res.imagePath);
  },
});

correctDocument({
  sessionId: "main",
  imagePath: "/tmp/exam-paper.jpg",
  documentType: "examPaper",
  success(res) {
    console.log("试卷矫正", res.qualityScore);
  },
});

stopDocumentSession({
  sessionId: "main",
});

注意事项

  • 本插件是 UTS 插件,只能通过插件根目录 import。
  • 你问的“是否拍摄时就矫正”:是。拍摄页会实时框选文档,拍后可手动拖点微调,确认后返回矫正图。
  • 当前 Harmony / Web / 小程序为降级实现,失败回调会收到 9020001
  • 当前 Android / iOS 版本已稳定公开 API 与回调语义,端侧相机 UI、透视算法、OCR 原生引擎会在后续版本继续增强;不会伪造 OCR 文本或伪造相机拍摄成功。
  • successfailcomplete 每次调用最多触发一次;持续状态只通过 onStatusonQualityonCornersChanged 返回。

常见问题

  1. 点击扫描后相机打不开
    检查相机权限是否授予;若 Android 侧使用了 CameraX/ML Kit 依赖,请确认已安装包含插件依赖的自定义基座。

  2. 拍完后页面没拿到结果
    请使用 detect 并监听 adjustResult;该回调是最终矫正结果的主回调。

  3. session not found
    说明会话已结束或会话 ID 不一致。推荐直接走 detect,避免手动管理会话状态。

联系方式

信-微:l-z-1-8-7-1512-5421(-去掉,不这样写会被和谐)

作者系列UTS插件

以下为已在 DCloud 插件市场上架的作者系列 UTS 插件,可按业务场景组合使用。未列出的插件表示当前未确认公开市场页,后续上架后再补充。

插件 能力方向 插件市场
lizhao-scan-pro 原生扫码、连续扫码、相册识别 查看插件
lizhao-choose-file 原生文件选择、上传、进度与取消 查看插件
lizhao-bg-audio 背景音频播放、队列、倍速与事件 查看插件
lizhao-smart-tts 系统 TTS、云端合成、听书方案 查看插件
lizhao-share-plus 系统分享、远程文件下载后分享 查看插件
lizhao-sqlite-pro 原生 SQLite、迁移、备份与诊断 查看插件
lizhao-icon-pro SVG 图标组件、多主题与缓存 查看插件
lizhao-cast-screen DLNA 投屏、AirPlay 路由入口 查看插件
lizhao-call-kit 电话、短信、通讯录原生能力 查看插件
lizhao-app-keepalive 应用保活、唤醒、自愈与报告 查看插件
lizhao-doc-corrector 文档扫描、矫正、增强与识别 查看插件
lizhao-emu-detect 模拟器环境检测、风险评分与证据 查看插件

隐私、权限声明

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

相机、相册、文件读写、震动

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

插件仅处理调用方传入或拍摄的本地图片,不主动上传数据

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