Scanner de documents avec ML Kit sur Android
Utilisez l'API Document Scanner de ML Kit pour ajouter facilement une fonctionnalité de scanner de documents à votre application.
| Fonctionnalité | Détails |
|---|---|
| Nom du SDK | play-services-mlkit-document-scanner |
| Implémentation | Les modèles, la logique d'analyse et le flux d'UI sont téléchargés de manière dynamique par les services Google Play. |
| Impact sur la taille de l'application | Augmentation de la taille de téléchargement d'environ 300 Ko. |
| Délai d'initialisation | Les utilisateurs devront peut-être attendre que les modèles, la logique et le flux d'interface utilisateur soient téléchargés avant la première utilisation. |
Essayer
Testez l'application exemple pour voir un exemple d'utilisation de cette API.
Avant de commencer
Dans votre fichier
build.gradleau niveau du projet, veillez à inclure le dépôt Maven de Google dans les sections "buildscript" et "allprojects".Ajoutez la dépendance de la bibliothèque du scanner de documents ML Kit au fichier Gradle de votre module au niveau de l'application, qui est généralement app/build.gradle :
dependencies {
// …
implementation 'com.google.android.gms:play-services-mlkit-document-scanner:16.0.0'
}
Configuration du scanner de documents
Le parcours utilisateur du scanner de documents (qui comprend un écran de viseur et un écran d'aperçu dédiés) est fourni par le SDK. Le viseur et l'écran d'aperçu sont compatibles avec les commandes personnalisables suivantes :
- importer depuis la galerie de photos
- définir une limite pour le nombre de pages analysées ;
- Mode scanner (pour contrôler les ensembles de fonctionnalités dans le flux)
Vous pouvez récupérer les fichiers PDF et JPEG de vos documents scannés.
Instanciez GmsDocumentScannerOptions pour configurer les options de l'analyseur :
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();Scanner des documents
Après avoir créé votre GmsDocumentScannerOptions, obtenez une instance de GmsDocumentScanner. Vous pouvez ensuite démarrer l'activité du scanner en suivant les API Activity Result introduites dans AndroidX.
Une fois la numérisation du document terminée, un objet GmsDocumentScanningResult donne accès au nombre de pages numérisées, aux URI des images au format JPEG et au PDF, conformément à ce qui a été défini via 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(...);
Conseils pour améliorer les performances
N'oubliez pas que la génération de fichiers de document prend du temps et nécessite de la puissance de traitement. Ne demandez donc que les formats de sortie (JPEG, PDF ou les deux) dont vous avez réellement besoin.