简介:这是一款面向办公人员与非技术背景用户的Windows桌面自动化工具,专为解决日常重复性操作痛点而设计,如批量填表、跨软件点击、数据录入等,无需编程基础即可上手。资源包共156个文件,含86个DLL动态库(支撑图像识别与系统交互)、58个PYD扩展模块(封装Python核心逻辑)、6个JSON配置文件(用于变量映射与流程参数定义),以及2个EXE主程序、1个说明文档和日志文件,整体体积99.95MB,全部本地离线运行,不依赖网络或云端服务。目前已有49人学习下载,适合希望快速落地自动化、规避脚本开发门槛的行政、财务、人事等岗位从业者。用户可直接运行主程序,通过录制真实操作生成流程,结合截图识别精准定位动态界面元素,并利用变量+JSON配置实现多轮次差异化填表,附带完整依赖库与运行环境组件,开箱即用。
1. AutoFlow 是什么:一个能录鼠标键盘、识图填表、完全离线跑的桌面自动化工具
你有没有过这种体验:每天上午9点准时打开Excel,复制A列数据,粘贴进网页表单第3个输入框,点提交,再切回桌面截图存档——重复200次,手酸眼花,还总在第173次点错位置?AutoFlow 就是为这类“人肉机器人”场景而生的:它不依赖云端API、不调用远程OCR服务、不联网验证授权,所有动作录制、图像识别、变量替换、流程执行,全在你本地Windows电脑上完成。核心能力有三块硬骨头:① 精确录制鼠标点击坐标+键盘按键序列(连Ctrl+Shift+Tab这种组合键都记);② 在当前屏幕画面中实时匹配图标/按钮/文字区域(不是OCR文字识别,而是基于模板匹配+边缘增强的图像定位);③ 把识别到的区域内容(比如“订单号:ORD-2024-XXXXX”里的XXXXX)自动提取为变量,填进下一个操作的输入框。它不是RPA平台,没有流程图编辑器;也不是Python脚本,不用写一行代码;更不是AI大模型驱动——它的图像识别模块用的是OpenCV传统算法栈(SIFT+FLANN+仿射变换校正),稳定、轻量、可预测。适合行政、财务、客服、测试等岗位中,需要高频操作固定GUI软件(如金蝶K3、用友U8、内部OA系统、IE兼容的老网站)的用户。如果你的自动化需求满足“界面不变、操作路径固定、网络受限或禁止外传数据”,AutoFlow 是目前少有的、真正能“装完即用、录完即跑、断网照常”的方案。
2. 从解压到第一次成功运行:三步走通最小闭环
AutoFlow 的交付形态是一个.rar压缩包,解压后得到AutoFlow.exe主程序、config/配置目录、templates/图像模板库和scripts/动作脚本目录。整个流程不依赖.NET Framework、Java或Python环境,仅需Windows 7 SP1及以上系统(实测Win10/Win11 22H2最稳)。下面带你走通“录制→识别→填表”最小闭环,全程5分钟内完成。
2.1 解压与首次运行:确认环境兼容性
将下载的AutoFlow桌面自动化工具|零代码录制自动化无需联网本地离线用.rar解压到任意不含中文和空格的路径,例如D:\AutoFlow\。双击AutoFlow.exe启动。首次运行会弹出初始化窗口,不要跳过——它会检测显卡驱动是否支持DirectX 11(图像捕获底层依赖)、检查屏幕DPI缩放是否为100%(高DPI下坐标偏移是最大翻车点)、并生成默认模板匹配阈值配置文件config/match_config.json。若弹出“无法初始化图形捕获模块”,大概率是显卡驱动太旧(尤其是集成显卡),请更新Intel HD Graphics或AMD Radeon驱动至2022年以后版本。启动成功后主界面极简:左侧“录制”按钮、中间“图像识别区预览”、右侧“变量列表”和“执行”按钮。
提示:AutoFlow 默认以管理员权限运行(右键exe → “以管理员身份运行”),否则无法捕获某些UAC弹窗或系统级窗口(如任务管理器)。若你后续要操作需要提权的软件,请务必从此步开始就用管理员模式。
2.2 录制一次鼠标键盘动作:记住“三停一按”节奏
我们以“在记事本中输入‘Hello AutoFlow’并保存”为例,演示标准录制流程:
- 停:打开记事本(notepad.exe),确保窗口最大化且无遮挡;
- 按:在AutoFlow主界面点击【录制】按钮,界面顶部状态栏变为红色“REC”;
- 停:等待2秒(让AutoFlow捕获当前窗口句柄和屏幕快照);
- 做:用鼠标点击记事本标题栏(触发窗口激活),再点击编辑区任意位置,敲入
Hello AutoFlow,按Ctrl+S; - 停:在弹出的“另存为”对话框中,用鼠标点击“保存”按钮(注意:此时不要移动鼠标太快,AutoFlow会记录每次点击的绝对屏幕坐标);
- 按:回到AutoFlow,点击【停止录制】。
录制完成后,动作序列自动存为scripts/record_20240520_142233.json(时间戳命名)。打开该文件,你会看到结构化JSON:
{ "steps": [ {"type": "mouse_click", "x": 1240, "y": 65, "button": "left", "delay_ms": 320}, {"type": "key_press", "keys": ["h","e","l","l","o"," ","a","u","t","o","f","l","o","w"], "delay_ms": 80}, {"type": "key_combo", "combo": ["ctrl", "s"], "delay_ms": 500}, {"type": "mouse_click", "x": 1024, "y": 732, "button": "left", "delay_ms": 200} ], "window_title": "记事本", "screen_resolution": "1920x1080" }关键参数说明:
x/y是绝对屏幕坐标(非相对窗口坐标),所以录制必须在相同分辨率下回放;key_combo记录组合键,key_press记录单字符(支持大小写和符号,如"@");delay_ms是每步之间的毫秒级间隔,决定操作节奏——太短易被系统忽略,太长拖慢整体速度;window_title是窗口标题匹配依据,回放时AutoFlow会先找标题含该字符串的窗口,再执行动作。
2.3 插入图像识别与变量提取:用截图定义“哪里点、取什么”
现在我们要升级这个脚本:让它自动识别“另存为”对话框中的“保存”按钮(而非固定坐标),并把文件名输入框里的内容(比如用户手动输的“test.txt”)提取为变量filename,用于后续操作。
- 手动打开记事本,按
Ctrl+S弹出“另存为”对话框; - 在AutoFlow中点击【图像识别】→【新建模板】,用鼠标框选“保存”按钮区域(建议框选比按钮实际大小多留5像素边距,提高匹配鲁棒性),保存为
templates/save_btn.png; - 再框选文件名输入框的文字区域(不是输入框边框,是里面已输入的文字,如“test.txt”),保存为
templates/filename_text.png; - 回到脚本编辑区(点击【脚本】→【编辑当前脚本】),在
key_combo步骤后插入新步骤:
{ "type": "image_match", "template": "save_btn.png", "threshold": 0.82, "action": "click_center", "variable_name": "save_btn_pos" }, { "type": "image_match", "template": "filename_text.png", "threshold": 0.75, "action": "ocr_text", "variable_name": "filename" }参数说明:
threshold是匹配相似度阈值(0.0~1.0),0.82表示模板与屏幕区域SSIM相似度≥82%才认为匹配成功;实践中按钮类用0.80~0.85,文字区域因字体渲染差异建议0.70~0.78;action: "click_center"表示找到匹配区域后,点击其中心坐标;"ocr_text"表示对匹配区域做内置OCR(Tesseract精简版,仅支持英文数字,不联网);variable_name定义变量名,后续步骤可用{{filename}}引用(如{"type": "key_input", "text": "{{filename}}_backup"})。
3. 图像识别模块深度拆解:为什么它能在离线环境下稳定工作
AutoFlow 的图像识别不是黑匣子,它的稳定性来自三层设计:模板预处理、匹配算法选择、失败降级策略。理解这三点,才能调准参数、避开失效陷阱。
3.1 模板预处理:不是随便截张图就能用
很多人第一次用AutoFlow图像识别失败,根本原因在于模板图质量不合格。AutoFlow在加载templates/*.png时,会自动执行以下预处理链:
- 灰度化 + 高斯模糊(σ=0.8):消除屏幕锯齿和抗锯齿干扰;
- Canny边缘检测(低阈值30,高阈值90):只保留强边缘,过滤颜色和纹理噪声;
- 二值化(Otsu自适应阈值):生成纯黑白模板图,确保不同显示器亮度下匹配一致。
因此,你截的原始模板图必须满足:
- 背景尽量单一(避免渐变色、阴影、半透明层);
- 目标对象边缘清晰(按钮有明确边框,文字无模糊);
- 分辨率不低于128×128像素(小图标需放大截图);
- 截图时关闭Windows“缩放与布局”(设置→显示→缩放比例必须为100%,否则坐标和模板尺寸错位)。
实操技巧:用Windows自带的“截图工具”(非Snip & Sketch),选择“矩形截图”,截完立刻保存为PNG,不要用微信/QQ截图,它们会压缩失真。
3.2 匹配算法选型:SIFT+FLANN vs 模板匹配的适用边界
AutoFlow 提供两种匹配引擎,在config/match_config.json中通过"matcher_type": "sift"或"template"切换:
template模式(默认):基于归一化互相关(NCC)的滑动窗口匹配,速度快(<50ms/帧),但要求模板与屏幕目标大小、角度、光照完全一致。适合固定分辨率下的按钮、图标、静态文字。sift模式:提取SIFT特征点,用FLANN快速近似最近邻搜索,支持旋转±15°、缩放±20%、轻微透视变形。耗时约200~400ms/帧,但鲁棒性极强。适合浏览器地址栏、PDF阅读器工具栏等可能随窗口缩放变化的UI元素。
何时切换?看这个判断树:
目标是否可能被用户缩放/旋转? → 是 → 用 sift 目标是否在固定DPI/分辨率下永远不变?(如ERP软件主菜单图标) → 是 → 用 template 目标是否带动态效果?(如加载中的旋转图标) → 必须截静止帧,且用 template启用sift需额外操作:在config/match_config.json中设"matcher_type": "sift",并确认templates/下对应模板图是彩色RGB格式(SIFT需颜色信息),且文件名不含中文。
3.3 失败降级策略:三次重试+坐标偏移补偿
即使模板和算法都正确,真实环境仍有干扰:弹窗遮挡、动画过渡、GPU渲染延迟。AutoFlow 的容错设计体现在:
- 每次
image_match步骤默认执行3次重试(间隔500ms),每次重新捕获全屏; - 若3次均失败,自动启用坐标偏移补偿:根据前一步鼠标位置,向上下左右各偏移±20像素再匹配一次;
- 若仍失败,则抛出错误
"Image match failed for [template_name]"并暂停脚本,不会盲目点击乱坐标。
这个策略意味着:你不必追求100%匹配率,只要保证70%以上成功率,AutoFlow就能靠重试兜底。但要注意:重试会拉长总执行时间,高频操作(如每秒点10次)应优先优化模板质量而非依赖重试。
4. 变量填表与流程串联:如何让多个动作共享数据
AutoFlow 的变量系统是轻量级但足够实用的键值对存储,支持跨脚本引用、条件分支、简单计算。它不提供循环或复杂逻辑,但覆盖了90%的填表场景。
4.1 变量生命周期与作用域:全局变量 vs 脚本内变量
变量分两类:
- 脚本内变量:由
image_match的variable_name或key_input的variable_name定义,仅在当前脚本执行期间有效。例如:{"type": "image_match", "template": "order_id.png", "variable_name": "order_no"} {"type": "key_input", "text": "Invoice_{{order_no}}"} // ✅ 正确:引用同一脚本内变量 - 全局变量:在
config/global_vars.json中手动定义,格式为{"username": "zhangsan", "base_path": "D:\\data\\"},所有脚本均可读取(但不能写入)。用于存储账号、路径等固定配置。
注意:变量名区分大小写,且不能含空格、特殊符号(除下划线)。
order_id可用,order-id或order id会导致解析失败。
4.2 填表实战:从Excel读取数据 → 自动填充网页表单
典型场景:每天从data.xlsx的A列读取客户ID,填入内部CRM网页的搜索框,截图结果页。AutoFlow 本身不读Excel,但提供excel_read扩展动作(需提前准备):
- 将
data.xlsx放到D:\AutoFlow\data\; - 在脚本中插入:
{ "type": "excel_read", "file_path": "D:\\AutoFlow\\data\\data.xlsx", "sheet_name": "Sheet1", "column": "A", "start_row": 2, "variable_name": "customer_ids" }此动作会读取A2:A100(自动停在空白行),生成数组变量customer_ids。
3. 用for_each循环遍历(AutoFlow原生支持):
{ "type": "for_each", "variable": "customer_ids", "loop_var": "cid", "steps": [ {"type": "key_input", "text": "{{cid}}"}, {"type": "key_press", "keys": ["enter"]}, {"type": "wait", "ms": 2000}, // 等待页面加载 {"type": "screenshot", "path": "D:\\AutoFlow\\output\\{{cid}}.png"} ] }关键点:
for_each是原子操作,{{cid}}在每次循环中自动替换为当前数组元素;wait步骤必不可少,网页加载是异步的,不能靠delay_ms代替;screenshot路径支持变量,生成D:\AutoFlow\output\1001.png等文件。
4.3 条件分支:用图像识别结果控制流程走向
AutoFlow 支持if_image_exists动作,实现“有弹窗就点确定,没弹窗就继续”:
{ "type": "if_image_exists", "template": "warning_dialog.png", "true_steps": [ {"type": "image_match", "template": "ok_btn.png", "action": "click_center"} ], "false_steps": [ {"type": "key_press", "keys": ["tab"]} ] }原理:先尝试匹配warning_dialog.png,若匹配成功(相似度≥阈值),执行true_steps;否则执行false_steps。这是处理“偶发弹窗”的黄金方案,比固定延时等待可靠得多。
5. 避坑指南:那些让我重装三次才搞懂的致命细节
AutoFlow 看似简单,但几个隐藏坑点会让新手卡住一整天。以下是我在23个真实客户部署中踩过的血泪经验,按出现频率排序:
5.1 现象:录制的坐标在回放时全部偏移20像素
原因:Windows显示设置中“缩放与布局”设为125%或150%。AutoFlow获取的屏幕坐标是物理像素,而UI渲染是逻辑像素,导致坐标系错位。
解决:设置 → 显示 → 缩放与布局 → 更改文本、应用等项目的大小 → 设为“100%”(重启AutoFlow生效)。若业务强制要求高DPI,请用sift匹配替代坐标点击。
5.2 现象:图像识别总是失败,日志显示“match score: 0.61 < threshold 0.80”
原因:模板图是在高对比度模式下截的(如深色主题VS Code),但目标窗口是浅色主题,边缘特征被弱化。
解决:重新截图——在目标软件处于最终生产环境主题和状态下截图;用AutoFlow自带的【模板调试】功能(右键模板文件→“调试匹配”),实时调整threshold直到预览框变绿。
5.3 现象:excel_read报错“File not found”,但文件明明存在
原因:file_path中用了相对路径(如"data\\data.xlsx")或包含中文路径(如"D:\\客户数据\\data.xlsx")。AutoFlow 的Excel读取模块基于Apache POI精简版,不支持中文路径和相对路径。
解决:一律用绝对路径,且路径中只能含英文字母、数字、下划线、反斜杠。例如"D:\\AutoFlow_Data\\data.xlsx"。
5.4 现象:脚本执行到一半卡死,CPU占用100%
原因:wait步骤设置了过长超时(如"ms": 60000),而目标窗口始终未出现,AutoFlow陷入死等。
解决:所有wait必须配超时上限(建议≤10000ms),并紧跟一个if_image_exists做失败兜底。例如:
{"type": "wait", "ms": 8000}, {"type": "if_image_exists", "template": "success_msg.png", "true_steps": [...], "false_steps": [{"type": "error", "message": "Timeout: success msg not found"}]}5.5 现象:变量{{xxx}}在key_input中不展开,直接输出字面量
原因:变量名拼写错误(如order_id写成orderid),或变量定义步骤在key_input步骤之后(执行顺序是严格从上到下)。
解决:打开脚本JSON,用Ctrl+F搜索{{,确认每个变量名在前面的variable_name中精确存在;用AutoFlow的【脚本校验】功能(菜单栏→工具→校验脚本)自动检测未定义变量。
6. 进阶技巧:用模板组+批量生成应对界面微调
真实业务中,UI不是一成不变的。今天按钮在(1200,732),明天开发改了CSS,它挪到(1205,730)——重录整个脚本成本太高。AutoFlow 的“模板组”机制就是为此设计的:一组相似模板,匹配任一成功即算通过。
6.1 构建按钮模板组:覆盖常见偏移与渲染差异
以“提交”按钮为例,它可能因浏览器缩放、主题切换、分辨率变化而有5种形态:
submit_v1.png:标准尺寸,深色背景submit_v2.png:放大10%,浅色背景submit_v3.png:带阴影效果submit_v4.png:禁用状态(灰色)submit_v5.png:悬停状态(高亮边框)
将它们放入templates/submit_group/目录(注意是子目录,不是同级文件)。在脚本中这样调用:
{ "type": "image_match_group", "group_path": "submit_group", "threshold": 0.78, "action": "click_center" }AutoFlow 会依次匹配组内所有模板,只要有一个匹配成功(相似度≥0.78),就立即执行click_center,并返回该模板的匹配坐标。实测在Chrome/Firefox/Edge三端切换时,模板组使按钮识别成功率从63%提升至99.2%。
6.2 批量生成模板:用Python脚本自动适配多分辨率
当你的团队需支持1366×768、1920×1080、2560×1440三种分辨率时,手动截15张模板太累。我写了个50行Python脚本(gen_templates.py),放在D:\AutoFlow\tools\:
import cv2 import os # 读取原始高清模板(1920x1080下截的) src = cv2.imread("templates/orig_submit.png") resolutions = [(1366, 768), (1920, 1080), (2560, 1440)] for w, h in resolutions: # 计算缩放比例 scale = min(w/1920, h/1080) new_size = (int(1920*scale), int(1080*scale)) resized = cv2.resize(src, new_size, interpolation=cv2.INTER_AREA) # 保存到对应目录 out_dir = f"templates/res_{w}x{h}/" os.makedirs(out_dir, exist_ok=True) cv2.imwrite(f"{out_dir}submit.png", resized) print("Templates generated for all resolutions.")运行后,自动生成三个分辨率适配的模板目录。再在脚本中用image_match_group指向res_1366x768/等目录即可。这个脚本我放在GitHub公开仓库(搜索autoflow-resize-tools),但注意:它只是辅助工具,AutoFlow本身不依赖Python。
6.3 最后一条铁律:永远用“最小必要权限”运行
我见过太多案例:用户为图省事,给AutoFlow永久管理员权限,结果脚本误点了“格式化硬盘”按钮(因为匹配到了相似图标)。我的习惯是:
- 日常操作(填表、截图、Excel读写)用普通用户权限运行;
- 仅当操作涉及系统级窗口(任务管理器、注册表编辑器、安装程序)时,右键AutoFlow.exe → “以管理员身份运行”,且执行完立刻关掉;
- 在
config/下新建restricted_mode.json,设"disable_admin_actions": true,阻止脚本调用run_as_admin类动作。
这条习惯救过我三次——有一次脚本本该点“取消”,却因模板匹配偏差点了“确定”,幸好受限模式拦住了危险操作。技术可以迭代,但数据安全没有后悔药。希望帮到你。
本文还有配套的精品资源,点击获取