Сканер документов с поддержкой ML Kit на Android
Используйте API сканера документов ML Kit, чтобы легко добавить функцию сканирования документов в ваше приложение.
| Особенность | Подробности |
|---|---|
| Название SDK | play-services-mlkit-document-scanner |
| Выполнение | Модели, логика сканирования и пользовательский интерфейс динамически загружаются из сервисов Google Play. |
| влияние размера приложения | Увеличение размера загружаемого файла примерно на 300 КБ. |
| Время инициализации | Пользователям, возможно, придётся подождать, пока загрузятся модели, логика и пользовательский интерфейс, прежде чем начать ими пользоваться. |
Попробуйте!
Поэкспериментируйте с примером приложения , чтобы увидеть, как используется этот API.
Прежде чем начать
В файле
build.gradleна уровне проекта обязательно укажите репозиторий Maven от Google в разделах buildscript и allprojects.Добавьте зависимость для библиотеки сканирования документов ML Kit в файл gradle уровня приложения вашего модуля, который обычно находится по адресу app/build.gradle:
dependencies {
// …
implementation 'com.google.android.gms:play-services-mlkit-document-scanner:16.0.0'
}
Настройка сканера документов
Пользовательский интерфейс сканера документов (включающий выделенный экран видоискателя и экран предварительного просмотра) предоставляется SDK. Экран видоискателя и экран предварительного просмотра поддерживают следующие настраиваемые элементы управления:
- импорт из фотогалереи
- установление ограничения на количество сканируемых страниц
- режим сканера (для управления наборами функций в потоке)
Вы можете получить отсканированные документы в форматах PDF и JPEG.
Создайте экземпляр GmsDocumentScannerOptions , чтобы настроить параметры сканера:
Котлин
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();Сканирование документов
После создания объекта GmsDocumentScannerOptions получите экземпляр GmsDocumentScanner . Затем вы можете запустить активность сканирования, используя API Activity Result, представленные в AndroidX.
После завершения сканирования документа объект GmsDocumentScanningResult предоставит доступ к количеству отсканированных страниц, URI изображений в формате JPEG и PDF в соответствии с параметрами, определенными с помощью setResultFormats :
Котлин
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(...);
Советы по повышению производительности
Учитывайте, что создание файлов документов занимает время и требует вычислительной мощности, поэтому запрашивайте только те выходные форматы (JPEG, PDF или оба), которые вам действительно необходимы.
Если не указано иное, контент на этой странице предоставляется по лицензии Creative Commons "С указанием авторства 4.0", а примеры кода – по лицензии Apache 2.0. Подробнее об этом написано в правилах сайта. Java – это зарегистрированный товарный знак корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2026-01-28 UTC.