Dokumentenscanner mit ML Kit auf Android-Geräten
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-Flow werden dynamisch von den Google Play-Diensten heruntergeladen. |
Auswirkungen der App-Größe | Die Downloadgröße erhöht sich um etwa 300 KB. |
Initialisierungszeit | Es kann sein, dass Nutzer vor der ersten Verwendung warten müssen, bis die Modelle, die Logik und der UI-Ablauf heruntergeladen wurden. |
Jetzt ausprobieren
In der Beispielanwendung sehen Sie eine Beispielnutzung dieser API.
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-Bibliothek für den Dokumentenscanner der Gradle-Datei Ihres Moduls auf App-Ebene hinzu, in der Regel „app/build.gradle“:
dependencies {
// …
implementation 'com.google.android.gms:play-services-mlkit-document-scanner:16.0.0-beta1'
}
Konfiguration des Dokumentenscanners
Der Nutzerfluss des Dokumentenscanners (einschließlich eines speziellen Sucher- und Vorschaubildschirms) wird vom SDK bereitgestellt. Der Sucher und der Vorschaubildschirm unterstützen die folgenden anpassbaren Steuerelemente:
- Import aus der Fotogalerie
- Begrenzung der Anzahl der gescannten Seiten
- Scannermodus (zum Steuern der Funktionssätze im Ablauf)
Sie können sowohl PDF- als auch JPEG-Dateien für Ihre gescannten Dokumente abrufen.
Instanziere 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 Ihre GmsDocumentScannerOptions
erstellt haben, rufen Sie eine Instanz von GmsDocumentScanner
ab. Sie können dann die Scanneraktivität gemäß 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 PDF gemäß den über setResultFormats
definierten Angaben:
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 Erstellen von Dokumentdateien erfordert Zeit und Rechenleistung. Fordern Sie daher nur die Ausgabeformate (JPEG, PDF oder beide) an, die Sie tatsächlich benötigen.