Сканер документов с ML Kit на Android
Используйте API сканера документов ML Kit, чтобы легко добавить функцию сканера документов в свое приложение.
Особенность | Подробности |
---|---|
Имя SDK | play-services-mlkit-документ-сканер |
Выполнение | Модели, логика сканирования и поток пользовательского интерфейса динамически загружаются сервисами 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-beta1'
}
Конфигурация сканера документов
Пользовательский поток сканера документов (который включает в себя выделенный экран видоискателя и экран предварительного просмотра) предоставляется SDK. Видоискатель и экран предварительного просмотра поддерживают следующие настраиваемые элементы управления:
- импорт из фотогалереи
- установка ограничения на количество сканируемых страниц
- режим сканера (для управления наборами функций в потоке)
Вы можете извлекать файлы PDF и JPEG из отсканированных документов.
Создайте экземпляр GmsDocumentScannerOptions
для настройки параметров сканера:
Котлин
val options = GmsDocumentScannerOptions.Builder() .setGalleryImportAllowed(false) .setPageLimit(2) .setResultFormats(RESULT_FORMAT_JPEG, RESULT_FORMAT_PDF) .setScannerMode(SCANNER_MODE_FULL) .build()
Ява
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 { ... }
Ява
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 и ее аффилированных лиц.
Последнее обновление: 2025-06-24 UTC.