Android पर ML Kit के साथ दस्तावेज़ स्कैन करने की सुविधा

अपने ऐप्लिकेशन में दस्तावेज़ स्कैन करने की सुविधा आसानी से जोड़ने के लिए, ML Kit के दस्तावेज़ स्कैन करने वाले API का इस्तेमाल करें.

सुविधा जानकारी
SDK टूल का नाम play-services-mlkit-document-scanner
लागू करना Google Play services, मॉडल, स्कैन करने की लॉजिक, और यूज़र इंटरफ़ेस (यूआई) फ़्लो को डाइनैमिक तरीके से डाउनलोड करती है.
ऐप्लिकेशन के साइज़ पर पड़ने वाला असर डाउनलोड करने के लिए, साइज़ में करीब 300 केबी की बढ़ोतरी.
शुरू होने में लगने वाला समय पहली बार इस्तेमाल करने से पहले, उपयोगकर्ताओं को मॉडल, लॉजिक, और यूज़र इंटरफ़ेस (यूआई) फ़्लो के डाउनलोड होने का इंतज़ार करना पड़ सकता है.

इसे आज़माएं

इस एपीआई के इस्तेमाल का उदाहरण देखने के लिए, सैंपल ऐप्लिकेशन का इस्तेमाल करें.

शुरू करने से पहले

  1. अपने प्रोजेक्ट-लेवल की build.gradle फ़ाइल में, पक्का करें कि आपने buildscript और allprojects, दोनों सेक्शन में Google की Maven रिपॉज़िटरी शामिल की हो.

  2. अपने मॉड्यूल की ऐप्लिकेशन-लेवल की gradle फ़ाइल में, ML Kit के दस्तावेज़ स्कैन करने वाली लाइब्रेरी के लिए डिपेंडेंसी जोड़ें. आम तौर पर, इसे app/build.gradle कहा जाता है:

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

दस्तावेज़ स्कैन करने की सुविधा का कॉन्फ़िगरेशन

दस्तावेज़ स्कैन करने की सुविधा का इस्तेमाल करने के लिए, यूज़र फ़्लो (जिसमें व्यूफ़ाइंडर और प्रीव्यू स्क्रीन शामिल है) SDK टूल से मिलता है. व्यूफ़ाइंडर और प्रीव्यू स्क्रीन में, ये कंट्रोल शामिल होते हैं जिन्हें अपनी ज़रूरत के हिसाब से बदला जा सकता है:

  • फ़ोटो गैलरी से इंपोर्ट करना
  • स्कैन किए गए पेजों की संख्या की सीमा तय करना
  • स्कैनर मोड (फ़्लो में, सुविधाओं के सेट को कंट्रोल करने के लिए)

स्कैन किए गए दस्तावेज़ों के लिए, PDF और JPEG, दोनों फ़ाइलें वापस पाई जा सकती हैं.

स्कैनर के विकल्पों को कॉन्फ़िगर करने के लिए, GmsDocumentScannerOptions को इंस्टैंशिएट करें:

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();

दस्तावेज़ स्कैन करें

आपके GmsDocumentScannerOptions बनाने के बाद, GmsDocumentScanner का इंस्टेंस पाएं. इसके बाद, AndroidX में पेश किए गए, गतिविधि के नतीजों के एपीआई की मदद से, स्कैनर की गतिविधि शुरू की जा सकती है.

दस्तावेज़ स्कैन करने की प्रोसेस पूरी होने के बाद, GmsDocumentScanningResult ऑब्जेक्ट से, स्कैन किए गए पेजों की संख्या, JPEG फ़ॉर्मैट में मौजूद इमेज के यूआरआई, और setResultFormats के ज़रिए तय किए गए फ़ॉर्मैट के हिसाब से, PDF के बारे में जानकारी मिलेगी:

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(...);

परफ़ॉर्मेंस बेहतर करने के बारे में सलाह

ध्यान रखें कि दस्तावेज़ों की फ़ाइलें जनरेट होने में समय लगता है और इसके लिए प्रोसेसिंग पावर की ज़रूरत होती है. इसलिए, आउटपुट के सिर्फ़ उन फ़ॉर्मैट (JPEG, PDF या दोनों) के लिए अनुरोध करें जिनकी आपको ज़रूरत है.