Trình quét tài liệu bằng Bộ công cụ học máy trên Android
Sử dụng API trình quét tài liệu của Bộ công cụ học máy để dễ dàng thêm tính năng quét tài liệu vào ứng dụng của bạn.
| Tính năng | Chi tiết |
|---|---|
| Tên SDK | play-services-mlkit-document-scanner |
| Triển khai | Các mô hình, logic quét và quy trình giao diện người dùng được tải xuống linh động bằng Dịch vụ Google Play. |
| Tác động đến kích thước ứng dụng | Kích thước tải xuống tăng thêm khoảng 300 KB. |
| Thời gian khởi chạy | Người dùng có thể phải đợi tải mô hình, logic và luồng giao diện người dùng xuống trước khi sử dụng lần đầu. |
Dùng thử
Hãy khám phá ứng dụng mẫu để xem ví dụ về cách sử dụng API này.
Trước khi bắt đầu
Trong tệp
build.gradlecấp dự án, hãy nhớ thêm kho lưu trữ Maven của Google vào cả hai mục buildscript và allprojects.Thêm phần phụ thuộc cho thư viện trình quét tài liệu của Bộ công cụ học máy vào tệp gradle cấp ứng dụng của mô-đun, thường là app/build.gradle:
dependencies {
// …
implementation 'com.google.android.gms:play-services-mlkit-document-scanner:16.0.0'
}
Cấu hình Trình quét tài liệu
Luồng người dùng của trình quét tài liệu (bao gồm màn hình kính ngắm chuyên dụng và màn hình xem trước) do SDK cung cấp. Khung ngắm và màn hình xem trước hỗ trợ các chế độ điều khiển có thể tuỳ chỉnh sau:
- nhập từ thư viện ảnh
- đặt giới hạn cho số trang được quét
- chế độ trình quét (để kiểm soát các tập tính chất trong quy trình)
Bạn có thể truy xuất cả tệp PDF và JPEG cho tài liệu đã quét.
Tạo thực thể GmsDocumentScannerOptions để định cấu hình các tuỳ chọn của trình quét:
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();Quét tài liệu
Sau khi tạo GmsDocumentScannerOptions, hãy lấy một thực thể của GmsDocumentScanner. Sau đó, bạn có thể bắt đầu hoạt động của máy quét theo Activity Result API (API Kết quả hoạt động) được giới thiệu trong AndroidX.
Khi quá trình quét tài liệu hoàn tất, đối tượng GmsDocumentScanningResult sẽ cấp quyền truy cập vào số trang đã quét, URI của hình ảnh ở định dạng JPEG và PDF tương ứng với những gì đã được xác định thông qua 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(...);
Mẹo cải thiện hiệu suất
Hãy lưu ý rằng việc tạo tệp tài liệu cần có thời gian và sức mạnh xử lý, vì vậy, chỉ yêu cầu các định dạng đầu ra (JPEG hoặc PDF hoặc cả hai) mà bạn thực sự cần.