使用 OS 工具通过 Python 3 扫描图像
Posted
技术标签:
【中文标题】使用 OS 工具通过 Python 3 扫描图像【英文标题】:Use OS tools to scan in an image with Python 3 【发布时间】:2021-12-22 15:21:12 【问题描述】:我正在使用 python 构建一个应用程序,该应用程序需要能够连接到扫描仪并处理生成的 pdf/jpeg/whatever 中的数据。我一直在尝试找到一种方法来连接到扫描仪以请求扫描,但没有真正的进展。
我查看了所有我能找到的选项,包括这个答案:I want to connect my program to image scanner
我发现的大多数解决方案都说您需要使用 pyTwain、pySane、Libinsane、python-imagescanner 或类似的解决方案,这些解决方案似乎都围绕着在 Windows 上使用 TWAIN 或在 Linux 上使用 SANE。我有一个打印机/扫描仪组合,但我找不到它的 TWAIN 驱动程序,因为它不是“企业”打印机,但即便如此我也不知道这台特定的打印机是用户会拥有的,所以我是寻找更通用的解决方案。
对我来说令人困惑的部分是,我仍然可以通过使用 Windows 传真和扫描让扫描仪正常扫描,所以我觉得必须有一种方法让扫描仪接收来自程序的扫描命令。
我真的不需要对扫描仪进行太多控制,只需“扫描图像并将文件保存在这里___”。那么,有没有办法告诉 Windows 发送“扫描”命令并将输出保存到我可以访问的特定文件中?也许只是通过os.system()
使用类似命令? (基本上windows能做到的话,我就不能只用windows工具吗?)
通过 linux 执行此操作的方法也会有所帮助,但 Windows 10 是主要问题。
【问题讨论】:
我不认为这实际上是一个 python 问题。它更多的是关于特定的打印机制造商,因为最终取决于他们。你看过他们推荐的东西吗?你可以在这里找到他们开发页面的链接:developers.hp.com/tools 我尽量不提及有关扫描仪的细节,因为我想要更一般的东西。某种仅使用 Python 中的 windows 工具的方法。我试图更新问题以使其更有意义。 如果您想使用命令行工具,这会将您的问题与 Python 完全分离,并使其成为超级用户而不是 Stack Overflow 的一般使用问题。 【参考方案1】:我不能只为 Windows 回答 Linux。
与扫描仪通信的通用方法是通过 Windows 图像采集。
在大多数情况下,扫描仪需要一些驱动程序支持,这通常可以通过 MsPaint 扫描轻松确认(或者如果安装了传真扫描)。
因此,首先检查 Windows 设备中包含的扫描仪,然后右键单击扫描或尝试在 Paint 中进行扫描。
如果您看到此类消息,则表示客户端无法通过 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 秒内完成
自述文件https://github.com/nagimov/wia-cmd-scanner#scripting-and-automation中有一个设置日期/使用for循环的例子
【讨论】:
我老了。我记得 WIA 是 TWAIN 的 新 替代品。那是 20 多年前的事了。以上是关于使用 OS 工具通过 Python 3 扫描图像的主要内容,如果未能解决你的问题,请参考以下文章