查看原文
其他

使用 ML Kit 文档扫描器 API 轻松将文档扫描功能添加至您的应用

郭霖
2024-07-22

The following article is from Android 开发者 Author Android



/   今日科技快讯   /

近日,据知情人士透露,Facebook的母公司Meta已与苹果公司就将Meta的生成式人工智能模型整合到最近发布的用于iPhone和其他设备的人工智能系统Apple Intelligence中进行了讨论。除了谷歌和Meta,人工智能初创公司Anthropic和Perplexity也一直在与苹果商谈,希望把它们的生成式人工智能引入苹果智能系统。

/   前言   /

我们很高兴为您介绍近期推出的 ML Kit 文档扫描器 API。该全新 API 能帮助您轻松地将高级文档扫描功能添加至您的 Android 应用,并提供高质量且一致的用户界面。ML Kit 文档扫描器 API 能让您的用户快速轻松地对纸质文档进行数字化处理。

与其他 ML Kit API 一样,ML Kit 文档扫描器 API 能让您在不具备任何机器学习 (ML) 知识的情况下,无缝集成由机器学习 (ML) 驱动的各种功能。


/   为什么选择文档扫描器 SDK?   /

尽管我们正处于数字时代,但在我们的日常生活中仍会接触许多纸质文档和打印文件,更别提身份证和收据等实体文件了。

ML Kit 文档扫描器 API 具有许多优势,包括:

  • 高质量且一致的用户界面,用于对实体文档进行数字化处理。
  • 借助精准的角点和边缘检测技术进行精确的文档检测,实现无缝扫描体验和最佳扫描效果。
  • 用户可借助灵活的功能裁剪已扫描的文档和添加滤镜,并且去除手指、污渍以及其他瑕疵,最终还能将数字化文件以 PDF 和 JPEG 格式发送回您的应用。
  • 设备端处理,保护您的隐私。
  • 无需相机权限的完整解决方案。

Google Drive Android 应用和 Google Pixel 相机现均已采用 ML Kit 文档扫描器 API。


/   即刻探索   /

ML Kit 文档扫描器 API 需要 Android API 级别 21 及更高版本。模型、扫描逻辑和用户界面流程都是通过 Google Play 服务动态下载的,因此 ML Kit 文档扫描器 API 并不会占用您应用的太多内存。

如要将该 API 集成到您的应用中,请先配置扫描器选项并获取扫描器客户端:

val options = GmsDocumentScannerOptions.Builder()
    .setGalleryImportAllowed(false)
    .setPageLimit(2)
    .setResultFormats(RESULT_FORMAT_JPEG, RESULT_FORMAT_PDF)
    .setScannerMode(SCANNER_MODE_FULL)
    .build()
val scanner = GmsDocumentScanning.getClient(options)

然后注册 ActivityResultCallback 以接收扫描结果:

val scannerLauncher = registerForActivityResult(StartIntentSenderForResult()) {
  result -> {
    if (result.resultCode == RESULT_OK) {
      val result =
        GmsDocumentScanningResult.fromActivityResultIntent(result.data)
      result.getPages()?.let { pages ->
        for (page in pages) {
          val imageUri = page.getImageUri()
        }
      }
      result.getPdf()?.let { pdf ->
        val pdfUri = pdf.getUri()
        val pageCount = pdf.getPageCount()
      }
    }
  }
}

最后启动文档扫描器 Activity:

scanner.getStartScanIntent(activity)
  .addOnSuccessListener { intentSender ->   
    scannescannerrLauncher.launch(IntentSenderRequest.Builder(intentSender).build())
  }
  .addOnFailureListener { ... }

推荐阅读:
我的新书,《第一行代码 第3版》已出版!
Android FCM 推送详解,出海应用必备
从Java 6到Java 21的重要变动

欢迎关注我的公众号
学习技术或投稿


长按上图,识别图中二维码即可关注
继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存