-1

我正在使用 python 构建一个应用程序,该应用程序需要能够连接到扫描仪并处理生成的 pdf/jpeg/whatever 中的数据。我一直在尝试找到一种方法来连接到扫描仪以请求扫描,但没有真正的进展。

我环顾了所有能找到的选项,包括这个答案:我想将我的程序连接到图像扫描仪

我发现的大多数解决方案都说您需要使用 pyTwain、pySane、Libinsane、python-imagescanner 等,它们似乎都围绕着使用 TWAIN for Windows 或 SANE for Linux。我有一个打印机/扫描仪组合,但我找不到它的 TWAIN 驱动程序,因为它不是“企业”打印机,但即便如此我也不知道这台特定的打印机是用户会拥有的,所以我是寻找更通用的解决方案。

对我来说令人困惑的部分是,我仍然可以通过使用 Windows 传真和扫描让扫描仪正常扫描,所以我觉得必须有一种方法让扫描仪接收来自程序的扫描命令。

我真的不需要对扫描仪进行太多控制,只需“扫描图像并将文件保存在这里___”。那么,有没有办法告诉 Windows 发送“扫描”命令并将输出保存到我​​可以访问的特定文件中?也许只是通过像命令一样使用os.system()?(基本上,如果windows可以做到,我不能只使用windows工具吗?)

通过 linux 执行此操作的方法也会有所帮助,但 Windows 10 是主要问题。

4

1 回答 1

1

我不能只为 Windows 回答 Linux。

与扫描仪对话的通用方法是通过 Windows Image Acquisition。

在大多数情况下,扫描仪需要一些驱动程序支持,这通常可以通过 MsPaint 扫描轻松确认(或者如果安装了传真扫描)。

因此,首先检查 Windows 设备中包含的扫描仪,然后右键单击扫描或尝试在 Paint 中进行扫描。

如果您看到类似这样的消息,则表示客户端未启用通过 WIA 使用扫描仪,您需要安装合适的 WIA 驱动程序。

在此处输入图像描述

一旦克服了这个障碍,您就可以使用 WIA-CMD-Scanner 应用程序尝试使用https://github.com/nagimov/wia-cmd-scanner将图像获取到文件中,它是一个 35 KB 的小型编译 VB可执行程序。

因此,在我的测试中,该扫描仪仅返回 21.59 厘米 x 29.70 厘米的全压板扫描(它不会考虑使用此工具减少扫描区域。)注意它也仅适用于 Windows 发现的第一个扫描仪(您需要修改针对特定模型的代码)。

对我有用的命令(YMMV)

wia-cmd-scanner.exe  /w 0 /h 0 /dpi 300 /color RGB /format PNG /output .\scan.png

扫描到文件 .\scan.png (dpi = 300, color mode 'RGB', output format 'PNG')
扫描在 27 秒内完成

自述文件中有一个设置日期/使用 for 循环的示例https://github.com/nagimov/wia-cmd-scanner#scripting-and-automation

于 2021-11-10T02:45:25.407 回答