Pemindai dokumen dengan ML Kit di Android
Gunakan Document Scanner API ML Kit untuk menambahkan fitur pemindai dokumen ke aplikasi Anda dengan mudah.
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 ~300 KB. |
Waktu inisialisasi | Pengguna mungkin harus menunggu model, logika, dan alur UI didownload sebelum penggunaan pertama kali. |
Cobalah
Coba aplikasi contoh untuk melihat contoh penggunaan API ini.
Sebelum memulai
Pada file
build.gradle
level project, pastikan Anda menyertakan repositori Maven Google di bagian buildscript dan allproject.Tambahkan dependensi untuk library pemindai dokumen ML Kit ke file gradle level aplikasi modul Anda, biasanya 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 dan layar pratinjau khusus) 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
instance GmsDocumentScanner
. Kemudian, Anda dapat memulai aktivitas pemindai
dengan mengikuti
Activity Result API
yang diperkenalkan di AndroidX.
Setelah pemindaian dokumen selesai, objek GmsDocumentScanningResult
akan memberikan akses ke jumlah halaman yang dipindai, URI
gambar dalam format JPEG, dan PDF sesuai dengan yang ditentukan 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 menghasilkan file dokumen membutuhkan waktu dan memerlukan daya pemrosesan, jadi hanya minta format output (JPEG, atau PDF, atau keduanya) yang benar-benar Anda butuhkan.