Dokumentenscanner mit ML Kit für Android
Verwenden Sie die ML Kit Document Scanner API, um Ihrer App auf einfache Weise eine Dokumentenscanner-Funktion hinzuzufü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. |
Auswirkung auf die App-Größe | Downloadgröße um ca. 300 KB erhöht. |
Initialisierungszeit | Nutzer müssen möglicherweise vor der ersten Verwendung warten, bis die Modelle, die Logik und der UI-Ablauf heruntergeladen wurden. |
Ausprobieren
Probieren Sie die Beispiel-App aus, um sich ein Anwendungsbeispiel für diese API anzusehen.
Hinweis
Fügen Sie in der Datei
build.gradle
auf Projektebene sowohl im Abschnitt „buildscript“ als auch im Abschnitt „allprojects“ das Maven-Repository von Google ein.Fügen Sie die Abhängigkeit für die ML Kit-Dokumentenscannerbibliothek in die Gradle-Datei Ihres Moduls auf App-Ebene ein (normalerweise app/build.gradle):
dependencies {
// …
implementation 'com.google.android.gms:play-services-mlkit-document-scanner:16.0.0-beta1'
}
Konfiguration des Dokumentenscanners
Der User Flow für den Dokumentenscanner, der einen speziellen Sucherbildschirm und einen Vorschaubildschirm umfasst, wird vom SDK bereitgestellt. Der Sucher und die Vorschau unterstützen die folgenden anpassbaren Steuerelemente:
- aus der Fotogalerie importieren
- die Anzahl der gescannten Seiten begrenzen,
- Scannermodus (zur Steuerung der Funktionssätze 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 der GmsDocumentScannerOptions
eine Instanz von GmsDocumentScanner
ab. Anschließend können Sie die Scanner-Aktivität gemäß den Activity Result APIs starten, die in AndroidX eingeführt wurden.
Wenn das Scannen des Dokuments abgeschlossen ist, gewährt ein GmsDocumentScanningResult
-Objekt Zugriff auf die Anzahl der gescannten Seiten und 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 Verbesserung der Leistung
Das Generieren von Dokumentdateien nimmt Zeit in Anspruch und erfordert Verarbeitungsleistung. Fordern Sie daher nur die Ausgabeformate (JPEG, PDF oder beides) an, die Sie wirklich benötigen.