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

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

这是充分利用SANE来扫描文档和照片的方法。

立即行动起来

可以使用程序包管理器来安装API。例如,在Debian系统中:

 sudo apt install sane

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

 scanimage -h

现在,请务必注意,您可以在同一命令行中同时发送API命令和特定于扫描仪的命令。此外, -h的输出可能会有些混乱,这是因为API选项和扫描程序选项都只是以串联的方式打印到终端上。

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

提到过,如果只需要设备选项(扫描仪本身的“后端”选项),则可以使用-A选项:

 scanimage -A

请注意,本文以SANE版本1.0.14-15为例。您的特定版本可能会有所不同,并且选项也有所不同。如有疑问,只需使用-h选项运行scanimage。

当然,每个扫描仪都有自己特定的一组可能的选项,因此,请务必尝试使用各种方法来优化您发送的命令,以获得最佳结果。

相关:如何使用平板扫描仪扫描旧幻灯片

简单的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.

指定输出文件

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

 scanimage -o scan_out.png

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

列出和使用设备

是否要确保您的扫描仪被SANE检测到?运行以下命令:

 scanimage -L

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

例如,爱普生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转换,您可能必须发送特定于扫描仪的命令。这些将在下面说明。

相关:扫描和数字化旧照片的最佳方法

批处理示例

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

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

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

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

 --source Automatic

用SANE扫描

无论您是拥有一堆旧家庭文件还是专业的保管人,使用SANE API进行扫描对于那些可以承受扫描仪和ADF严格机械要求的介质来说都是一个明显的选择。

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