Cách quét tài liệu trong Linux bằng các lệnh hữu ích nhất của SANE | Học trực tuyến CNTT, học lập trình từ cơ bản đến nâng cao

Cách quét tài liệu trong Linux bằng các lệnh hữu ích nhất của SANE

Chia sẻ kiến thức 02/05/2022

Bài viết này hướng dẫn cách sử dụng các lệnh hữu ích nhất của API SANE (Scanner Access Now Easy) để quét tài liệu hoặc ảnh trong Linux.

Scanner Access Now Easy (SANE) là một giao diện lập trình ứng dụng (API, viết tắt của application programming interface) được sử dụng để điều khiển máy quét và máy ảnh. Ứng dụng dòng lệnh của nó, scanimage, có thể được sử dụng để gửi các lệnh máy quét nhằm thực hiện một số chức năng hữu ích.

Trong bài viết này, FUNiX sẽ hướng dẫn bạn cách tận dụng tối đa SANE để quét tài liệu và ảnh.

Cách cài đặt SANE

API này có thể được cài đặt bằng trình quản lý gói của bạn. Ví dụ, trong hệ thống Debian, lệnh:

sudo apt install sane

cài đặt API SANE và cung cấp tính năng quét ứng dụng dòng lệnh. (Nó cũng cài đặt cả các công cụ front-end xscanimage, scanadf và xcam). Chạy lệnh sau sẽ hiển thị tất cả các tùy chọn có sẵn:

scanimage -h

Điều quan trọng cần lưu ý là bạn có thể gửi cả các lệnh API và các lệnh dành riêng cho từng máy quét trong cùng một dòng lệnh. Tuy nhiên, kết quả đầu ra của -h có thể hơi khó hiểu do cả tùy chọn API và tùy chọn máy quét đều được hiển thị ra terminal theo kiểu nối liền.

Nếu không có máy quét nào được phát hiện, bạn sẽ chỉ nhận được các tùy chọn API. Nếu máy quét được phát hiện, bạn có thể phải chờ một lúc trong khi thông tin của thiết bị máy quét được truy xuất, gửi đến API và được định dạng. Hãy kiên nhẫn đợi và lệnh sẽ hoàn tất.

Nếu bạn chỉ muốn các tùy chọn thiết bị (tùy chọn “backend” cho chính máy quét), bạn có thể sử dụng tùy chọn -A:

scanimage -A

Lưu ý rằng SANE phiên bản 1.0.14-15 được sử dụng làm ví dụ trong bài viết này. Bạn có thể đang dùng một phiên bản khác và do vậy các tùy chọn cũng sẽ hơi khác. Nếu bạn có thắc mắc, chỉ cần chạy scanimage với tùy chọn -h.

Mỗi máy quét sẽ có một tập hợp các tùy chọn khả thi của riêng nó, vì vậy hãy thử nghiệm với những tùy chọn đó để tinh chỉnh các lệnh bạn gửi để có được kết quả tốt nhất.

Lệnh SANE đơn giản và dễ dàng

Lệnh đơn giản nhất để quét nội dung nào đó là:

scanimage > scan_out

Lệnh này sẽ hoạt động nếu máy quét của bạn được phát hiện bởi API. Trong trường hợp này, đầu ra được gửi đến tệp scan_out. Định dạng hình ảnh mặc định là PNM và chế độ mặc định (ví dụ: đường kẻ, đơn sắc hoặc nhiều màu) được xác định bởi máy quét. Nếu máy quét không được phát hiện, bạn sẽ nhận được đầu ra như sau (hoặc tương tự):

scanimage: no SANE devices found

Bạn cũng sẽ nhận được một thông báo cung cấp thông tin về định dạng đầu ra không được đặt. Điều này là do định dạng hình ảnh mặc định là pnm. Nó có thể được thay đổi thành TIFF, PNG hoặc JPEG.

Output format is not set, using pnm as a default.

Chỉ định tệp đầu ra

Đầu ra tiêu chuẩn có thể được chuyển hướng đến một tệp bằng cách sử dụng > hoặc bạn có thể đưa ra một tùy chọn rõ ràng để chỉ định tên và đường dẫn đầy đủ của tệp đầu ra, ví dụ:

scanimage -o scan_out.png

Trong trường hợp này, API sẽ xuất ra ảnh định dạng PNG.

Liệt kê và Sử dụng Thiết bị

