Android'de ML Kit ile belge tarayıcı
Uygulamanıza kolayca belge tarayıcı özelliği eklemek için ML Kit document Scanner API'yi kullanın.
Özellik | Ayrıntılar |
---|---|
SDK adı | play-services-mlkit-document-scanner |
Uygulama | Modeller, tarama mantığı ve kullanıcı arayüzü akışı, Google Play Hizmetleri tarafından dinamik olarak indirilir. |
Uygulama boyutu etkisi | İndirme boyutunda yaklaşık 300 KB artış. |
Başlatma süresi | Kullanıcıların ilk kullanımdan önce modellerin, mantığın ve kullanıcı arayüzü akışının indirilmesini beklemesi gerekebilir. |
Deneyin
Bu API'nin örnek bir kullanımını görmek için örnek uygulamayı inceleyin.
Başlamadan önce
Proje düzeyindeki
build.gradle
dosyanızda, Google'ın Maven deposunu hem buildscript hem de allprojects bölümlerinize eklediğinizden emin olun.Makine Öğrenimi Kiti doküman tarayıcı kitaplığının bağımlılığını, modülünüzün genellikle app/build.gradle olan uygulama düzeyindeki Gradle dosyasına ekleyin:
dependencies {
// …
implementation 'com.google.android.gms:play-services-mlkit-document-scanner:16.0.0-beta1'
}
Belge Tarayıcı yapılandırması
Belge tarayıcı kullanıcı işlemleri akışı (özel bir vizör ekranı ve önizleme ekranı içerir) SDK tarafından sağlanır. Vizör ve önizleme ekranı aşağıdaki özelleştirilebilir denetimleri destekler:
- fotoğraf galerisinden içe aktarılıyor
- taranan sayfa sayısı için bir sınır belirleme
- tarayıcı modu (akıştaki özellik gruplarını kontrol etmek için)
Taranan dokümanlarınız için hem PDF hem de JPEG dosyaları alabilirsiniz.
Tarayıcı seçeneklerini yapılandırmak için GmsDocumentScannerOptions
örneğini oluşturun:
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();
Dokümanları tara
GmsDocumentScannerOptions
öğenizi oluşturduktan sonra GmsDocumentScanner
örneği alın. Daha sonra, AndroidX'te sunulan Etkinlik Sonucu API'lerini izleyerek tarayıcı etkinliğini başlatabilirsiniz.
Belge tarama işlemi tamamlandığında, bir GmsDocumentScanningResult
nesnesi taranan sayfa sayısına ve setResultFormats
aracılığıyla tanımlanana uygun şekilde JPEG biçimindeki ve PDF biçimindeki görüntülerin URI'larına erişim sağlar:
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(...);
Performansı artırmaya yönelik ipuçları
Belge dosyaları oluşturmanın zaman aldığını ve işlem gücü gerektirdiğini göz önünde bulundurun. Bu nedenle, yalnızca gerçekten ihtiyacınız olan çıkış biçimlerini (JPEG, PDF veya her ikisi) isteyin.