怎样使用 SANE 最有用的命令在 Linux 中扫描文档

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

以下是怎样充分利用 SANE 扫描文档和照片的方法。

现在就让自己保持清醒

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

sudo apt install sane

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

scanimage -h

现在,请务必注意,您可以在同一命令行中发送 API 命令以及特定于扫描仪的命令。 此外,输出 -H 由于 API 选项和扫描仪选项都只是以串联样式打印到终端,因此可能会有点混乱。

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

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

scanimage -A

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

指定输出文件

可以使用以下命令将标准输出重定向到文件 > 或者您可以发出显式选项来指定输出文件的名称和完整路径,例如 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 扫描

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

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

相关阅读:

Posted in: LinuxTags: