文档扫描(DocumentScanner)使用指导:拍纸质文档,自动矫正导出图片和 PDF

« 返回

机器学习套件(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 源码与操作指导

下载 .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。

文档反馈