You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3调用操作系统工具控制扫描仪扫描图像的实现方案咨询

扫描仪对接通用实现方案

Windows 10 核心适配方案

你可以直接调用Windows原生的WIA(Windows Image Acquisition)服务实现扫描,这也是系统自带「传真和扫描」功能依赖的底层能力,只要你的设备能在系统层面正常触发扫描,不需要额外安装厂商TWAIN驱动即可使用,完全满足通用性要求。

方案1:通过pywin32调用WIA接口(可控性更高)

先安装依赖:

pip install pywin32

示例代码实现扫描并保存到指定路径:

import win32com.client
from pathlib import Path

def scan_and_save(save_path: str):
    # 初始化WIA设备管理器
    wia = win32com.client.Dispatch("WIA.CommonDialog")
    # 选择扫描设备(首次调用会弹出设备选择框,也可硬编码指定设备ID跳过选择)
    dev = wia.ShowSelectDevice
    # 配置扫描参数,默认使用彩色、300DPI,可按需调整
    dev.Items(1).Properties("6146").Value = 2 # 1是灰度,2是彩色,4是黑白
    dev.Items(1).Properties("6147").Value = 300 # DPI设置
    # 执行扫描
    img = dev.Items(1).Transfer()
    # 保存到指定路径,支持JPEG/PDF格式
    img.SaveFile(str(Path(save_path).resolve()))

if __name__ == "__main__":
    scan_and_save("./scan_output.jpg")

方案2:通过系统命令调用(无需额外Python依赖)

你可以通过subprocess直接调用PowerShell的WIA指令实现扫描,不需要安装额外Python库,适合轻量场景:

import subprocess

save_path = "C:\\Users\\xxx\\Desktop\\scan_output.jpg"
ps_command = f"""
$wia = New-Object -ComObject WIA.CommonDialog
$dev = $wia.ShowSelectDevice()
$img = $dev.Items(1).Transfer()
$img.SaveFile("{save_path}")
"""
subprocess.run(["powershell", "-Command", ps_command], capture_output=True)

如果不需要自定义参数,也可以直接调用系统自带的wiaacmgr命令唤起原生扫描界面,仅需一行代码:
subprocess.run(["wiaacmgr"], capture_output=True)

Linux 端同类实现方案

Linux侧可以直接调用系统自带的scanimage命令实现通用扫描,该工具依赖SANE服务,绝大多数消费级打印扫描一体机已经被SANE的通用驱动支持,无需安装厂商专属驱动,只要系统能识别到扫描设备即可使用:

  1. 先安装基础依赖(多数发行版默认已预装):
    $ sudo apt install sane-utils
  2. Python调用示例:
import subprocess

save_path = "/home/xxx/scan_output.jpg"
subprocess.run(["scanimage", "--format=jpeg", "--output", save_path], capture_output=True)

如果需要列出所有可用扫描设备,可以执行scanimage --list-devices命令获取设备ID,按需指定设备扫描即可


内容的提问来源于stack exchange,提问作者Entest89

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 14:06:09