如何使用 SANE 最有用的命令在 Linux 中扫描文档

Scanner Access Now Easy (SANE) 是一种应用程序编程接口 (API),用于控制扫描仪和相机。 在使用中,命令行应用程序 scanimage 可用于快速可靠地发送扫描仪命令以执行许多有用的功能。

以下是如何充分利用 SANE 扫描文档和照片。

现在让自己保持清醒

可以使用您的包管理器安装 API。 为了 example,在 Debian 系统中:

sudo apt install sane

…安装 SANE API 并提供命令行应用程序scanimage。 (它还安装了前端工具 xscanimage、scanadf 和 xcam)。 运行以下命令会显示所有可用选项:

scanimage -h

现在,需要注意的是,您可以在同一命令行中发送 API 命令以及特定于扫描仪的命令。 此外,输出 -H 由于 API 选项和扫描仪选项都只是以连接的方式打印到终端,因此可能会有些混乱。

如果未检测到扫描仪,您将仅获得 API 选项。 如果检测到扫描仪,您可能会在检索扫描仪设备信息、发送到 API 并进行格式化时遇到明显的时间延迟。 该命令似乎停止了,但只需等待它就会完成。

已经提到,如果您只想要设备选项(扫描仪本身的“后端”选项),您可以使用 -一种 选项:

scanimage -A

请注意,对于本文,SANE 版本 1.0.14-15 用作 example. 您的特定版本可能会有所不同,并且有一些不同的选项。 如果您有任何疑问,只需使用 -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.

指定输出文件

标准输出可以重定向到一个文件使用 > 或者您可以发出显式选项来指定输出文件的名称和完整路径,例如 example:

scanimage -o scan_out.png

在这种情况下,API 将输出 PNG 格式的图像。

列出和使用设备

想要确保 SANE 检测到您的扫描仪? 运行此命令:

scanimage -L

它将列出检测到的所有设备。 如果单个设备同时具有 LAN 连接和 USB 连接,它将在单独的行中列出它们。

为了 example,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 中获得什么? 您可以获得以下内容:控制自动文档进纸器 (ADF) 以按顺序扫描页面的批处理命令。

虽然扫描仪可能只生成图像格式,但也可以通过光学字符识别 (OCR) 应用程序将这些格式转换为文本, 比如gocr.

请注意,为了生成相当详细的文档以用于文档保存或 OCR 转换,您可能必须发送特定于扫描仪的命令。 这些将在下面说明。

批处理示例

您需要根据最终结果的目的使用不同的格式。 为了 example,如果您打算使用的 OCR 应用程序只接受 PNM 图像,则您的图像文件格式应为 PNM。

这是一个 example 发送命令以扫描一页打印文本,以便由接受 pnm 图像的 OCR 应用程序进行转换。 在此命令中,特定于扫描仪的命令是 –mode、–resolution 和 –source:

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

由于这些是扫描仪命令而不是 SANE API,因此它们会因品牌和型号而异,并且可能需要进行一些实验。 为了 example,从后端的帮助输出中,以下代码段可能并不明显:

--source Automatic

用 SANE 扫描它

无论您是拥有一堆旧家庭文件的人还是专业的保护者,使用 SANE API 进行扫描对于能够经受住扫描仪和 ADF 机械严苛要求的介质来说都是一个显而易见的选择。

将 SANE API 的功能与图像后处理或 OCR 应用程序相结合,您可以将几乎所有值得保存的平面媒体数字化。