Dokumentenscanner mit ML Kit unter Android
Mit der ML Kit Document Scanner API können Sie Ihrer App ganz einfach eine Dokumentenscannerfunktion hinzufügen.
Feature | Details |
---|---|
SDK-Name | play-services-mlkit-document-scanner |
Implementierung | Die Modelle, die Scanlogik und der UI-Ablauf werden dynamisch von den Google Play-Diensten heruntergeladen. |
Auswirkungen auf die App-Größe | Die Downloadgröße erhöht sich um etwa 300 KB. |
Initialisierungszeit | Nutzer müssen möglicherweise warten, bis die Modelle, die Logik und der UI-Ablauf heruntergeladen wurden, bevor sie die Funktion zum ersten Mal verwenden können. |
Jetzt ausprobieren
Hinweis
In die Datei
build.gradle
auf Projektebene muss das Maven-Repository von Google in die Abschnitte „buildscript“ und „allprojects“ aufgenommen werden.Fügen Sie die Abhängigkeit für die ML Kit-Dokumentscanner-Bibliothek der Gradle-Datei auf App-Ebene Ihres Moduls hinzu, die sich in der Regel unter „app/build.gradle“ befindet:
dependencies {
// …
implementation 'com.google.android.gms:play-services-mlkit-document-scanner:16.0.0-beta1'
}
Konfiguration des Dokumentenscanners
Der Nutzerablauf für den Dokumentenscanner (mit einem speziellen Sucherbildschirm und einem Vorschaubildschirm) wird vom SDK bereitgestellt. Der Sucher und der Vorschaubildschirm unterstützen die folgenden anpassbaren Steuerelemente:
- Aus der Fotogalerie importieren
- Begrenzung der Anzahl der gescannten Seiten
- Scanner-Modus (zur Steuerung der Funktionsgruppen im Ablauf)
Sie können sowohl PDF- als auch JPEG-Dateien für Ihre gescannten Dokumente 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 können Sie die Scanneraktivität mit den in AndroidX eingeführten Activity Result APIs starten.
Wenn das Scannen des Dokuments abgeschlossen ist, bietet ein GmsDocumentScanningResult
-Objekt Zugriff auf die Anzahl der gescannten Seiten, die URIs der Bilder im JPEG-Format und die PDF-Datei, je nachdem, was über setResultFormats
definiert wurde:
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
Das Generieren von Dokumentdateien dauert und erfordert Rechenleistung. Fordern Sie daher nur die Ausgabedateiformate (JPEG, PDF oder beides) an, die Sie tatsächlich benötigen.