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

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

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

इसे आज़माएं

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

वेब कंटेनर इंस्टॉल करने से पहले

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

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

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

Document Scanner का कॉन्फ़िगरेशन

दस्तावेज़ स्कैनर का यूज़र फ़्लो (जिसमें खास व्यूफ़ाइंडर स्क्रीन और झलक दिखाने वाली स्क्रीन होती है) 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 नतीजे 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 या दोनों) का अनुरोध करें.