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

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

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

इसे आज़माएं

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

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

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

  2. अपने मॉड्यूल की ऐप्लिकेशन-लेवल की ग्रेडल फ़ाइल में, ML Kit दस्तावेज़ की स्कैनर लाइब्रेरी के लिए डिपेंडेंसी जोड़ें. आम तौर पर, यह 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 में शुरू किए गए गतिविधि के नतीजों वाले एपीआई के मुताबिक, स्कैनर की गतिविधि शुरू की जा सकती है.

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