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 trình 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 | Mô hình, logic quét và luồng giao diện người dùng được tự động tải xuống bằng Dịch vụ Google Play. |
Tác động của kích thước ứng dụng | Tăng kích thước tải xuống khoảng 300KB. |
Thời gian khởi chạy | Người dùng có thể phải đợi mô hình, logic và luồng giao diện người dùng tải xuống trước khi sử dụng lần đầu tiên. |
Dùng thử
Thử nghiệm với ứ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.gradle
cấp dự án, hãy nhớ bao gồm Kho lưu trữ Maven trong cả phần 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-beta1'
}
Cấu hình Trình quét tài liệu
Quy trình sử dụng trình quét tài liệu (bao gồm một 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. Kính ngắm và màn hình xem trước hỗ trợ các thành phần điều khiển có thể tuỳ chỉnh sau đây:
- đang nhập từ thư viện ảnh
- đặt giới hạn về số trang được quét
- chế độ máy quét (để kiểm soát các bộ tính năng trong luồng)
Bạn có thể truy xuất cả tệp PDF và JPEG cho các tài liệu đã quét.
Tạo thực thể cho GmsDocumentScannerOptions
để định cấu hình các tuỳ chọn 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
, bạn sẽ nhận được
bản sao của GmsDocumentScanner
. Sau đó, bạn có thể bắt đầu hoạt động của máy quét
đang theo dõi
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 được quét, các URI của phần
hình ảnh ở định dạng JPEG và PDF tương ứng với những gì được xác định 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
Lưu ý rằng việc tạo tệp tài liệu sẽ mất nhiều thời gian và cần phải xử lý nguồn, nên chỉ yêu cầu các định dạng đầu ra (JPEG, PDF hoặc cả hai) nếu bạn thực sự của bạn.