الماسح الضوئي للمستندات باستخدام حزمة تعلُّم الآلة على Android
استخدام واجهة برمجة تطبيقات الماسح الضوئي للمستندات في ML Kit لإضافة ميزة "الماسح الضوئي للمستندات" بسهولة إلى تطبيقك.
الميزة | التفاصيل |
---|---|
اسم Sdk | play-services-mlkit-document-scanner |
التنفيذ | ويتم تنزيل النماذج ومنطق الفحص وتدفق واجهة المستخدم ديناميكيًا من خلال خدمات Google Play |
تأثير حجم التطبيق | زيادة حجم التنزيل حوالي 300 كيلوبايت. |
وقت الإعداد | قد يضطر المستخدمون إلى انتظار تدفق النماذج والمنطق وواجهة المستخدم قبل استخدامه لأول مرة. |
جرّبه الآن
استكشِف نموذج تطبيق لعرض مثال على استخدام واجهة برمجة التطبيقات هذه.
قبل البدء
في ملف
build.gradle
على مستوى المشروع، تأكد من تضمين Maven في قسمَي "النص البرمجي" و"جميع المشاريع".أضِف التبعية لمكتبة الماسح الضوئي للمستندات في 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
إمكانية الوصول إلى عدد الصفحات الممسوحة ضوئيًا، وهي معرّفات الموارد المنتظمة (URI)
والصور بتنسيق 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 أو كليهما) التي المحتاجين.