在一些办公场合中,扫描仪和打印机一样,也是必不可少的——将纸质文书、票据、照片等扫描成电子档,是工作的一环。配置扫描仪的重要性不言而喻。

如果你使用 Windows 与 macOS,有厂商的驱动和配套软件助力,一切轻而易举,设置参数后轻轻一点即可扫描。然而,如果你使用的是 Linux 发行版,就没那么方便了,因为 Linux 平台通常不受厂商重视,除爱普生1等极少数厂商外,很少有厂商会精心为 Linux 平台开发驱动程序与扫描软件。

在政、企单位推动操作系统国产化进程的背景下,Linux 平台使用扫描仪的需求会越来越多,这无疑给运维人员出了一系列难题。同一台设备,要是偏偏在 Linux 下缺少软件而「趴窝」,那无疑会给单位的工作徒增不少麻烦。

好在,这些问题都是可以化解的,Linux 发行版本身就有一套跨厂商的成熟解决方案——SANE,满足你在 Linux 下扫描的刚需。

背景:Linux 的扫描仪支持

1)基础设施:SANE

Linux 下,想用打印机,就找 CUPS;想用扫描仪,就找 SANE。

SANE(Scanner Access Now Easy,「扫描易」),是一套用于操作图像采集设备的标准化 API,为 UNIX / 类 UNIX 环境(例如 Linux 发行版)量身打造,可操作的设备包括扫描仪、相机、摄像头等。它是另一套图像采集标准 TWAIN 的竞争对手2

对于开发者来说,SANE 是一套通用的编程接口,适用于理论上所有的扫描仪,有助于简化扫描软件的开发工作,并提升用户的体验;对于一般用户来说,SANE 的意义更加显著——它担负着为各大 Linux 发行版提供扫描支持的使命,让你的扫描仪开箱即用,免去繁琐的配置。

2)网络扫描协议:eSCL

熟悉 Linux 网络打印机配置的读者,会使用 IPP、LPD 这两种协议来连接网络打印机。而在扫描仪领域,也有着自己的「IPP」协议,那就是 eSCL(Extended Standard Client/Server Language,扩展标准下的客户端/服务端语言),又称为「AirScan」。这是由 Mopria 组织开发的协议,基于 XML 与 HTTP。

和 IPP 一样,使用 eSCL,你无须安装扫描仪驱动,就可以通过以太网、WLAN 和 USB 来连接扫描仪进行扫描。包括惠普、佳能、兄弟、爱普生在内的多家知名厂商都是 Mopria 组织的成员,其产品对该协议提供了完备支持。

2)扫描软件

SANE 与 ESCL 本身属于基础设施,要想实现扫描功能,还需要相应的扫描软件。目前 Linux 平台下有两款免费、开源、实用的扫描软件,理论上适用于所有扫描仪,无须考虑各厂商各型号之间的差异。

  • Simple Scan由 GNOME 项目组开发的一款简易、实用的扫描工具,多为主流发行版自带。
  • SkanliteSkanpage由 KDE 项目组开发的扫描工具。前者的界面类似于 Epson Scan 2 与 Windows 自带的扫描工具,支持预览(即「预扫描」),倾向于单页扫描;后者则为多页扫描而优化。
  • NAPS2(Not a PDF Scanner 2)由 CyanFish 开发的跨平台、多功能扫描工具,比 Simple Scan 功能更丰富,提供了图片裁切、OCR 等高级功能,支持导出的格式更多。

你可以根据自己的实际需要来选择。为便于大家快速上手,下文选用 Simple Scan 作为扫描程序。

准备工作:安装必要的软件包

想要顺畅地使用 SANE 来进行扫描,首先要安装一系列软件包。

一般地,像 Ubuntu、Deepin、Zorin OS 这样的「新手向」发行版,安装时就已经配置好了 SANE 与 Simple Scan,开箱即用。而对于 Arch Linux、Gentoo 等「玩家向」的发行版,则需要自行配置。

1)安装 SANE

通常 SANE 主要包含以下软件包:

软件包名说明
saneSANE 的核心组件,提供了基本的扫描仪支持。必须安装。
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 则把sanedsane-backends等组件全部整合到了sane这个软件包里。

