GLM-OCR驱动智能Agent:自动阅读截图并执行操作
GLM-OCR驱动智能Agent自动阅读截图并执行操作你有没有想过如果电脑能自己“看”懂屏幕上的内容然后帮你完成那些重复、繁琐的点击和填写任务那该多省事比如每天都要登录一堆系统、填写格式固定的报表或者处理大量相似的客服工单。这些工作本身不复杂但就是耗时间还容易因为疲劳而出错。现在这个想法可以变成现实了。通过结合视觉识别和大模型的理解能力我们可以构建一个能“看懂”屏幕并“动手”操作的智能助手。今天我们就来聊聊如何用GLM-OCR技术打造一个能自动阅读截图并执行操作的智能Agent。它就像一个坐在你电脑前的虚拟员工看到按钮知道点哪里看到输入框知道填什么帮你把那些机械化的流程自动化。1. 场景与痛点为什么需要“会看”的Agent在办公自动化和流程处理中我们经常遇到一些基于图形界面GUI的重复任务。传统的自动化方案比如基于坐标的脚本或者一些RPA机器人流程自动化工具往往很“脆弱”。只要软件界面稍微改个版按钮位置挪动几个像素或者字体颜色变一下整个自动化流程就可能崩溃。这就是“刚性自动化”的痛点它无法适应变化缺乏真正的“理解”能力。一个理想的智能Agent应该像人一样先“看到”屏幕上的内容理解哪些是按钮、哪些是输入框、哪些是提示文字然后基于理解做出决策和操作。这样即使界面布局变了只要元素的文字标识没变Agent依然能正确工作。GLM-OCR在这里扮演的就是“眼睛”和“初级大脑”的角色。它负责从截图中提取出所有文字信息并将这些信息连同它们的位置交给更上层的“决策大脑”通常是一个大语言模型去分析和规划下一步动作。2. 核心组件构建智能Agent的三驾马车要打造这样一个Agent我们需要三个核心部分协同工作。2.1 眼睛GLM-OCR图像文字识别这是整个系统的感知层。它的任务是把一张屏幕截图转换成结构化的文字信息。这不仅仅是识别出“登录”两个字还要知道这两个字在图片的哪个区域坐标框。这样我们才能知道“登录”按钮在哪里。GLM-OCR在这方面表现不错特别是对中文场景下的各种字体、大小和背景的识别准确率很高。它能把截图里所有的文字块都找出来并告诉我们每个文字块的内容和位置。这一步的输出是一份屏幕内容的“文字地图”。2.2 大脑大语言模型决策规划拿到“文字地图”后就需要一个“大脑”来理解当前屏幕处于什么状态以及接下来该做什么。这就是大语言模型LLM的用武之地。我们把OCR识别出的所有文本以及用户下达的指令比如“帮我登录系统”一起交给LLM。LLM会像人一样阅读这些文本理解界面的构成哦这里有一个“用户名”输入框旁边是“密码”输入框下面是一个“登录”按钮。当前用户名的框里是空的。那么要完成登录指令我需要先输入用户名再输入密码最后点击登录。LLM会输出一个清晰的、步骤化的操作计划。2.3 双手自动化操作执行器计划有了就需要“手”来执行。这部分依赖于操作系统的自动化接口比如Python的pyautogui、pywinauto库或者更底层的Windows API、AppleScript等。执行器接收LLM规划出的具体操作如在坐标(x, y)处点击或在某个区域输入文本“admin”并调用相应的系统指令来模拟鼠标移动、点击、键盘输入等操作从而真正操控软件。3. 实战演练构建一个自动填写网页表单的Agent原型光说不练假把式。我们用一个具体的例子把上面的流程串起来让Agent自动打开一个登录页面并填写表单。假设我们有一个简单的登录页面上面有“用户名”、“密码”输入框和“登录”按钮。我们的目标是让Agent自动完成填写和登录。3.1 第一步环境准备与工具安装首先确保你的Python环境已经就绪。我们需要安装几个关键的库pip install pillow pyautogui opencv-python # 假设GLM-OCR有可用的Python SDK或API这里以安装相关客户端为例 # pip install glm-ocr-clientpillow用于图像处理。pyautogui用于模拟鼠标键盘操作。opencv-python有时用于更精确的图像定位本例中OCR提供坐标可暂不用。glm-ocr-client这里作为示例代表调用GLM-OCR服务的客户端。3.2 第二步让Agent“看见”屏幕我们写一个函数来捕获屏幕并调用OCR服务。这里我们模拟一个OCR识别的结果。import pyautogui import json from PIL import ImageGrab import time def capture_and_ocr(): 捕获全屏并调用OCR识别此处为模拟数据 # 1. 截取全屏 screenshot ImageGrab.grab() screenshot.save(current_screen.png) print(屏幕截图已保存。) # 2. 模拟调用GLM-OCR并返回结果 # 实际应用中这里应该是调用GLM-OCR的API上传图片获取JSON响应 # response glm_ocr_client.analyze(current_screen.png) # ocr_result response[data] # 3. 为了演示我们手动模拟一个OCR识别结果 # 每个元素包括文本内容(text)和边界框坐标(bbox: [左上x, 左上y, 右下x, 右下y]) mock_ocr_data { text_blocks: [ {text: 用户名, bbox: [200, 300, 280, 320]}, {text: 密码, bbox: [200, 350, 240, 370]}, {text: 登录, bbox: [300, 400, 350, 430]}, {text: 欢迎使用测试系统, bbox: [250, 150, 450, 180]} ] } print(OCR识别完成。) return mock_ocr_data # 测试截图与OCR screen_data capture_and_ocr() print(json.dumps(screen_data, indent2, ensure_asciiFalse))运行这段代码它会保存当前屏幕的截图并打印出模拟的OCR识别结果。这个结果列出了屏幕上识别到的所有文字块及其位置。3.3 第三步让Agent“思考”决策接下来我们需要一个“大脑”。这里我们使用大语言模型的API例如GLM大模型来分析OCR结果。由于直接调用API需要密钥我们在代码中模拟其决策过程。核心思路是将用户指令和屏幕文本信息组合成一个提示词Prompt送给LLM让它输出一个JSON格式的操作序列。def plan_actions_with_llm(ocr_data, user_command登录系统): 基于OCR结果和用户指令规划操作步骤此处为逻辑模拟 # 将OCR数据转换成纯文本描述供LLM理解 screen_description 当前屏幕识别到以下文本元素\n for block in ocr_data[text_blocks]: screen_description f- 文本{block[text]} 大致位置{block[bbox]}\n # 构建给LLM的提示词实际调用时发送此提示词 prompt f 你是一个自动化助手。请根据当前屏幕信息和用户指令规划出具体的鼠标键盘操作序列。 {screen_description} 用户指令{user_command} 已知用户名是“admin”密码是“123456”。 请输出一个JSON数组每个元素是一个操作对象。操作类型包括 1. click: 点击。需要字段type: click, text: 目标按钮的文本用于定位。 2. type: 输入文本。需要字段type: type, text: 要输入的内容。 3. press: 按键。需要字段type: press, key: 键名如 enter。 请只输出JSON不要有其他内容。 print(提示词已构建发送给LLM...) # 模拟LLM的响应实际应调用API获取 llm_response [ {type: type, text: admin}, {type: press, key: tab}, {type: type, text: 123456}, {type: click, text: 登录} ] import json action_plan json.loads(llm_response) return action_plan # 测试决策规划 action_plan plan_actions_with_llm(screen_data) print(生成的行动计划) print(json.dumps(action_plan, indent2))这个模拟的LLM返回了一个清晰的计划先输入“admin”按Tab键切换到密码框输入密码最后点击“登录”按钮。3.4 第四步让Agent“动手”执行最后我们需要一个执行器来把文字计划变成真实的操作。这里的关键是如何根据OCR识别出的“文本”找到对应的“坐标”来操作。def execute_actions(ocr_data, action_plan): 根据OCR数据定位元素并执行行动计划 # 创建一个从文本到坐标的映射字典简单匹配实际应用需更鲁棒如模糊匹配 text_to_bbox {block[text]: block[bbox] for block in ocr_data[text_blocks]} for action in action_plan: action_type action[type] print(f执行操作{action}) if action_type click: target_text action[text] if target_text in text_to_bbox: bbox text_to_bbox[target_text] # 计算按钮中心点坐标 center_x (bbox[0] bbox[2]) // 2 center_y (bbox[1] bbox[3]) // 2 pyautogui.click(center_x, center_y) print(f 点击了 {target_text} 在 ({center_x}, {center_y})) time.sleep(0.5) # 操作间稍作停顿 else: print(f 警告未在屏幕上找到文本 {target_text}) elif action_type type: pyautogui.write(action[text]) print(f 输入了文本{action[text]}) time.sleep(0.2) elif action_type press: pyautogui.press(action[key]) print(f 按下了键{action[key]}) time.sleep(0.2) print(所有操作执行完毕) # 执行行动计划注意在实际运行前请确保鼠标光标位置安全 # execute_actions(screen_data, action_plan) print(【安全提示】执行代码已注释。在实际运行前请确保测试环境安全并手动确认坐标。)重要安全提示在真正运行自动化脚本之前务必在测试环境如虚拟机或无关紧要的测试页面中进行。错误的坐标可能导致意料之外的操作。上述代码中的执行行已被注释请谨慎启用。4. 扩展思考让智能Agent更强大上面的原型展示了最基础的“看-想-做”闭环。要让这个Agent真正实用还需要考虑更多更鲁棒的定位OCR的文本匹配可能不准比如“登陸”和“登录”需要模糊匹配或结合图像特征。处理复杂交互下拉框、复选框、右键菜单、拖拽等复杂操作。状态判断与异常处理操作后屏幕状态是否如预期登录失败怎么办需要让Agent具备验证和重试的能力。记忆与学习Agent可以记住成功操作的路径下次遇到类似界面时更快决策。与工作流结合将单个的Agent封装成节点嵌入到更大的自动化工作流中处理多步骤、跨应用的复杂业务。5. 总结通过GLM-OCR与大语言模型的结合我们让电脑程序第一次拥有了接近人类的“视觉理解”能力来处理GUI任务。它不再依赖死板的坐标而是通过“阅读”屏幕来适应变化这为自动化打开了新的大门。从自动填表、数据录入到软件测试、日常办公辅助甚至是游戏内的自动任务这种模式的潜力很大。当然目前这还是一个需要不断打磨的原型在精度、速度和可靠性上还有很长的路要走。但它的方向是令人兴奋的未来那些我们不愿做的重复性电脑操作也许真的可以交给一个善解人意的智能助手去完成。如果你对某个具体场景的自动化有想法不妨基于这个框架尝试搭建起来看看它能为你带来多少效率提升。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

