终于可以愉快地扫描了:Linux 扫描仪配置与使用攻略
在一些办公场合中,扫描仪和打印机一样,也是必不可少的——将纸质文书、票据、照片等扫描成电子档,是工作的一环。配置扫描仪的重要性不言而喻。
如果你使用 Windows 与 macOS,有厂商的驱动和配套软件助力,一切轻而易举,设置参数后轻轻一点即可扫描。然而,如果你使用的是 Linux 发行版,就没那么方便了,因为 Linux 平台通常不受厂商重视,除爱普生1等极少数厂商外,很少有厂商会精心为 Linux 平台开发驱动程序与扫描软件。
在政、企单位推动操作系统国产化进程的背景下,Linux 平台使用扫描仪的需求会越来越多,这无疑给运维人员出了一系列难题。同一台设备,要是偏偏在 Linux 下缺少软件而「趴窝」,那无疑会给单位的工作徒增不少麻烦。
好在,这些问题都是可以化解的,Linux 发行版本身就有一套跨厂商的成熟解决方案——SANE,满足你在 Linux 下扫描的刚需。
Linux 下,想用打印机,就找 CUPS;想用扫描仪,就找 SANE。
SANE(Scanner Access Now Easy,「扫描易」),是一套用于操作图像采集设备的标准化 API,为 UNIX / 类 UNIX 环境(例如 Linux 发行版)量身打造,可操作的设备包括扫描仪、相机、摄像头等。它是另一套图像采集标准 TWAIN 的竞争对手2。
对于开发者来说,SANE 是一套通用的编程接口,适用于理论上所有的扫描仪,有助于简化扫描软件的开发工作,并提升用户的体验;对于一般用户来说,SANE 的意义更加显著——它担负着为各大 Linux 发行版提供扫描支持的使命,让你的扫描仪开箱即用,免去繁琐的配置。
熟悉 Linux 网络打印机配置的读者,会使用 IPP、LPD 这两种协议来连接网络打印机。而在扫描仪领域,也有着自己的「IPP」协议,那就是 eSCL(Extended Standard Client/Server Language,扩展标准下的客户端/服务端语言),又称为「AirScan」。这是由 Mopria 组织开发的协议,基于 XML 与 HTTP。
和 IPP 一样,使用 eSCL,你无须安装扫描仪驱动,就可以通过以太网、WLAN 和 USB 来连接扫描仪进行扫描。包括惠普、佳能、兄弟、爱普生在内的多家知名厂商都是 Mopria 组织的成员,其产品对该协议提供了完备支持。
SANE 与 ESCL 本身属于基础设施,要想实现扫描功能,还需要相应的扫描软件。目前 Linux 平台下有两款免费、开源、实用的扫描软件,理论上适用于所有扫描仪,无须考虑各厂商各型号之间的差异。
你可以根据自己的实际需要来选择。为便于大家快速上手,下文选用 Simple Scan 作为扫描程序。
想要顺畅地使用 SANE 来进行扫描,首先要安装一系列软件包。
一般地,像 Ubuntu、Deepin、Zorin OS 这样的「新手向」发行版,安装时就已经配置好了 SANE 与 Simple Scan,开箱即用。而对于 Arch Linux、Gentoo 等「玩家向」的发行版,则需要自行配置。
通常 SANE 主要包含以下软件包:
软件包名 | 说明 |
---|---|
sane | SANE 的核心组件,提供了基本的扫描仪支持。必须安装。 |
sane-airscan | 用于支持网络扫描仪的后端组件,支持 eSCL 与 WSD 两种技术。要使用网络扫描仪,该组件必须安装。 |
libinsane | 用于检测扫描仪的组件。为了帮助你检测 USB 扫描仪,建议安装。 |
colord-sane | 用于管理扫描仪色彩配置的组件,Simple Scan 等扫描软件依赖它工作。 |
注:colord-sane 无须手动安装,因为在安装扫描软件时会自动将其安装上。
各大 Linux 发行版都收录了 SANE,按照以下命令安装。常用的发行版安装命令如下,注意不同发行版的软件包名、软件包的组成差异极大3。若没有标注「可选」,则为必须安装的组件。
# Arch Linux
sudo pacman -Sy sane sane-airscan libinsane
# Debian及衍生版,如:Ubuntu / Deepin / 银河麒麟 / UOS
sudo apt update
sudo apt install libsane-common libsane1 sane-airscan libinsane1
sudo apt install sane-utils # SANE的实用工具(可选,面向专业用户)
sudo apt install libsane-hpaio # 面向惠普多功能一体机的支持组件(可选)
# OpenSUSE
sudo zypper install libsane1 sane-airscan libinsane1
sudo zypper install sane-backends # SANE的后端支持组件
sudo zypper install sane-backends-autoconfig # 用于自动配置USB打印机的组件
sudo zypper install hplip-sane # 面向惠普扫描仪与多功能一体机的支持组件(可选)
sudo zypper install sane-saned # SANE的网络服务器,用于共享本机的扫描仪(可选)
# Fedora
sudo dnf install sane-backends sane-frontends sane-airscan libinsane
sudo dnf install sane-backends-drivers-scanners # SANE的扫描仪后端驱动
sudo dnf install sane-backends-drivers-cameras # SANE的照相机后端驱动(可选)
sudo dnf install libsane-hpaio # 面向惠普扫描仪与多功能一体机的支持组件(可选)
注意:正如上面的命令所示,Arch Linux 以外的很多发行版都把 SANE 的组件拆成多个软件包,相反 Arch Linux 则把
saned
、sane-backends
等组件全部整合到了sane
这个软件包里。
一般情况下,若连接本地与网络扫描仪,上述必选的软件包在安装后即可使用,无须进一步配置。若你使用惠普推出的扫描仪与一体机,可能还需要安装 HPLIP,以及额外的软件包(已在上面的代码块中列出);Arch Linux 的sane
软件包已经整合了惠普扫描仪的支持,无须安装libsane-hpaio
这类软件包。
与 CUPS 一样,SANE 也使用 Avahi 来搜索网络打印机。Avahi 是 Linux 上用于搜索网络设备的客户端(基于 mDNS/DNS-SD 协议),兼容苹果的 Bonjour 服务。
但是,在有的电脑上,光有 Avahi 还不够——或许能搜索到扫描仪,但是只能解析扫描仪的主机名4,无法解析主机名对应的 IP 地址。主机名并不是域名,仅靠主机名,没有 IP 地址,你是连不上扫描仪的。
为了补齐这一短板,我们还需要安装 nss-mdns 软件包,它为 Avahi 提供解析网络打印机、扫描仪等网络设备 IP 地址的支持。由于该软件包只是 Avahi 的可选包,我们必须手动安装。
# Arch Linux
sudo pacman -Sy nss-mdns
# Debian及衍生版,如:Ubuntu / Deepin / 银河麒麟 / UOS
sudo apt update
sudo apt install libnss-mdns
# OpenSUSE
sudo zypper install nss-mdns
# Fedora
sudo dnf install nss-mdns
GNOME 的 Simple Scan,以及 KDE 的两款扫描软件,通常都收录在主流发行版的软件仓库里,你可以直接安装,根据你的实际需要选择一款:
# Arch Linux
sudo pacman -Sy simple-scan
sudo pacman -Sy skanpage skanlite
# Debian及衍生版,如:Ubuntu / Deepin / 银河麒麟 / UOS
sudo apt update
sudo apt install simple-scan
sudo apt install skanpage skanlite
# OpenSUSE
sudo zypper install simple-scan
sudo zypper install skanpage skanlite
# Fedora
sudo dnf install simple-scan
sudo dnf install skanpage skanlite
安装完成后,你可以在桌面的启动器(相当于「开始」菜单)中找到这些软件,例如 Simple Scan 对应的软件名称为「文档扫描器」。
另一款扫描工具 NAPS2 没有收录在软件仓库中,需要去官方网站下载。不过 Arch Linux 的 AUR 则有收录,你可以使用 Yay 来安装5:
yay -S naps2-bin
在 Linux 下,SANE 扫描仪的配置要比 CUPS 的打印机配置简单得多,因为:
不过,如果你使用 USB 方式连接部分型号的扫描仪,则计算机可能会无法识别,这时你需要安装驱动程序。你可以通过以下两种方式来查找驱动程序。
以爱普生、佳能为代表的扫描仪/一体机品牌提供了完备的跨平台支持,提供了 Linux 平台下的驱动。你可以在品牌官方网站的「技术支持」板块下载,这里不再展开。
需要注意的是,有些厂商「驱动程序」本身还要依赖 SANE,因为这些「驱动程序」本质上是厂商提供的扫描软件,例如爱普生的 Linux 打印机「驱动程序」其实就是 Epson Scan 2 的 Linux 版本。
如果你使用 Arch Linux 及其衍生版(Manjaro、SteamOS 等),查找驱动要更为方便。AUR 是个大宝库,部分厂商的驱动程序收录在其中。
第一步,为了确保你的目标品牌驱动程序有收录,你需要先用yay -Ss
来检索扫描仪品牌名称。该命令同时也会检索 Arch Linux CN 源的内容。
例如,可分别使用以下四个命令,检索兄弟(Brother)、佳能(Canon)、爱普生(Epson)、三星(Samsung)这四个品牌的驱动程序:
yay -Ss brother
yay -Ss canon
yay -Ss epson
yay -Ss samsung
随后 Yay 会自动检索 AUR 软件源。以三星为例,翻阅检索结果可发现,AUR 收录了三星的通用扫描仪驱动,如下所示:7
...
aur/samsung-unified-driver-scanner 1.00.39-7 (+10 0.07)
Samsung Unified Linux Driver for scanners.
aur/samsung-unified-driver 1.00.39-7 (+7 0.00)
Samsung Unified Linux Driver for printers and scanners.
...
再以兄弟为例,AUR 也收录了兄弟的通用扫描仪驱动brscan
,还是明确为 SANE 开发的。这里需要注意,brscan
有多个版本,不同的兄弟扫描仪、一体机适用的brscan
版本可能不同,建议全部安装:
...
aur/brscan5 1.3.3_0-0 (+28 0.31)
SANE drivers from Brother for compatible models
aur/brscan2 0.2.5_1-1 (+38 0.00)
SANE driver from Brother for brscan2 models
aur/brscan3 0.2.13_1-9 (+70 0.00) (Orphaned)
Brother SANE drivers for brscan3-compatible models
aur/brscan4 0.4.11_1-2 (+164 0.50)
SANE drivers from Brother for compatible models
...
从上面两个例子可见,厂商的扫描仪驱动并不像 CUPS 驱动那样要为具体型号「量身定做」,相反多为一个驱动「通吃」该厂商几乎所有型号。
第二步,安装驱动程序。例如,分别安装三星、兄弟的通用扫描仪驱动:
yay -S samsung-unified-driver-scanner
yay -S brscan5 brscan2 brscan3 brscan4
随后按提示操作即可。8
软件安装完成后,我们就可以着手开始扫描了。
Simple Scan 启动时,会自动检测连接到电脑上的扫描仪,包括有线和无线扫描仪。这一过程需要一些时间,稍等片刻即可扫描完成。
完成后,Simple Scan 会提示「扫描准备就绪」,并列出计算机上已连接的扫描仪(位于界面中的下拉框)。选择你想连接的扫描仪。本例中,笔者使用的是兄弟的一体机 DCP-B7535DW,以无线方式连接到电脑,因此选用 eSCL 协议。
接下来,我们点击界面左上角的「扫描」按钮。点击之后,扫描仪立即工作,开始扫描——在我的电脑上,几乎是点击的一瞬间,一体机就有了反应,自动开始扫描。
稍等片刻,扫描完成,扫描结果实时展现在屏幕上。如下图所示:
如果你还想继续扫描新的页面,则再次点击界面左上角的「扫描」按钮。扫描所得的页面会一字排开,你可以在底部工具栏旋转页面方向,也可以删除页面。
注意:Simple Scan 不提供预览(即「预扫描」)功能。点击「扫描」按钮就是正式的扫描。
扫描完成后,点击软件右上角的软盘图标,将扫描结果存盘。截至发稿时,Simple Scan 支持以下格式:
如果扫描页面不止一张,且保存为 PDF 以外的格式,则保存的文件会以<你指定的文件名>-<序号>
为格式命名。
若接下来还要扫描新文档,或觉得当前扫描的页面不满意,想从头扫描,则点击软件左下角的「新建文档」按钮。
Simple Scan 提供了一些高级参数,直接影响扫描的体验和质量。你可以根据自己的实际需要来调整。
Windows 下,扫描仪的厂商软件至少会提供文本、图像两种扫描模式;Simple Scan 同样也支持。9两种模式的区别在于:
你可以点击左上角「扫描」按钮右侧的齿轮按钮,在弹出的菜单中切换「文本」与「图像」模式。
常用的扫描仪有三种:
由此可见,三种扫描仪各有不同的文稿读取模式。Simple Scan 允许你根据扫描仪的具体情况,来决定如何读取文稿。同样是点击左上角「扫描」按钮右侧的齿轮按钮来设置:
正如官方扫描软件一样,Simple Scan 允许你在「首选项」中设置扫描质量,包括分辨率、亮度、对比度等。如下图所示:
在这些选项中:
注意:并不是所有的扫描仪都支持 Simple Scan 列出的所有分辨率选项。请务必先阅读扫描仪的说明文档,再选择分辨率。否则,保持默认设置。
无论是打印机的 CUPS,还是扫描仪的 SANE,都使用 Avahi 来检测网络打印和扫描设备。因此,首先要确保你的电脑上已经正确安装了 Avahi。
Avahi 是 sane-airscan 的依赖项,安装 sane-airscan 的同时也应当自动装上 Avahi。不过,在有些网络环境下,你还需要 nss-mdns 才能正确识别扫描仪,因此如果安装了 Avahi 还无法连接,则还需要安装 nss-mdns 软件包。
你可以运行以下命令,让 Avahi 搜索网络上的打印机、扫描仪设备,帮助你排查连接问题:
avahi-browse --all --ignore-local --resolve --terminate
若设备正常连接到网络中,则它的型号、主机名会出现在输出结果中。如果是兼具打印、扫描等功能的一体机设备,则同一设备会显示多次,每个显示结果对应的是它的功能(例如 IPP 打印、LPD 打印、eSCL 扫描)。
有的时候,你使用 Simple Scan 来保存文件,看似一切顺利,却在即将成功时冷不丁出现以下提示:
这是因为 Simple Scan 的「后处理」功能被启用了。后处理功能允许用户在生成文件后,调用外部程序对文件进行处理,例如使用 ImageMagick 进一步优化画质。然而,后处理功能需要你自行指定外部程序的路径,该路径默认为空,所以才会出现以上错误。
解决这一问题很简单:在 Simple Scan 的「首选项」中直接禁用「后处理」即可。
相较于 Windows 与 macOS 下无比便利的厂商支持,在 Linux 下配置打印机、扫描仪是个技术活。而在国产 Linux 发行版日益在政企部门普及的大背景下,这样的「技术活」已是运维人员的必备知识。
正是在这样的背景下,笔者写下这篇配置教程,与上一篇《终于可以在 Linux 下愉快打印了:Linux 发行版配置打印机攻略》共同为大家「抽丝剥茧」,细致讲解 Linux 下这两类办公设备的配置技巧。相信有这两篇教程的助力,无论是配置扫描仪,还是配置打印机都不再是难事,为你带来便捷的打印与扫描的体验。
期待本文能给大家带来帮助和启发。
> 关注 少数派小红书,感受精彩数字生活 🍃
> 实用、好用的 正版软件,少数派为你呈现 🚀
© 本文著作权归作者所有,并授权少数派独家使用,未经少数派许可,不得转载使用。