Skaner dokumentów w ML Kit na Androidzie
Za pomocą interfejsu ML Kit Document Scanner API możesz łatwo dodać do aplikacji funkcję skanowania dokumentów.
| Funkcja | Szczegóły |
|---|---|
| Nazwa pakietu SDK | play-services-mlkit-document-scanner |
| Implementacja | Modele, logika skanowania i interfejs są pobierane dynamicznie przez Usługi Google Play. |
| Wpływ na rozmiar aplikacji | Rozmiar pobierania zwiększy się o ok. 300 KB. |
| Czas inicjowania | Zanim użytkownicy będą mogli po raz pierwszy użyć aplikacji, być może będą musieli poczekać na pobranie modeli, logiki i interfejsu. |
Wypróbuj
Wypróbuj przykładową aplikację , aby zobaczyć, jak używać tego interfejsu API.
Zanim zaczniesz
W pliku
build.gradlena poziomie projektu upewnij się, że w sekcjach buildscript i allprojects znajduje się repozytorium Maven Google.Dodaj zależność do biblioteki ML Kit skanera dokumentów w pliku Gradle na poziomie modułu (zwykle app/build.gradle):
dependencies {
// …
implementation 'com.google.android.gms:play-services-mlkit-document-scanner:16.0.0'
}
Konfiguracja skanera dokumentów
Przepływ użytkownika skanera dokumentów (który obejmuje dedykowany ekran wizjera i ekran podglądu) jest udostępniany przez pakiet SDK. Wizjer i ekran podglądu obsługują te konfigurowalne elementy sterujące:
- importowanie z galerii zdjęć,
- ustawianie limitu liczby skanowanych stron,
- tryb skanera (umożliwia sterowanie zestawami funkcji w przepływie).
Możesz pobrać pliki PDF i JPEG zeskanowanych dokumentów.
Aby skonfigurować opcje skanera, utwórz instancję 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();Skanowanie dokumentów
Po utworzeniu GmsDocumentScannerOptions pobierz
instancję GmsDocumentScanner. Następnie możesz rozpocząć aktywność skanera
za pomocą
interfejsów Activity Result API
wprowadzonych w AndroidX.
Po zakończeniu skanowania dokumentu obiekt GmsDocumentScanningResult zapewni dostęp do liczby zeskanowanych stron, identyfikatorów URI obrazów w formacie JPEG i PDF zgodnie z tym, co zostało zdefiniowane za pomocą 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(...);
Wskazówki dotyczące zwiększania skuteczności
Pamiętaj, że generowanie plików dokumentów zajmuje czas i wymaga mocy obliczeniowej, dlatego proś tylko o te formaty wyjściowe (JPEG, PDF lub oba), których faktycznie potrzebujesz.