Dokumentenscanner mit ML Kit unter Android
Mit der ML Kit Document Scanner API können Sie Ihrer App ganz einfach eine Dokumentenscanner-Funktion 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 | ~300 KB größere Downloadgröße. |
| Initialisierungszeit | Nutzer müssen möglicherweise warten, bis die Modelle, die Logik und der UI-Ablauf vor der ersten Verwendung heruntergeladen wurden. |
Jetzt ausprobieren
In der Beispiel-App finden Sie ein Beispiel für die Verwendung dieser API.
Hinweis
Fügen Sie in der
build.gradle-Datei auf Projektebene das Maven-Repository von Google sowohl im Abschnitt „buildscript“ als auch im Abschnitt „allprojects“ ein.Fügen Sie die Abhängigkeit für die ML Kit-Dokumentenscanner-Bibliothek der Gradle-Datei Ihres Moduls auf App-Ebene hinzu. Diese Datei ist normalerweise „app/build.gradle“:
dependencies {
// …
implementation 'com.google.android.gms:play-services-mlkit-document-scanner:16.0.0'
}
Konfiguration des Dokumentenscanners
Der User-Flow des Dokumentenscanners (einschließlich eines speziellen Sucher- und Vorschaubildschirms) wird vom SDK bereitgestellt. Der Sucher und der Vorschaubildschirm unterstützen die folgenden anpassbaren Steuerelemente:
- Importieren aus der Fotogalerie
- Festlegen eines Limits für die Anzahl der gescannten Seiten
- Scannermodus (zur Steuerung der Feature-Sets 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
Rufen Sie nach dem Erstellen des GmsDocumentScannerOptions eine Instanz von GmsDocumentScanner ab. Anschließend können Sie die Scanner-Aktivität gemäß den in AndroidX eingeführten Activity Result APIs starten.
Wenn das Scannen des Dokuments abgeschlossen ist, ermöglicht ein GmsDocumentScanningResult-Objekt den 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 Erstellen von Dokumentdateien nimmt Zeit in Anspruch und erfordert Rechenleistung. Fordern Sie daher nur die Ausgabeformate (JPEG, PDF oder beides) an, die Sie tatsächlich benötigen.