Scanner per documenti con ML Kit su Android
Utilizza l'API Document Scanner di ML Kit per aggiungere facilmente una funzionalità di scansione di documenti a lla tua app.
| Funzionalità | Dettagli |
|---|---|
| Nome SDK | play-services-mlkit-document-scanner |
| Implementazione | I modelli, la logica di scansione e il flusso dell'interfaccia utente vengono scaricati dinamicamente da Google Play Services. |
| Impatto sulle dimensioni dell'app | Aumento delle dimensioni del download di circa 300 kB. |
| Tempo di inizializzazione | Prima del primo utilizzo, gli utenti potrebbero dover attendere il download dei modelli, della logica e del flusso dell'interfaccia utente. |
Prova
Prova l'app di esempio per vedere un esempio di utilizzo di questa API.
Prima di iniziare
Nel file
build.gradlea livello di progetto, assicurati di includere il repository Maven di Google nelle sezioni buildscript e allprojects.Aggiungi la dipendenza per la libreria Document Scanner di ML Kit al file Gradle a livello di app del modulo, che in genere è app/build.gradle:
dependencies {
// …
implementation 'com.google.android.gms:play-services-mlkit-document-scanner:16.0.0'
}
Configurazione di Document Scanner
Il flusso utente di Document Scanner (che include una schermata del mirino dedicata e una schermata di anteprima) è fornito dall'SDK. Il mirino e la schermata di anteprima supportano i seguenti controlli personalizzabili:
- Importazione dalla galleria fotografica
- Impostazione di un limite al numero di pagine scansionate
- Modalità scanner (per controllare i set di funzionalità nel flusso)
Puoi recuperare i file PDF e JPEG per i documenti scansionati.
Crea un'istanza di GmsDocumentScannerOptions per configurare le opzioni dello scanner:
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();Scansiona documenti
Dopo aver creato GmsDocumentScannerOptions, ottieni un
istanza di GmsDocumentScanner. Poi puoi avviare l'attività dello scanner
seguendo
le API Activity Result
introdotte in AndroidX.
Al termine della scansione del documento, un oggetto GmsDocumentScanningResult darà accesso al numero di pagine scansionate, agli URI delle
immagini in formato JPEG e PDF in base a quanto definito tramite
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(...);
Suggerimenti per migliorare il rendimento
Tieni presente che la generazione di file di documenti richiede tempo e potenza di elaborazione , quindi richiedi solo i formati di output (JPEG, PDF o entrambi) di cui hai effettivamente bisogno.