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

ML Kit doküman tarayıcı API'sini kullanarak en iyi şekilde yararlanabilirsiniz.

Özellik Ayrıntılar
SDK adı play-services-mlkit-document-scanner
Uygulama Modeller, tarama mantığı ve kullanıcı arayüzü akışı, otomatik olarak Google Play Hizmetleri.
Uygulama boyutu etkisi İndirme boyutunda yaklaşık 300 KB artış.
Başlatma süresi Kullanıcıların model, mantık ve kullanıcı arayüzü akışının uygulamayı indirin.

Deneyin

Çeşitli örnek uygulama bu API'nin örnek kullanımını görebilirsiniz.

Başlamadan önce

  1. Proje düzeyindeki build.gradle dosyanıza Google'ın Maven deposunu hem derleme komut dosyanız hem de allprojects bölümlerinizde kullanın.

  2. ML Kit belge tarayıcı kitaplığının bağımlılığını modülünün uygulama düzeyindeki gradle dosyasını yükleyin. Bu dosya genellikle app/build.gradle biçimindedir:

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ı içerir) ve önizleme ekranı) 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 örneği. Ardından tarayıcı etkinliğini başlatabilirsiniz takip ediliyor Etkinlik Sonucu API'leri AndroidX'te kullanıma sunuldu.

Belge tarama işlemi tamamlandığında GmsDocumentScanningResult nesnesi taranan sayfa sayısına, dokümanın URI'larına JPEG ve PDF formatlarındaki resimler, 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(...);

Performansı artırmaya yönelik ipuçları

Belge dosyalarının oluşturulmasının zaman aldığını ve işlenmesini gerektirdiğini unutmayın. Bu nedenle, yalnızca gerçekte kullandığınız çıkış biçimlerini (JPEG, PDF veya her ikisi) gerekiyor.