相关新闻

Java SpringBoot+Vue3+MyBatis 笔记记录分享网站系统源码|前后端分离+MySQL数据库

Java SpringBoot+Vue3+MyBatis 笔记记录分享网站系统源码|前后端分离+MySQL数据库

💡实话实说:CSDN上做毕设辅导的都是专业技术服务,大家都要生活,这个很正常。我和其他人不同的是,我有自己的项目库存,不需要找别人拿货再加价。我就是个在校研究生,兼职赚点饭钱贴补生活费&…

2026/7/6 16:45:51 阅读更多 →
解决MPV播放器配置难题的懒人方案:5分钟打造专业级播放体验

解决MPV播放器配置难题的懒人方案:5分钟打造专业级播放体验

解决MPV播放器配置难题的懒人方案:5分钟打造专业级播放体验 【免费下载链接】mpv_PlayKit 🔄 mpv player 播放器折腾记录 windows conf ; 中文注释配置 快速帮助入门 ; mpv-lazy 懒人包 win10 x64 config 项目地址: https://git…

2026/7/5 18:56:02 阅读更多 →
开源音频解密工具Unlock Music:打破格式壁垒的本地解决方案

开源音频解密工具Unlock Music:打破格式壁垒的本地解决方案

开源音频解密工具Unlock Music:打破格式壁垒的本地解决方案 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: …

