Dokumentenscanner mit ML Kit für Android

Verwenden Sie die ML Kit Document Scanner API, um ganz einfach eine Dokumentenscanner-Funktion hinzuzufügen, für Ihre App.

Feature Details
SDK-Name play-services-mlkit-document-scanner
Implementierung Die Modelle, die Scanlogik und der UI-Ablauf werden dynamisch von Google Play-Dienste.
Auswirkung auf die App-Größe Downloadgröße um ca. 300 KB erhöht.
Initialisierungszeit Nutzende müssen möglicherweise warten, bis die Modelle, die Logik und der Benutzeroberflächenfluss vor der ersten Verwendung herunterladen.

Jetzt ausprobieren

Experimentieren Sie mit dem Beispiel-App , um ein Beispiel für die Verwendung dieser API zu sehen.

Hinweis

  1. In der Datei build.gradle auf Projektebene müssen Sie die Parameter von Google Maven-Repository in den Abschnitten "buildscript" und "allprojects".

  2. Fügen Sie die Abhängigkeit für die ML Kit-Dokumentenscannerbibliothek Ihrem Die Gradle-Datei des Moduls auf App-Ebene, 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 (mit eigenem Sucherbildschirm) und Vorschaubildschirm) 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

Nachdem Sie Ihr GmsDocumentScannerOptions erstellt haben, erhalten Sie ein Instanz von GmsDocumentScanner. Anschließend können Sie die Scanner-Aktivität starten. Follower APIs für Aktivitätsergebnisse mit AndroidX eingeführt.

Wenn das Scannen des Dokuments abgeschlossen ist, gewährt ein GmsDocumentScanningResult-Objekt Zugriff auf die Anzahl der gescannten Seiten, die URIs der im JPEG-Format und im PDF-Format entsprechend der Definition 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 muss verarbeitet werden Daher sollten Sie nur die Ausgabeformate (JPEG, PDF oder beides) anfordern, die Sie brauchen.