更新记录
1.1.11(2026-08-06)
- iOS 拍后全屏微调页改为模糊
aspectFill背景与完整aspectFit前景双层结构,重拍、提示和确认操作使用安全区悬浮胶囊,四个拖动点始终限制在真实前景图片区域内。 - 修复 iOS 拖动四角后的矫正结果与框选区域不一致:手动页使用规范化
CGImage真实像素尺寸,Core Image 通过CIImage(cgImage:)和实际 extent 统一 UIKit 左上原点到滤镜坐标。 - uni-app 与 uni-app x 示例升级为专业扫描工具:首屏突出扫描入口,矫正结果大图优先,质量摘要和两列工具适配窄屏,高级 API、路径和日志默认折叠但完整保留。
- iOS 原生 Swift 已变化,升级后必须重新运行 iOS 原生联编或制作并安装匹配源码的 iOS 自定义基座;Android 原生代码未修改,不需要因本版本重新制作 Android 基座。
1.1.10(2026-08-06)
- iOS 实时四角参考框:原生相机新增 Vision 矩形检测,未可靠识别到文档时明确清空提示框,不伪造检测结果。
- iOS 拍照后新增拍后手动四角微调、重拍和确认矫正,确认时使用四个真实原图像素角点完成透视矫正,不再使用空角点直接输出。
- 修复 iOS 扫描原图和矫正结果图生成成功但 uni-app 页面无法显示的问题:文件复制到当前 DCloud
_doc应用目录后再回传可访问路径。 - 公共 API、Demo 的
detect(...)调用和 Android 实现均未改变;升级后需重新运行 iOS 原生联编或重新制作并安装匹配源码的 iOS 自定义基座。
1.1.9(2026-07-31)
- 修复 uni-app x 示例日志样式在 HarmonyOS 编译时使用不受支持的
white-space: pre-wrap导致构建失败的问题,改用平台支持的normal并保留自动换行。 - 本版本只修改示例样式和发布元数据,不改变文档检测、矫正、OCR、导出或平台原生实现,无需因此重新制作自定义基座。
平台兼容性
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 字段抽取。
Android 成像清晰度优化
插件针对华为 Mate30 拍照后手动微调预览和最终矫正图偏模糊的问题,重做 Android 拍摄、精确有界解码和输出处理链路;同时保留华为 P40 等高像素设备的 OOM 防护。最终效果仍会受镜头对焦、拍摄距离、光线和手持稳定性影响。
iOS 拍后矫正与示例体验
- iOS 拍后全屏微调使用完整原图作为业务坐标基准,拖动点只落在真实图片区域;确认时按原图像素和 Core Image 实际 extent 输出框选区域。
- iOS 原生相机、实时参考框、重拍、四角微调和确认矫正均由插件内部完成;升级原生实现后需要重新运行 iOS 原生联编或制作匹配的 iOS 自定义基座。
- uni-app 与 uni-app x 提供一致的专业扫描工具示例,首屏突出扫描入口,结果图优先展示;高级 API、文件路径和调试日志仍可在“开发者工具”中展开。
- 示例页视觉和布局属于前端资源,单独调整示例时无需重新制作自定义基座。
功能特色
- 原生全屏拍摄、实时四角参考、拍后全屏微调、透视矫正和增强在一个插件内闭环,不依赖 uni 页面相机组件拼接核心能力。
fast:速度优先,适合连续拍摄或更关注响应速度的场景。balanced:默认,画质与内存平衡,适合合同、试卷和日常文档扫描。accurate:质量优先,适合文字较小且设备内存充足的场景。- Android 会按当前可用堆内存预估解码与输出峰值,内存不足时会安全降档,并保留最多一次 OOM 降档重试。
- 最终图会重新读取拍摄 JPEG 处理;JPEG 压缩、写入或可解码校验失败时返回明确错误,不会把原图伪装成矫正成功结果。
Android 三档处理策略
| mode | 适合场景 | 拍摄与处理取向 | 内存策略 |
|---|---|---|---|
fast |
连续拍摄、低延迟交互 | 优先速度,使用较低的有界采集与输出目标 | 预算不足时返回明确失败,不向更高档升级 |
balanced |
默认文档扫描 | 平衡小字清晰度、处理耗时和内存 | 预算不足时降到 fast |
accurate |
小字、细线且设备内存充足 | 优先质量,使用更高的有界目标 | 预算不足时依次降到 balanced / fast |
三档只影响 Android 原生拍摄会话;iOS 保持现有处理策略。档位是质量目标而不是无条件分辨率承诺,插件会先按设备真实支持尺寸和剩余内存选择安全配置。
接入方式选择
| 场景 | 推荐入口 | 说明 |
|---|---|---|
| 一次完成拍照、微调和矫正 | detect(options) |
推荐主入口,默认 balanced |
| 自行管理会话和后续捕捉 | startDocumentSession(options) |
适合需要暂停、恢复或连续捕捉的业务 |
| 处理已有图片 | correctDocument / enhanceDocument |
独立图片 API 不接收会话 mode |
| Harmony、Web 或小程序 | 同名 API 的明确失败回调 | 当前不伪造成功,详见平台表 |
本插件不使用老式 App 原生语言插件,不支持 uni.requireNativePlugin 调用方式。页面端必须从插件根目录 import。
// 页面端只能从插件根目录导入需要的 API。
import { correctDocument, recognizeDocument } from "@/uni_modules/lizhao-doc-corrector";
最短可用示例
// Android 默认使用 balanced;先接收拍照阶段结果,再接收最终矫正结果。
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);
},
});
支持平台
| 平台 | 是否支持 | 说明 |
|---|---|---|
| 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 页面相机组件完成核心拍摄。该成像优化修改了 Android CameraX、UTS 与 Kotlin 原生逻辑,升级相关实现后需要重新打 Android 自定义基座或重新运行原生联编;只更新 wgt/appResource 不会把新原生实现装入旧基座。
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.mode | DocumentProcessMode | 否 | Android 拍摄处理策略;内存不足时会按 accurate -> balanced -> fast 安全降档 |
balanced |
fast / balanced / accurate |
| options.enableManualAdjust | boolean | 否 | 是否允许拍后手动拖拽四角 | true | true / false |
| options.cameraResult | UTSCallback | 否 | 拍照阶段回调(原图阶段) | 无 | 无 |
| options.adjustResult | UTSCallback | 否 | 确认矫正后回调(结果图阶段) | 无 | 无 |
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 | 否 | Android 拍摄处理策略;内存不足时会按 accurate -> balanced -> fast 安全降档 |
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 示例
// 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 示例
// uni-app x:会话 API 需要保持同一个 sessionId,并在业务结束时主动停止。
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-nfc-pro |
NFC 标签读写、NDEF、IsoDep 与诊断 | 查看插件 |
lizhao-float-window |
悬浮窗、画中画、权限与诊断 | 查看插件 |
lizhao-device-id |
设备标识、隐私策略与诊断 | 查看插件 |
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 |
模拟器环境检测、风险评分与证据 | 查看插件 |
lizhao-gallery-pro |
相册媒体分页、筛选、缩略图与导出 | 查看插件 |
lizhao-video-thumb |
视频封面、批量取帧与 Base64 返回 | 查看插件 |
lizhao-ble |
BLE 扫描、连接、读写、通知与自动重连 | 查看插件 |
lizhao-sse-pro |
SSE、Line、JSONL 与 Raw 流式请求 | 查看插件 |

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