如何用本地部署的DeepSeek-R1模型结合OmniParser V2实现无网络 WPS 文件交互?(适合小白)
我们希望 AI 能像人一样“看”到 WPS 界面,然后根据指令(如“保存文件”)自动点击按钮或输入文字。整个过程不需要联网,全部在本地运行。deepseek r1 模型:一个本地运行的 AI,能理解任务并生成操作指令。:一个工具,用于解析 WPS 界面的截图,识别按钮和文本框。辅助工具:截图工具 mss 和自动化工具 pyautogui。通过以上步骤,你可以用本地 AI 和 OmniParser
引言
你是否想在没有互联网的情况下,用 AI 直接操作 WPS 的 Word(.docx)和 Excel(.xls)文件?今天我们来实现一个本地部署的方案,使用 deepseek r1 模型和 OmniParser V2,通过 WPS 的图形界面(GUI)完成文件操作。别担心,即使你是编程小白,这篇文章会用简单语言一步步带你完成。
什么是我们要做的?
我们希望 AI 能像人一样“看”到 WPS 界面,然后根据指令(如“保存文件”)自动点击按钮或输入文字。整个过程不需要联网,全部在本地运行。关键工具包括:
- deepseek r1 模型:一个本地运行的 AI,能理解任务并生成操作指令。
- OmniParser V2:一个工具,用于解析 WPS 界面的截图,识别按钮和文本框。
- 辅助工具:截图工具 mss 和自动化工具 pyautogui。
令人惊讶的发现
你可能以为 OmniParser V2 是用来直接读取 .docx 或 .xls 文件内容,但其实它主要解析 GUI 截图。这意味着我们需要通过 WPS 的界面操作文件,而不是直接修改文件内容。这有点像让 AI“看”屏幕,然后“动手”操作。
准备工作
首先,确保你的电脑有 Python 环境。以下是需要的库:
- Transformers 和 PyTorch(用于加载 deepseek r1 模型)
- OmniParser V2(从 GitHub 克隆并安装)
- mss(截图)和 pyautogui(自动化)
安装方法:
pip install transformers torch omniparser mss pyautogui pillow
然后,从 Hugging Face 下载 deepseek r1 模型(推荐 1.5B 版本,适合普通电脑)。
步骤详解
我们分几步实现这个功能:
1. 部署 deepseek r1 模型
这是 AI 的“大脑”,负责理解任务并生成操作。代码如下:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
运行后,模型会加载到本地,准备好生成指令。
2. 截图 WPS 窗口
打开 WPS,加载你要操作的 .docx 或 .xls 文件。确保窗口位置固定(比如最大化),然后用 mss 截图:
import mss
from PIL import Image
with mss.mss() as sct:
monitor = sct.monitors[1] # 假设 WPS 在第二个显示器,调整为你的情况
screenshot = sct.grab(monitor)
screenshot_image = Image.frombytes('RGB', (monitor['width'], monitor['height']), screenshot.bgra, 'raw', 'BGRX')
screenshot_image.save('screen.png')
这会把 WPS 界面保存为 screen.png。
3. 解析 GUI 元素
用 OmniParser V2 分析截图,识别界面上的按钮和文本框:
from omniparser import OmniParser
parser = OmniParser()
parsed_results = parser.parse("screen.png")
parsed_results 是一个列表,包含每个 GUI 元素的描述(如“保存按钮”)和位置(如坐标范围)。
4. 生成操作指令
把任务和 GUI 信息输入 deepseek r1 模型,让它决定下一步操作。比如,任务是“保存文件”,输入可能是:
task = "Save the file"
gui_description = str(parsed_results)
input_text = f"Task: {task}. GUI description: {gui_description}"
inputs = tokenizer(input_text, return_tokens=True)
outputs = model.generate(**inputs, max_new_tokens=100)
generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
模型可能会输出类似“点击描述为‘保存’的元素”。
5. 执行操作
解析模型的输出,提取操作(如点击或输入),然后用 pyautogui 执行。例如:
import pyautogui
import time
actions = []
for line in generated_text.splitlines():
if "click on element with description" in line:
description = line.split("'")[1]
for element in parsed_results:
if element['description'] == description:
x = (element['x1'] + element['x2']) // 2
y = (element['y1'] + element['y2']) // 2
actions.append(("click", x, y))
break
elif "type" in line:
text = line.split("'")[1]
actions.append(("type", text))
for action in actions:
if action[0] == "click":
pyautogui.click(action[1], action[2])
time.sleep(1) # 等待应用响应
elif action[0] == "type":
pyautogui.typewrite(action[1])
time.sleep(1)
这里我们加了 1 秒延迟,确保操作顺序正确。
小白注意事项
- 窗口位置:确保 WPS 窗口固定位置,否则坐标会错乱。可以最大化窗口,减少变化。
- 模型输出:如果模型输出不正确,可以调整输入提示,比如告诉它“请按以下格式输出:点击描述为‘XXX’的元素”。
- 性能:deepseek r1 模型较大,建议用 1.5B 版本,电脑内存至少 8GB。
潜在问题与解决
- 坐标不准:如果点击错地方,检查 WPS 窗口是否移动,重新固定位置。
- 解析错误:OmniParser 可能识别不出某些元素,尝试调整截图清晰度或更新解析器。
- 任务复杂:如“保存为新文件”,可能需要模型生成多步操作,确保每步都有延迟
总结
通过以上步骤,你可以用本地 AI 和 OmniParser V2,通过 WPS 的 GUI 操作 .docx 和 .xls 文件,无需联网。适合小白操作,但记得先测试简单任务(如点击“文件”菜单),逐步复杂化。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐

所有评论(0)