Android'de Makine Öğrenimi Kiti ile belge tarayıcı

Uygulamanıza kolayca belge tarayıcı özelliği eklemek için ML Kit 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 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 kullanımını görmek için örnek uygulamayı deneyin.

Başlamadan önce

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

  2. ML Kit belge tarayıcı kitaplığına ilişkin bağımlılığı, modülünüzün uygulama düzeyindeki gradle dosyasına ekleyin. Bu dosya genellikle app/build.gradle türündedir:

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ını 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 aktarılıyor
  • taranan sayfa sayısı için bir sınır ayarlama
  • 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ını alabilirsiniz.

Tarayıcı seçeneklerini yapılandırmak için GmsDocumentScannerOptions öğesini örneklendirin:

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 oluşturduktan sonra GmsDocumentScanner öğesinin bir örneğini alın. Daha sonra, AndroidX'te sunulan Etkinlik Sonucu API'lerini izleyerek tarayıcı etkinliğini başlatabilirsiniz.

Belge tarama tamamlandığında, bir GmsDocumentScanningResult nesnesi taranan sayfa sayısına, setResultFormats aracılığıyla tanımlanana uygun olarak JPEG ve PDF biçimindeki resimlerin URI'larına erişim izni verir:

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 veya PDF veya her ikisi) isteyin.