"الماسح الضوئي للمستندات" مع "حزمة تعلّم الآلة" على Android
يمكنك استخدام واجهة برمجة التطبيقات "الماسح الضوئي للمستندات" في "حزمة تعلّم الآلة" لإضافة ميزة المسح الضوئي للمستندات بسهولة إلى تطبيقك.
| الميزة | التفاصيل |
|---|---|
| اسم حزمة تطوير البرامج (SDK) | play-services-mlkit-document-scanner |
| التنفيذ | يتم تنزيل النماذج ومنطق المسح الضوئي ومسار واجهة المستخدم ديناميكيًا من خلال "خدمات Google Play". |
| تأثير حجم التطبيق | زيادة حجم التنزيل بمقدار 300 كيلوبايت تقريبًا |
| وقت الإعداد | قد يضطر المستخدمون إلى الانتظار حتى يتم تنزيل النماذج والمنطق ومسار واجهة المستخدم قبل الاستخدام الأول. |
للتجربة:
يمكنك تجربة نموذج التطبيق للاطّلاع على مثال على استخدام واجهة برمجة التطبيقات هذه.
قبل البدء
في ملف
build.gradleعلى مستوى المشروع، تأكَّد من تضمين مستودع Maven من Google في كلّ من قسمَي buildscript وallprojects.أضِف تبعية مكتبة الماسح الضوئي للمستندات في "حزمة تعلّم الآلة" إلى ملف gradle على مستوى التطبيق في الوحدة، والذي يكون عادةً app/build.gradle:
dependencies {
// …
implementation 'com.google.android.gms:play-services-mlkit-document-scanner:16.0.0'
}
إعدادات "الماسح الضوئي للمستندات"
توفّر حزمة تطوير البرامج (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()جافا
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 { ... }
جافا
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 أو كليهما) التي تحتاجها فعليًا.