我正在使用 python 构建一个应用程序,它需要能够连接到扫描仪并处理生成的 pdf/jpeg/其他文件中的数据。我一直在尝试找到一种连接到扫描仪以请求扫描的方法,但没有真正的进展。
我已经查看了我能找到的所有选项,包括这个答案:我想将我的程序连接到图像扫描仪
我发现的大多数解决方案都说您需要使用 pyTwain、pySane、Libinsane、python-imagescanner 等,这些似乎都围绕使用 TWAIN for Windows 或 SANE for Linux 展开。我有一个打印机/扫描仪组合,但我找不到它的 TWAIN 驱动程序,因为它不是“企业”打印机,但即便如此,我也不知道用户会拥有这个特定的打印机,所以我寻找更通用的解决方案。
令我感到困惑的是,我仍然可以使用 Windows 传真和扫描让扫描仪正常扫描,所以我觉得必须有一种方法可以让扫描仪从程序接收扫描命令。
我真的不需要对扫描仪进行太多控制,只需“扫描图像并在此处保存文件___”。那么,有没有什么方法可以告诉 Windows 发送“扫描”命令并将输出保存到我可以访问的特定文件中?也许只是通过
os.system()
使用命令? (基本上,如果windows能做到的话,我不就用windows工具吗?)
通过 Linux 执行此操作的方法也会有所帮助,但 Windows 10 是主要问题。
我无法仅针对 Windows 回答 Linux。
除了 Twain (pyTwain) 之外与扫描仪对话的通用方法是通过 Windows 图像采集。
在大多数情况下,扫描仪需要一些驱动程序支持,这通常可以通过 MsPaint 扫描(或者如果安装了传真扫描)轻松确认。
因此,首先检查 Windows 设备中包含的扫描仪,然后右键单击“扫描”或尝试在“画图”中进行扫描。
如果您看到类似这样的消息,则表明客户端无法通过 WIA 使用扫描仪,您将需要安装合适的 WIA 驱动程序。
一旦克服了这个障碍,您就可以使用 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