使用操作系统工具通过 Python 3 扫描图像

问题描述 投票:0回答:1

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

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

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

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

我真的不需要对扫描仪进行太多控制,只需“扫描图像并在此处保存文件___”。那么,有没有什么方法可以告诉 Windows 发送“扫描”命令并将输出保存到我可以访问的特定文件中?也许只是通过

os.system()
使用命令? (基本上,如果windows能做到的话,我不就用windows工具吗?)

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

python linux windows-10 scanning
1个回答
3
投票

我无法仅针对 Windows 回答 Linux。

除了 Twain (pyTwain) 之外与扫描仪对话的通用方法是通过 Windows 图像采集。

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

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

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

enter image description here

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

因此,在我的测试中,扫描仪仅返回完整的压板扫描 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,颜色模式“RGB”,输出格式“PNG”)
27秒扫描完成

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

© www.soinside.com 2019 - 2024. All rights reserved.