一般情况下,若连接本地与网络扫描仪,上述必选的软件包在安装后即可使用,无须进一步配置。若你使用惠普推出的扫描仪与一体机,可能还需要安装 HPLIP,以及额外的软件包(已在上面的代码块中列出);Arch Linux 的sane软件包已经整合了惠普扫描仪的支持,无须安装libsane-hpaio这类软件包。

2)安装主机解析工具 nss-mdns

与 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

3)安装扫描软件

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 的打印机配置简单得多,因为:

  • 如果你使用 eSCL 方式连接网络扫描仪,则根本不需要安装驱动——这是行业标准,不依赖任何驱动程序。6
  • SANE 本身也是通用型的驱动程序(unified driver)。相较于 CUPS,SANE 对具体硬件驱动的依赖更少。

不过,如果你使用 USB 方式连接部分型号的扫描仪,则计算机可能会无法识别,这时你需要安装驱动程序。你可以通过以下两种方式来查找驱动程序。

1)品牌官网

以爱普生、佳能为代表的扫描仪/一体机品牌提供了完备的跨平台支持,提供了 Linux 平台下的驱动。你可以在品牌官方网站的「技术支持」板块下载,这里不再展开。

需要注意的是,有些厂商「驱动程序」本身还要依赖 SANE,因为这些「驱动程序」本质上是厂商提供的扫描软件,例如爱普生的 Linux 打印机「驱动程序」其实就是 Epson Scan 2 的 Linux 版本

爱普生的扫描仪「驱动程序」,其实就是Epson Scan 2的Linux版本。

2)Arch Linux 用户:可以从软件源安装

如果你使用 Arch Linux 及其衍生版(Manjaro、SteamOS 等),查找驱动要更为方便。AUR 是个大宝库,部分厂商的驱动程序收录在其中。

注意:在继续之前,请确保你安装了 AUR 助手,例如 Yay。下文将使用 Yay 来演示。

第一步,为了确保你的目标品牌驱动程序有收录,你需要先用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 扫描

软件安装完成后,我们就可以着手开始扫描了。

1)连接扫描仪

Simple Scan 启动时,会自动检测连接到电脑上的扫描仪,包括有线和无线扫描仪。这一过程需要一些时间,稍等片刻即可扫描完成。

Simple Scan 正在检测扫描仪。

完成后,Simple Scan 会提示「扫描准备就绪」,并列出计算机上已连接的扫描仪(位于界面中的下拉框)。选择你想连接的扫描仪。本例中,笔者使用的是兄弟的一体机 DCP-B7535DW,以无线方式连接到电脑,因此选用 eSCL 协议。

扫描仪探测完成。

2)开始扫描

接下来,我们点击界面左上角的「扫描」按钮。点击之后,扫描仪立即工作,开始扫描——在我的电脑上,几乎是点击的一瞬间,一体机就有了反应,自动开始扫描。

稍等片刻,扫描完成,扫描结果实时展现在屏幕上。如下图所示:

使用 Simple Scan 扫描的范例。用于测试的文稿是爱普生打印机的「打印头校准」测试页面。

如果你还想继续扫描新的页面,则再次点击界面左上角的「扫描」按钮。扫描所得的页面会一字排开,你可以在底部工具栏旋转页面方向,也可以删除页面。

注意:Simple Scan 不提供预览(即「预扫描」)功能。点击「扫描」按钮就是正式的扫描。

3)保存文档

扫描完成后,点击软件右上角的软盘图标,将扫描结果存盘。截至发稿时,Simple Scan 支持以下格式:

  • 多页 PDF 文档
  • JPG(有损压缩)
  • PNG(无损压缩)
  • WebP(有损压缩)

如果扫描页面不止一张,且保存为 PDF 以外的格式,则保存的文件会以<你指定的文件名>-<序号>为格式命名。

若接下来还要扫描新文档,或觉得当前扫描的页面不满意,想从头扫描,则点击软件左下角的「新建文档」按钮。

设置 Simple Scan 的扫描参数

Simple Scan 提供了一些高级参数,直接影响扫描的体验和质量。你可以根据自己的实际需要来调整。

1)设置扫描模式(文本或图像模式)

Windows 下,扫描仪的厂商软件至少会提供文本图像两种扫描模式;Simple Scan 同样也支持。9两种模式的区别在于:

  • 文本模式适合扫描文稿,它会对文稿进行针对性的优化,使文稿更清晰易读;
  • 图像模式则会忠实还原文稿的色彩、亮度,适合扫描照片、印刷品等。

