机器学习套件(ML Kit)组件在在线版和教育版中提供,离线版(含机房版)不包含。
暂未开放:该组件暂未上架组件面板,本页保留供了解(原因与恢复进度见 组件参考)。
它能做什么
文档扫描调起系统的扫描界面:对准纸张后自动识别四边、纠正透视,可以连续扫多页,支持裁剪、黑白/增强滤镜、去阴影污点。完成后返回每页的 JPG 文件路径和合并好的 PDF 文件路径,能直接给「图像」组件显示、用「分享」组件发送。
准备工作
- 需要 Google Play 服务:扫描界面由 Google Play 服务提供,首次使用要联网下载扫描模块;没有 GMS 的设备会触发「扫描失败」。
- 输出格式:
both(默认,图片和 PDF 都要)、jpeg、pdf;「页数上限」控制最多扫几页。 - 联机调试:安卓上用 AI 伴侣调试需要安装 MLKit 版 AI 伴侣(应用宝,包名 cn.fun123.appinventor);普通版伴侣不含识别引擎,调用时会触发「屏幕.出现错误时」(错误码 4722)。直接打包 APK 安装测试不受影响。
- 安装包体积:只有用到本组件的 App 才会打包它的识别引擎与模型,体积以编译结果为准。
- 鸿蒙:暂不支持:鸿蒙上调用「开始扫描文档」会触发「扫描失败」并说明原因。
案例一:扫描文档并显示第一页
扫描前把页数和输出格式写进属性,结果事件里显示第一页、列出全部图片路径:
when 按钮_扫描.Click() {
文档扫描1.PageLimit = 文本输入框_页数.Text
文档扫描1.ResultFormat = 下拉框_格式.Selection
文档扫描1.Scan()
}
when 文档扫描1.GotScanResult(页数, 图片路径列表, PDF路径) {
标签_状态.Text = join("扫描完成,共 ", 页数, " 页")
列表显示框_文件.Elements = 图片路径列表
if length(图片路径列表) > 0 {
图像_预览.Picture = select(图片路径列表, 1)
}
}
when 文档扫描1.ScanCancelled() {
标签_状态.Text = "已取消扫描"
}
案例二:分享 PDF 与清理文件
把 PDF 路径存到全局变量,点「分享 PDF」时交给「分享」组件;「清空缓存」删除本组件生成的全部文件并返回个数:
global PDF路径 = ""
when 文档扫描1.GotScanResult(页数, 图片路径列表, PDF路径) {
PDF路径 = PDF路径
}
when 按钮_分享.Click() {
if PDF路径 == "" {
标签_状态.Text = "还没有 PDF,先扫描一次"
} else {
信息分享器1.ShareFile(PDF路径)
}
}
when 按钮_清理.Click() {
标签_状态.Text = join("已删除 ", 文档扫描1.ClearCache(), " 个扫描文件")
}
结果数据说明
「图片路径列表」只在输出格式含 jpeg 时有内容;「PDF路径」只在含 pdf 时有内容。文件保存在应用私有目录,卸载应用即删除。
常见问题
| 现象 | 原因与处理 |
|---|---|
| 点扫描直接报失败 | 设备没有 Google Play 服务,或首次下载扫描模块失败(需联网) |
| 没有 PDF | 「结果格式」选了 jpeg;改成 both 或 pdf |
| 存储越来越大 | 定期调「清空缓存」 |
完整 .aia 源码与操作指导
导入 DocumentScannerDemo.aia 后可以直接打包 APK 运行;用 AI 伴侣联机调试请安装 MLKit 版 AI 伴侣。源码文件已通过正式编辑器载入、后台导入和 APK 编译校验;真机识别效果请以实际设备为准。
| 功能 | 操作 | 预期结果 |
|---|---|---|
| 扫描文档 | 点「扫描文档」按系统界面拍 1~5 页 | 显示页数、第一页图片和全部文件列表 |
| 切换输出格式 | 下拉框选 jpeg / pdf 再扫描 | jpeg 时没有 PDF;pdf 时列表为空 |
| 查看任一页 | 点文件列表中的路径 | 图像区显示该页 |
| 分享 PDF | 扫描后点「分享 PDF」 | 调起系统分享面板 |
| 取消与清理 | 扫描界面里返回;点「清理文件」 | 提示已取消;提示删除的文件个数 |
案例界面与积木源码在仓库 docs/markdown/reference/components/guide/examples/DocumentScannerDemo/,SHA-256:2bedf27a173b13012f7d2132348652a35337dec4e0a033db2ffe3499e6198cec。
扫码添加客服咨询