Dokumentenscanner mit ML Kit für Android
Mit der Document Scanner API von ML Kit können Sie Ihrer Anwendung auf einfache Weise eine Dokumentenscanner-Funktion hinzufügen.
Feature | Details |
---|---|
SDK-Name | play-services-mlkit-document-scanner |
Implementierung | Die Modelle, die Scanlogik und der UI-Ablauf werden von Google Play-Diensten dynamisch heruntergeladen. |
Auswirkungen auf die App-Größe | Downloadgröße um ca. 300 KB erhöht. |
Initialisierungszeit | Nutzer müssen möglicherweise warten, bis das Modell, die Logik und der UI-Ablauf heruntergeladen wurden, bevor sie das Gerät erstmals verwenden können. |
Ausprobieren
Probieren Sie die Beispiel-App aus, um ein Beispiel für die Verwendung dieser API zu sehen.
Hinweis
Achten Sie in der Datei
build.gradle
auf Projektebene darauf, dass Sie das Maven-Repository von Google sowohl im Buildscript- als auch im Abschnitt „allprojects“ angeben.Fügen Sie die Abhängigkeit für die ML Kit-Dokumentscanner-Bibliothek der Gradle-Datei auf App-Ebene Ihres Moduls hinzu. Diese lautet normalerweise „app/build.gradle“:
dependencies {
// …
implementation 'com.google.android.gms:play-services-mlkit-document-scanner:16.0.0-beta1'
}
Dokumentscanner-Konfiguration
Der Nutzerfluss des Dokumentscanners (mit einem speziellen Sucherbildschirm und einem Vorschaubildschirm) wird vom SDK bereitgestellt. Der Sucher und die Vorschau unterstützen die folgenden anpassbaren Steuerelemente:
- Import aus der Fotogalerie
- Festlegen eines Limits für die Anzahl der gescannten Seiten
- Scannermodus (zur Steuerung der Funktionsgruppen im Ablauf)
Sie können für Ihre gescannten Dokumente sowohl PDF- als auch JPEG-Dateien abrufen.
Instanziieren Sie GmsDocumentScannerOptions
, um die Scanneroptionen zu konfigurieren:
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();
Dokumente scannen
Nachdem Sie GmsDocumentScannerOptions
erstellt haben, rufen Sie eine Instanz von GmsDocumentScanner
ab. Anschließend kannst du die Scanner-Aktivität nach den in AndroidX eingeführten Activity Result APIs starten.
Wenn das Scannen des Dokuments abgeschlossen ist, gewährt ein GmsDocumentScanningResult
-Objekt Zugriff auf die Anzahl der gescannten Seiten und auf die URIs der Bilder im JPEG-Format und im PDF-Format entsprechend der Definition in 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(...);
Tipps zur Leistungsverbesserung
Bedenken Sie, dass das Erstellen von Dokumentdateien Zeit in Anspruch nimmt und Rechenleistung erfordert. Fordern Sie daher nur die Ausgabeformate (JPEG, PDF oder beides) an, die Sie tatsächlich benötigen.