الماسح الضوئي للمستندات باستخدام حزمة ML Kit على Android

استخدِم واجهة برمجة التطبيقات الخاصة بميزة "الماسح الضوئي للمستندات" في "حزمة تعلُّم الآلة" لإضافة ميزة الماسح الضوئي للمستندات بسهولة إلى تطبيقك.

الميزة التفاصيل
اسم حزمة تطوير البرامج (SDK) play-services-mlkit-document-scanner
التنفيذ تنزيل النماذج ومنطق المسح ومسار واجهة المستخدم ديناميكيًا من قِبل "خدمات Google Play"
تأثير حجم التطبيق زيادة حجم التنزيل بمقدار 300 كيلوبايت تقريبًا
وقت الإعداد قد يحتاج المستخدمون إلى الانتظار إلى أن يتم تنزيل النماذج والمنطق ومسار واجهة المستخدم قبل الاستخدام الأول.

جرّبه الآن

يمكنك الاطّلاع على نموذج التطبيق لرؤية مثال على استخدام واجهة برمجة التطبيقات هذه.

قبل البدء

  1. في ملف build.gradle على مستوى المشروع، احرص على تضمين مستودع Maven من Google في كلٍّ من قسمَي 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.

عند اكتمال عملية مسح المستند ضوئيًا، سيتيح عنصر GmsDocumentScanningResult الوصول إلى عدد الصفحات التي تم مسحها ضوئيًا وعناوين URL للصور بتنسيق 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 أو كليهما) التي تحتاج إليها فقط.