Как сканировать документы в Linux с помощью самых полезных команд SANE
Scanner Access Now Easy (SANE) – это интерфейс прикладного программирования (API), используемый для управления сканерами и камерами. При использовании приложение командной строки scanimage можно использовать для быстрой и надежной отправки команд сканеру для выполнения ряда полезных функций.
Вот как максимально эффективно использовать SANE для сканирования документов и фотографий.
Получите себя в здравом уме сейчас
API можно установить с помощью диспетчера пакетов. Например, в системе Debian:
sudo apt install sane
… устанавливает SANE API и предоставляет отсканированное изображение приложения командной строки. (Он также устанавливает интерфейсные инструменты xscanimage, scanadf и xcam). Выполнение следующей команды показывает все доступные параметры:
scanimage -h
Теперь важно отметить, что вы можете отправлять команды API вместе с командами, специфичными для сканера, в одной командной строке. Кроме того, вывод -h может немного сбивать с толку из-за того, что параметры API и параметры сканера просто выводятся на терминал в объединенном стиле.
Если сканер не обнаружен, вы получите только параметры API. Если сканер обнаружен, у вас может возникнуть заметная задержка по времени, пока информация устройства сканера извлекается, отправляется в API и форматируется. Кажется, что команда останавливается, но просто подождите, и она закончится.
Отметив это, если вам нужны только параметры устройства (параметры «backend» для самого сканера), вы можете использовать параметр -A :
scanimage -A
Обратите внимание, что в этой статье в качестве примера используется SANE версии 1.0.14-15. Ваша конкретная версия может отличаться и иметь несколько другие параметры. Если у вас есть вопросы, просто запустите scanimage с параметром -h .
Конечно, у каждого сканера будет свой собственный набор возможных опций, поэтому обязательно поэкспериментируйте с ними, чтобы уточнить отправляемые вами команды, чтобы получить наилучшие результаты.
Легкие и простые команды SANE
Да, все мы хотим легко и просто. Вы должны с чего-то начать, и самая простая команда, которую вы можете использовать для сканирования чего-либо, – это:
scanimage > scan_out
Это будет работать, если ваш сканер обнаружен API. В этом случае выходные данные отправляются непосредственно в стандартный выход, а затем перенаправляются в файл scan_out. Формат изображения по умолчанию – PNM, а режим по умолчанию (например, штриховой, монохромный или цветной) определяется сканером. Если сканер не обнаружен, вы получите такой вывод (или аналогичный):
scanimage: no SANE devices found
Вы также получите информационное сообщение о том, что формат вывода не установлен. Это просто потому, что формат изображения по умолчанию – pnm. Его можно изменить на TIFF, PNG или JPEG.
Output format is not set, using pnm as a default.
Указание выходного файла
Стандартный вывод может быть перенаправлен в файл с помощью >, или вы можете указать явную опцию, чтобы указать имя и полный путь к выходному файлу, например:
scanimage -o scan_out.png
В этом случае API выведет изображение в формате PNG.
Список и использование устройств
Хотите убедиться, что ваш сканер обнаружен SANE? Выполните эту команду:
scanimage -L
В нем будут перечислены все обнаруженные устройства. Если к одному устройству подключены как LAN, так и USB-соединение, они будут перечислены в отдельных строках.
Например, Epson WorkForce WF-3640 может быть указан так:
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
В этом случае вы можете использовать любой из них в качестве адреса для отправки и получения данных:
scanimage -d epson2:net:192.168.1.26 -o scan_out.png
или же
scanimage -d epson2:libusb:001:005 -o scan_out.png
Обратите внимание, что если вы отключите и снова подключите USB к другому порту, адрес USB изменится. В этом случае вам необходимо убедиться, что адрес вашего устройства совпадает с новым, распечатанным при повторном появлении в списке.
Установите другой формат изображения
Если вам нужен другой формат изображения, вы можете выполнить ту же команду, например:
scanimage -o scan_out.tiff
SANE попытается угадать формат на основе расширения файла. Формат также может быть явно установлен с помощью:
scanimage --format=tiff -o scan_out.tiff
или даже это:
scanimage --format=tiff > scan_out
Пакетные команды
Что еще можно получить от API? Вот что вы можете получить: пакетные команды для управления устройством автоматической подачи документов (АПД) для последовательного сканирования страниц.
Хотя сканер может создавать только форматы изображений, их также можно преобразовать в текст с помощью приложения оптического распознавания символов (OCR), такого как gocr .
Обратите внимание, что для создания достаточно подробного документа для сохранения документа или преобразования OCR вам может потребоваться отправить команды для конкретного сканера. Это будет отмечено ниже.
Пример пакетной обработки
Вы захотите использовать разные форматы в зависимости от цели конечного результата. Например, если приложение OCR, которое вы собираетесь использовать, принимает только изображения PNM, формат вашего файла изображения должен быть PNM.
Вот пример отправки команды на сканирование страницы с напечатанным текстом для преобразования с помощью приложения OCR, которое принимает изображения pnm. В этой команде специфичными для сканера командами являются –mode, –resolution и –source:
scanimage --batch=document-A-%d.pnm --format=pnm --batch-count=1 --mode Lineart --resolution 1200 --source Automatic
Поскольку это команды сканера, а не SANE API, они будут разными в зависимости от марки и модели и могут потребовать некоторых экспериментов. Например, следующий фрагмент может быть неочевиден из вывода справки серверной части:
--source Automatic
Сканируйте с помощью SANE
Независимо от того, являетесь ли вы человеком, каким-то образом владеющим стопкой старых семейных документов, или профессиональным специалистом по консервации, сканирование с помощью SANE API – очевидный выбор для носителей, которые могут выдержать механические нагрузки сканеров и АПД.
Объедините возможности SANE API с постобработкой изображений или приложением OCR, и вы сможете оцифровать практически любой плоский носитель, который стоит сохранить.