你可以点击左上角「扫描」按钮右侧的齿轮按钮,在弹出的菜单中切换「文本」与「图像」模式。

相同分辨率(300dpi)下,扫描 CUPS 打印测试页的效果。左侧为文本模式,右侧为图像模式。

2)设置读取文稿的模式

常用的扫描仪有三种:

  • 使用文稿台的平板扫描仪(一体机上的扫描仪也属于平板扫描仪10),需要你打开盖子,把文稿放在玻璃台上。一次只能扫描一张 A4 纸文稿。
  • 支持高速进纸的馈纸式扫描仪(又称高速扫描仪),就像打印机一样放入文稿,一分钟可以扫描数十张文稿,还支持双面扫描11
  • 使用摄像头的高拍仪,一次只能扫描一张 A4 纸文稿。

由此可见,三种扫描仪各有不同的文稿读取模式。Simple Scan 允许你根据扫描仪的具体情况,来决定如何读取文稿。同样是点击左上角「扫描」按钮右侧的齿轮按钮来设置:

  • 单页:默认模式,一次只扫描一个页面。
  • 传送来的所有页面:适用于馈纸式扫描仪的模式,可以一次连续扫描多个页面,再传送到 Simple Scan 中。若你使用馈纸式扫描仪,却将 Simple Scan 设置「单页」模式,你就要反复点击「扫描」按钮来进行多页扫描。
  • 来自平板扫描仪的多个页面:扫描一个页面后,Simple Scan 会提示你是否继续扫描,你可以更换文稿后点击「继续」,添加新页面;或点击「结束」,完成扫描。这一工作模式类似于 Epson Scan 2 等扫描软件在平板扫描仪上的的「多页模式」。

3)设置扫描质量

正如官方扫描软件一样,Simple Scan 允许你在「首选项」中设置扫描质量,包括分辨率、亮度、对比度等。如下图所示:

Simple Scan 的扫描质量设置,支持设定分辨率、亮度、对比度、压缩等参数

在这些选项中:

  • 分辨率:Simple Scan 允许你分别为文字、图片两种扫描模式设置不同的分辨率。两种模式可设置的分辨率范围相同,最低 75dpi,最高 2000dpi。
  • 亮度、对比度:如果扫描效果不理想(例如文稿过亮或过暗),可以调节这两个选项来修正。
  • 压缩:用于设置图像质量,决定了扫描仪保存图片的画质,其作用在保存 JPG 格式时尤其显著。

注意:并不是所有的扫描仪都支持 Simple Scan 列出的所有分辨率选项。请务必先阅读扫描仪的说明文档,再选择分辨率。否则,保持默认设置。

排查问题

1)网络扫描仪无法连接?

无论是打印机的 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 扫描)。

2)解决「保存文件错误」的问题

有的时候,你使用 Simple Scan 来保存文件,看似一切顺利,却在即将成功时冷不丁出现以下提示:

image
保存文件时,可能会出现的错误提示。

这是因为 Simple Scan 的「后处理」功能被启用了。后处理功能允许用户在生成文件后,调用外部程序对文件进行处理,例如使用 ImageMagick 进一步优化画质。然而,后处理功能需要你自行指定外部程序的路径,该路径默认为空,所以才会出现以上错误。

解决这一问题很简单:在 Simple Scan 的「首选项」中直接禁用「后处理」即可。

写在最后

相较于 Windows 与 macOS 下无比便利的厂商支持,在 Linux 下配置打印机、扫描仪是个技术活。而在国产 Linux 发行版日益在政企部门普及的大背景下,这样的「技术活」已是运维人员的必备知识。

正是在这样的背景下,笔者写下这篇配置教程,与上一篇《终于可以在 Linux 下愉快打印了:Linux 发行版配置打印机攻略》共同为大家「抽丝剥茧」,细致讲解 Linux 下这两类办公设备的配置技巧。相信有这两篇教程的助力,无论是配置扫描仪,还是配置打印机都不再是难事,为你带来便捷的打印与扫描的体验。

期待本文能给大家带来帮助和启发。

> 关注 少数派小红书,感受精彩数字生活 🍃

> 实用、好用的 正版软件,少数派为你呈现 🚀