Интерфейс SANE для сканеров: открытый API и сетевое сканирование
Scanner Access Now Easy
SANE: открытый API для сканеров. Стандартизированный доступ к сканерам и камерам на Linux. Разделение на front-end и back-end драйверы. Бесплатный и эффективный!
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Scanner Access Now Easy (SANE) – это программный интерфейс прикладного программирования (API) с открытым исходным кодом, обеспечивающий стандартизированный доступ к любому оборудованию для сканирования растровых изображений (планшетные сканеры, ручные сканеры, видео- и фотокамеры, платы видеозахвата и т. д.). API SANE находится в общественном достоянии. Он широко используется в Linux.
Open source scanner application programming interface
Scanner Access Now Easy (SANE) is an open source application programming interface (API) that provides standardized access to any raster image scanner hardware (flatbed scanner, handheld scanner, video and still cameras, frame grabbers, etc.). The SANE API is public domain. It is commonly used on Linux.
Архитектура
SANE отличается от TWAIN тем, что чётко разделен на «фронтенды» (пользовательские программы) и «бэкенды» (драйверы сканера). В то время как драйвер TWAIN управляет как пользовательским интерфейсом, так и обменом данными с аппаратным обеспечением сканера, драйвер SANE предоставляет только интерфейс с аппаратным обеспечением и описывает набор «опций», управляющих каждым сканированием. Эти опции задают параметры, такие как разрешение сканирования, область сканирования, цветовая модель и т. д. Каждая опция имеет имя и информацию о её типе, единицах измерения и диапазоне или возможных значениях (например, перечисляемый список). По соглашению существует несколько «общеизвестных» опций, которые фронтенды могут предоставлять с помощью удобного графического интерфейса, например, область сканирования можно задать, перетаскивая прямоугольную рамку по изображению предварительного просмотра. Другие опции могут быть представлены с использованием элементов графического интерфейса, соответствующих их типу, например, ползунков, выпадающих списков и т. п. Одним из следствий такого разделения является простота реализации сетевого сканирования без специальной обработки во фронтендах или бэкендах. На хосте со сканером работает демон `saned`, обрабатывающий сетевые запросы. На клиентских машинах «сетевой» бэкенд (драйвер) подключается к удалённому хосту для получения опций сканера и выполнения предварительного просмотра и сканирования. Демон `saned` выступает в роли локального фронтенда, но просто передаёт запросы и данные между сетевыми соединениями и локальным сканером. Аналогично, «сетевой» бэкенд передаёт запросы и данные между локальным фронтендом и удалённым хостом. Также возможны различные типы автоматического пакетного сканирования с минимальной поддержкой, необходимой в бэкенде (драйвере). Многие сканеры поддерживают подключение устройств автоматической подачи документов, позволяющих автоматически сканировать большое количество листов бумаги последовательно. Используя SANE API, фронтенд должен просто «воспроизводить» один и тот же набор опций для каждого сканирования, активируя подачу документов между сканированиями для загрузки следующего листа бумаги. Фронтенд должен получить набор опций от пользователя только один раз.
SANE differs from TWAIN in that it is cleanly separated into "front ends" (user programs) and "back ends" (scanner drivers). Whereas a TWAIN driver handles the user interface as well as communications with the scanner hardware, a SANE driver only provides an interface with the hardware and describes a number of "options" which drive each scan. These options specify parameters such as the resolution of the scan, the scan area, colour model, etc. Each option has a name, and information about its type, units, and range or possible values (e. g., enumerated list). By convention there are several "well known" options that front ends can supply using convenient GUI interaction e. g., the scan area options can be set by dragging a rectangular outline over a preview image. Other options can be presented using GUI elements appropriate to their type e. g., sliders, drop down lists, etc. One consequence of this separation is that network scanning is easily implemented with no special handling in either the front ends or back ends. On a host with a scanner, the saned daemon runs and handles network requests. On client machines a "net" back end (driver) connects to the remote host to fetch the scanner options, and perform previews and scans. The saned daemon acts as a front end locally, but simply passes requests and data between the network connections and the local scanner. Similarly, the "net" back end passes requests and data between the local front end and the remote host. Various types of unsupervised batch scanning are also possible with a minimum of support needed in the back end (driver). Many scanners support the attachment of document feeders which allow a large number of sheets of paper to be automatically scanned in succession. Using the SANE API, the front end simply has to "play back" the same set of options for each scan, driving the document feed in between scans to load the next sheet of paper. The front end only has to obtain the set of options from the user once.
Графические пользовательские интерфейсы
Разработано несколько пользовательских интерфейсов для интеграции SANE с удобным способом управления.
Several user interfaces have been written to combine SANE with an easy user method of controlling it.
gscan2pdf
gscan2pdf — это интерфейс для сканирования документов в PDF в среде GNOME, использующий SANE для взаимодействия со сканером. Программа распространяется по лицензии GPL. Она включает в себя стандартные инструменты редактирования, например, для поворота или обрезки страниц. Также поддерживается распознавание текста (OCR) с помощью нескольких дополнительных инструментов и сохранение PDF с возможностью поиска. При сохранении PDF-файлы могут быть дополнительно сжаты.
gscan2pdf is an interface for scanning documents to PDF on the GNOME desktop that uses SANE to communicate with the scanner. It is available under the GPL. It includes common editing tools, e. g., for rotating or cropping pages. It is also able to perform OCR using several optional OCR tools and save a searchable PDF. PDF files can be further downsampled upon saving.
Простой сканирование
Simple Scan — это упрощенный графический интерфейс, использующий SANE, разработанный для более удобного использования и лучшей интеграции с рабочим столом GNOME по сравнению с XSane. Изначально он был создан для Ubuntu и поддерживается Робертом Анцеллом из Canonical Ltd. для Linux. Simple Scan впервые был представлен в составе Ubuntu 10.04 Lucid Lynx и также используется в Lubuntu (до Lubuntu 18.04 LTS) и Xubuntu. В настоящее время он является частью проекта GNOME.
Simple Scan is a simplified GUI using SANE that is intended to be easier to use and better integrate into the GNOME desktop than XSane. It was initially written for Ubuntu and is maintained by Robert Ancell of Canonical Ltd. for Linux. Simple Scan was first fielded as part of Ubuntu 10.04 Lucid Lynx and is also used in Lubuntu (until Lubuntu 18.04 LTS) and Xubuntu. It is now part of the GNOME project.
Сканлит
Skanlite – это простое приложение для сканирования изображений, использующее в качестве основы KSane. Каре Сарс – ведущий разработчик. В KDE 4 Skanlite заменил Kooka из KDE 3 как приложение для сканирования по умолчанию в KDE. Skanlite основан на libksane – интерфейсе, предоставляемом KDE для библиотек SANE, предназначенном для управления планшетными сканерами. Он также поддерживает работу с сетевыми сканерами.
Skanlite is a simple image scanning application, based on the KSane backend. Kåre Särs is the lead developer. In KDE 4 Skanlite replaced Kooka of KDE 3 as default KDE scanning application. Skanlite is based on libksane, an interface provided by KDE for SANE libraries to control flatbed scanners. It also works with networked scanners.
СвингСен
SwingSane — это кроссплатформенный Java-интерфейс для SANE, разработанный и поддерживаемый Роландом Квастом. Он доступен для Microsoft Windows, Linux, Mac OS X и распространяется под лицензией Apache 2.0. Исходный код проекта также можно адаптировать для использования в существующем Swing-приложении.
SwingSane is a cross platform, Java front end for SANE, written and maintained by Roland Quast. It is available for Microsoft Windows, Linux, Mac OS X and is licensed under the Apache 2.0 License. The source code for the project can also be adapted for use with an existing Swing application.
XSane
XSane — графический интерфейс для SANE, разработанный Оливером Раухом. Он доступен для Microsoft Windows, Linux, UNIX и OS/2 и распространяется по лицензии GNU General Public License (GPL). Версия для Windows позволяет компьютеру под управлением Windows получить доступ к сканеру, подключенному к сетевому компьютеру Unix, OS/2 или Mac OS X, но обычно не к локальному компьютеру с Windows. Работа с некоторыми моделями сканеров, подключенными локально, возможна только с использованием "полных" версий бэкендов SANE.
XSane is a graphical front end for SANE written by Oliver Rauch. It is available for Microsoft Windows, Linux, UNIX, and OS/2 and is licensed under the GNU General Public License (GPL). The Windows version only allows a Windows computer to access a scanner that is attached to a Unix, OS/2 or Mac OS X network computer, but not generally to the local Windows computer. Only the "complete" sane back ends versions will possibly work with some scanner models connected locally.