Bạn muốn đảm bảo rằng máy quét của bạn được SANE phát hiện? Chạy lệnh sau đây:

scanimage -L

Nó sẽ liệt kê tất cả các thiết bị được phát hiện. Nếu một thiết bị có cả kết nối LAN và kết nối USB, nó sẽ liệt kê chúng trên các dòng riêng biệt.

Ví dụ: Máy quét Epson WorkForce WF-3640 có thể được liệt kê như sau:

device `epson2:net:192.168.1.26' is a Epson PID 08B8 flatbed scanner
device `epson2:libusb:001:005' is a Epson PID 08B8 flatbed scanner

Trong trường hợp này, bạn có thể sử dụng một trong hai làm địa chỉ để gửi và nhận dữ liệu:

scanimage -d epson2:net:192.168.1.26 -o scan_out.png

hoặc

scanimage -d epson2:libusb:001:005 -o scan_out.png

Lưu ý rằng nếu bạn rút phích cắm máy quét và kết nối lại USB ở một cổng khác, địa chỉ USB sẽ thay đổi. Trong trường hợp đó, bạn cần đảm bảo rằng địa chỉ thiết bị của mình giống với địa chỉ mới được hiển thị khi nó được liệt kê lại.

Đặt một định dạng hình ảnh khác

Nếu bạn muốn một định dạng hình ảnh khác, bạn có thể sử dụng lệnh như sau:

scanimage -o scan_out.tiff

SANE sẽ cố gắng đoán định dạng dựa trên phần mở rộng (extension) của tệp. Định dạng cũng có thể được đặt rõ ràng với lệnh:

scanimage --format=tiff -o scan_out.tiff

hoặc thậm chí:

scanimage --format=tiff > scan_out

Lệnh hàng loạt

Bạn cũng có thể sử dụng các lệnh hàng loạt (batch commands) để điều khiển Bộ nạp tài liệu tự động (ADF, viết tắt của Automatic Document Feeder) để quét các trang theo trình tự.

Mặc dù máy quét có thể chỉ tạo ra các định dạng hình ảnh, nhưng chúng cũng có thể được chuyển đổi thành văn bản thông qua ứng dụng Nhận dạng Ký tự Quang học (OCR – Optical Character Recognition), chẳng hạn như gocr.

Lưu ý rằng để tạo ra một tài liệu chi tiết để bảo quản tài liệu hoặc chuyển đổi OCR, bạn có thể phải gửi các lệnh dành riêng cho từng máy quét. Những điều này sẽ được ghi chú bên dưới.

Ví dụ về xử lý hàng loạt

Bạn nên sử dụng các định dạng khác nhau tùy thuộc vào mục đích của kết quả cuối cùng. Ví dụ: nếu ứng dụng OCR bạn định dùng chỉ chấp nhận hình ảnh PNM, thì định dạng tệp hình ảnh của bạn phải là PNM.

Dưới đây là một ví dụ về việc gửi lệnh quét một trang văn bản in để được chuyển đổi bằng ứng dụng OCR (chấp nhận hình ảnh pnm). Trong lệnh này, các lệnh dành riêng cho máy quét là –mode, –resolution và –source:

scanimage --batch=document-A-%d.pnm --format=pnm --batch-count=1 --mode Lineart --resolution 1200 --source Automatic

Vì đây là các lệnh của máy quét chứ không phải API SANE, chúng sẽ khác nhau tùy thuộc vào thương hiệu và model. Bạn có thể cần thử nghiệm trước khi tìm ra lệnh thích hợp. 

Kết luận

Kết hợp khả năng của API SANE với xử lý hình ảnh hậu kỳ hoặc ứng dụng OCR và bạn có thể số hóa hầu hết mọi phương tiện phẳng đáng được bảo quản.

Vân Nguyễn

Dịch từ: https://www.makeuseof.com/how-to-scan-documents-in-linux-with-sanes-most-useful-commands/

ĐĂNG KÝ TƯ VẤN HỌC LẬP TRÌNH TẠI FUNiX

Bình luận (
0
)

Bài liên quan

  • Tầng 0, tòa nhà FPT, 17 Duy Tân, Q. Cầu Giấy, Hà Nội
  • info@funix.edu.vn
  • 0782313602 (Zalo, Viber)        
Chat Button
Chat với FUNiX GPT ×

yêu cầu gọi lại

error: Content is protected !!