Pemindai dokumen dengan ML Kit di Android

Gunakan API pemindai dokumen ML Kit untuk menambahkan fitur pemindai dokumen dengan mudah ke aplikasi Anda.

Fitur Detail
Nama sdk play-services-mlkit-document-scanner
Penerapan Model, logika pemindaian, dan alur UI didownload secara dinamis oleh Layanan Google Play.
Dampak ukuran aplikasi Peningkatan ukuran download sebesar ~300 KB.
Waktu inisialisasi Pengguna mungkin harus menunggu model, logika, dan alur UI untuk diunduh sebelum digunakan pertama.

Cobalah

Cobalah aplikasi contoh untuk melihat contoh penggunaan API ini.

Sebelum memulai

  1. Dalam file build.gradle level project, pastikan Anda menyertakan ID Repositori Maven di bagian buildscript dan allprojects Anda.

  2. Tambahkan dependensi untuk library pemindai dokumen ML Kit ke file gradle level aplikasi modul, yang biasanya adalah app/build.gradle:

dependencies {
   // …
   implementation 'com.google.android.gms:play-services-mlkit-document-scanner:16.0.0-beta1'
}

Konfigurasi Document Scanner

Alur penggunaan pemindai dokumen (yang mencakup layar jendela bidik khusus dan layar pratinjau) disediakan oleh SDK. Jendela bidik dan layar pratinjau mendukung kontrol yang dapat disesuaikan berikut:

  • mengimpor dari galeri foto
  • menetapkan batas jumlah halaman yang dipindai
  • mode pemindai (untuk mengontrol set fitur dalam alur)

Anda dapat mengambil file PDF dan JPEG untuk dokumen yang dipindai.

Buat instance GmsDocumentScannerOptions untuk mengonfigurasi opsi pemindai:

Kotlin

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

Java

GmsDocumentScannerOptions options = new GmsDocumentScannerOptions.Builder()
    .setGalleryImportAllowed(false)
    .setPageLimit(2)
    .setResultFormats(RESULT_FORMAT_JPEG, RESULT_FORMAT_PDF)
    .setScannerMode(SCANNER_MODE_FULL)
    .build();

Pindai dokumen

Setelah membuat GmsDocumentScannerOptions, dapatkan dari GmsDocumentScanner. Anda dapat memulai aktivitas pemindai mengikuti Activity Result API diperkenalkan di AndroidX.

Ketika pemindaian dokumen selesai, objek GmsDocumentScanningResult akan memberikan akses ke jumlah halaman yang dipindai, URI dari gambar dalam format JPEG dan PDF sesuai dengan yang didefinisikan melalui setResultFormats:

Kotlin

val scanner = GmsDocumentScanning.getClient(options)
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 = pages.get(0).getImageUri()
        }
      }
      result.getPdf()?.let { pdf ->
        val pdfUri = pdf.getUri()
        val pageCount = pdf.getPageCount()
      }
    }
  }
}

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

Java

GmsDocumentScanner scanner = GmsDocumentScanning.getClient(options);
ActivityResultLauncher<IntentSenderRequest> scannerLauncher =
  registerForActivityResult(
    new StartIntentSenderForResult(),
      result -> {
        if (result.getResultCode() == RESULT_OK) {
          GmsDocumentScanningResult result = GmsDocumentScanningResult.fromActivityResultIntent(result.getData());
          for (Page page : result.getPages()) {
            Uri imageUri = pages.get(0).getImageUri();
          }

          Pdf pdf = result.getPdf();
          Uri pdfUri = pdf.getUri();
          int pageCount = pdf.getPageCount();
        }
      });

scanner.getStartScanIntent(activity)
  .addOnSuccessListener(intentSender ->
    scannerLauncher.launch(new IntentSenderRequest.Builder(intentSender).build()))
  .addOnFailureListener(...);

Tips untuk meningkatkan performa

Pertimbangkan bahwa membuat file dokumen memerlukan waktu dan pemrosesan , jadi hanya minta format output (JPEG, atau PDF, atau keduanya) yang butuhkan.