2026/5/17 10:11:13 阅读更多 →

最新新闻

构建弹性FastDFS文件存储系统:从超时容错到全链路治理的架构演进

构建弹性FastDFS文件存储系统:从超时容错到全链路治理的架构演进

构建弹性FastDFS文件存储系统:从超时容错到全链路治理的架构演进 【免费下载链接】fastdfs FastDFS is a high performance distributed file system (DFS). Its major functions include: file storing, file syncing and file accessing, and design for high cap…

2026/7/6 21:10:05 阅读更多 →
Hugo Blog Awesome RSS Feed配置:让读者随时订阅你的内容

Hugo Blog Awesome RSS Feed配置:让读者随时订阅你的内容

Hugo Blog Awesome RSS Feed配置:让读者随时订阅你的内容 【免费下载链接】hugo-blog-awesome Fast, minimal blog with dark mode support. 项目地址: https://gitcode.com/gh_mirrors/hu/hugo-blog-awesome Hugo Blog Awesome是一款支持暗色模式的快速极简…

2026/7/6 21:10:05 阅读更多 →
企业级React组件库架构设计:如何通过开放代码模式解决前端组件复用难题

企业级React组件库架构设计:如何通过开放代码模式解决前端组件复用难题

企业级React组件库架构设计:如何通过开放代码模式解决前端组件复用难题 【免费下载链接】ui A set of beautifully-designed, accessible components and a code distribution platform. Works with your favorite frameworks. Open Source. Open Code. 项目地址:…

2026/7/6 21:08:01 阅读更多 →
zgrab输出数据解析:JSON格式与网络情报提取指南

zgrab输出数据解析:JSON格式与网络情报提取指南

zgrab输出数据解析:JSON格式与网络情报提取指南 【免费下载链接】zgrab **DEPRECATED** This project has been replaced by https://github.com/zmap/zgrab2 项目地址: https://gitcode.com/gh_mirrors/zg/zgrab zgrab是一款功能强大的网络扫描工具&#xf…

2026/7/6 21:03:58 阅读更多 →
5个实战场景深度解析:如何高效使用动态网格组件

5个实战场景深度解析:如何高效使用动态网格组件

5个实战场景深度解析:如何高效使用动态网格组件 【免费下载链接】RealtimeMeshComponent Unreal Engine 5 plugin component for rendering runtime generated content. 项目地址: https://gitcode.com/gh_mirrors/re/RealtimeMeshComponent RealtimeMeshCom…

2026/7/6 21:01:56 阅读更多 →
专业级FOC电机控制:开源平衡车固件架构深度解析

专业级FOC电机控制:开源平衡车固件架构深度解析

专业级FOC电机控制:开源平衡车固件架构深度解析 【免费下载链接】hoverboard-firmware-hack-FOC With Field Oriented Control (FOC) 项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC hoverboard-firmware-hack-FOC是一款基…

2026/7/6 21:01:56 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