使用 OS 工具扫描图像 Python 3

Use OS tools to scan in an image with Python 3

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

我查看了所有我能找到的选项,包括这个答案:I want to connect my program to image scanner

我发现的大多数解决方案都说你需要使用 pyTwain、pySane、Libinsane、python-imagescanner 或类似的东西,它们似乎都围绕着将 TWAIN 用于 Windows或 Linux 的 SANE。我有一个 printer/scanner 组合,但我找不到它的 TWAIN 驱动程序,因为它不是 'enterprise' 打印机,但即便如此我也不知道用户会拥有这个特定的打印机,所以我正在寻找更通用的解决方案。

让我感到困惑的是,我仍然可以通过使用 Windows 传真和扫描让扫描仪正常扫描,所以我觉得必须有办法让扫描仪接收到来自程序的扫描命令。

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

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

我不能只为 Windows 回答 Linux。

与扫描仪对话的通用方法是通过 Windows 图像采集。

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

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

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

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

因此在我的测试中,该扫描仪仅 returns 全压板扫描 21.59 cm x 29.70 cm(使用此工具不会减少扫描区域。)注意它仅适用于第一台扫描仪,正如 Windows 所发现的(您需要修改针对特定型号的代码)。

适合我的命令 (YMMV)

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

Scanning to file .\scan.png (dpi = 300, color mode 'RGB', output format 'PNG')
Scan finished in 27 seconds

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