更新记录
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、
findContours、approxPolyDP、四边形评分和角点排序生成实时预览框,旧自研边缘/亮度算法仅作为兜底。 - 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_preview、opencv_capture、preview_locked、edge_contour、vision_rectangle、preview_fallback、manual_adjust、manual_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.xml、config.json |
使用 CameraX / ML Kit 依赖时需要 |
| iOS | 相机、相册读取、相册写入 | utssdk/app-ios/Info.plist、PrivacyInfo.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 文本或伪造相机拍摄成功。
success、fail、complete每次调用最多触发一次;持续状态只通过onStatus、onQuality、onCornersChanged返回。
常见问题
-
点击扫描后相机打不开
检查相机权限是否授予;若 Android 侧使用了 CameraX/ML Kit 依赖,请确认已安装包含插件依赖的自定义基座。 -
拍完后页面没拿到结果
请使用detect并监听adjustResult;该回调是最终矫正结果的主回调。 -
报
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 |
模拟器环境检测、风险评分与证据 | 查看插件 |

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 6484
赞赏 5
下载 12335296
赞赏 1924
赞赏
京公网安备:11010802035340号