Android पर ML Kit की मदद से दस्तावेज़ स्कैन करने वाला ऐप्लिकेशन

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

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

इसे आज़माएं

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

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

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

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

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

दस्तावेज़ स्कैन करने वाले ऐप्लिकेशन का कॉन्फ़िगरेशन

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 में पेश किए गए Activity Result API का इस्तेमाल करके, स्कैनर गतिविधि शुरू की जा सकती है.

दस्तावेज़ स्कैन हो जाने के बाद, GmsDocumentScanningResult ऑब्जेक्ट से यह जानकारी मिलेगी: स्कैन किए गए पेजों की संख्या, JPEG फ़ॉर्मैट में मौजूद इमेज के यूआरआई, और PDF फ़ॉर्मैट में मौजूद इमेज के यूआरआई. यह जानकारी, 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(...);

परफ़ॉर्मेंस को बेहतर बनाने के लिए सुझाव

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