Android'de ML Kiti ile belge tarayıcı

Uygulamanıza kolayca belge tarayıcı özelliği eklemek için ML Kiti belge tarayıcı API'sini 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 boyutunun etkisi İndirme boyutu yaklaşık 300 KB artar.
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 kullanımını görmek için örnek uygulamayı inceleyin.

Başlamadan önce

  1. Proje düzeyindeki build.gradle dosyanızda, Google'ın Maven deposunu hem buildscript hem de allprojects bölümlerinize eklediğinizden emin olun.

  2. ML Kit doküman tarayıcısı kitaplığının bağımlılığını, modülünüzün uygulama düzeyindeki Gradle dosyasına (genellikle app/build.gradle) ekleyin:

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

Belge Tarayıcı yapılandırması

Doküman tarayıcısı kullanıcı 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 kontrolleri destekler:

  • Fotoğraf galerisinden içe aktarma
  • Taranan sayfa sayısı için sınır belirleme
  • tarayıcı modu (akıştaki özellik gruplarını kontrol etmek için)

Taranmış dokümanlar için hem PDF hem de JPEG dosyaları alabilirsiniz.

Tarayıcı seçeneklerini yapılandırmak için GmsDocumentScannerOptions nesnesini 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'nizi oluşturduktan sonra GmsDocumentScanner örneği alın. Ardından, AndroidX'te kullanıma sunulan Activity Result API'lerini izleyerek tarayıcıyı başlatabilirsiniz.

Belge taraması tamamlandığında GmsDocumentScanningResult nesnesi, taranan sayfaların sayısına, JPEG biçimindeki resimlerin URI'lerine ve setResultFormats aracılığıyla tanımlananlara göre PDF'ye erişmenizi 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ı iyileştirmeye yönelik ipuçları

Doküman dosyalarının oluşturulmasının zaman aldığını ve işlem gücü gerektirdiğini göz önünde bulundurarak yalnızca gerçekten ihtiyacınız olan çıkış biçimlerini (JPEG veya PDF ya da her ikisi) isteyin.