RPA+AI Agent本地部署与EXE打包实战:电商数据汇总/智能客服/发票归档的踩坑记录与Python代码 去年8月我们团队3人每天花在数据搬运上的时间超过6小时。最崩溃的一次同事连续3天做同一个汇总第三天发现数据错位整个表全废。试了一圈方案最后落地了4个RPAAI Agent场景。这篇不是教程是踩坑记录——哪些能跑通、哪些翻了车、真实的技术选型逻辑是什么。一、电商多店铺数据自动汇总1.1 业务痛点5个平台淘宝、京东、拼多多、抖音、小红书每天运营要分别登录后台下载订单、推广、库存数据再贴到汇总表。一个平台3分钟5个平台理论15分钟实际40分钟以上。字段名不统一、日期格式各异人工对齐极易出错。1.2 技术方案第一层RPA自动抓取指纹浏览器隔离环境紫鸟、比特、HubStudio每个店铺独立Cookie和指纹RPA按日期筛选、下载报表、保存到本地指定文件夹通过模拟鼠标键盘操作实现降低平台风控概率第二层AI Agent数据清洗不同平台字段映射关系平台金额字段名日期格式淘宝实付金额2025/6/8京东订单金额2025-06-08拼多多支付金额2025.06.08接入DeepSeek大模型提示词核心逻辑prompt 你是一个数据清洗助手。请将以下各平台原始数据按统一格式处理 1. 金额字段统一映射为实付金额 2. 日期统一转为YYYY-MM-DD格式 3. 缺失值标红异常值如金额为负单独列出 原始数据 {raw_data} 第三层自动生成报表清洗后的数据写入Excel调用openpyxl生成趋势图。定时任务每天早上9点触发完成后邮件推送。from openpyxl import Workbook from openpyxl.chart import LineChart, Reference def generate_report(cleaned_data, output_path): wb Workbook() ws wb.active ws.title 汇总报表 # 写入数据 for row in cleaned_data: ws.append(row) # 生成趋势图 chart LineChart() chart.title 近7日销售趋势 data Reference(ws, min_col2, min_row1, max_rowlen(cleaned_data)) chart.add_data(data, titles_from_dataTrue) ws.add_chart(chart, E2) wb.save(output_path)1.3 踩坑记录坑1云端RPA IP漂移触发风控某云RPA的IP池不固定平台后台触发异地登录验证流程中断。换成纯本地运行的RPA方案后解决——流程在本地执行IP固定数据不上传任何第三方服务器。坑2大模型幻觉导致金额错误早期直接用LLM做计算偶尔出现199.9200399.80000000000007这类浮点问题。后来改为LLM只做字段映射和格式标准化数值计算用Python处理。坑3指纹浏览器兼容性问题HubStudio 3.2.1版本更新后RPA定位不到元素回退到3.1.8解决。解决方式是锁定浏览器版本关闭自动更新。1.4 效果与部署指标优化前优化后耗时40分钟/天全自动错误率每月3-4次0次部署方式本机脚本打包EXE分发同事双击运行部署方式上最终选择了支持EXE打包的本地RPA方案。同事不需要安装任何环境接收文件后双击即可执行这对非技术同事推广使用很关键。二、智能客服自动回复知识库驱动2.1 业务痛点工业配件咨询问题高度重复库存、价格、发货时效分散在网页客服、钉钉、企业微信三个渠道。人工客服月薪5000大部分时间复制粘贴。2.2 技术方案知识库构建用Markdown格式整理产品信息AI Agent回复流程from sentence_transformers import SentenceTransformer import numpy as np # 加载向量模型本地运行无需联网 model SentenceTransformer(paraphrase-multilingual-MiniLM-L12-v2) def retrieve_knowledge(query, knowledge_base, top_k3): # 将知识库分段编码 passages [k[content] for k in knowledge_base] passage_embeddings model.encode(passages) # 查询编码 query_embedding model.encode([query]) # 计算相似度 similarities np.dot(query_embedding, passage_embeddings.T)[0] top_indices np.argsort(similarities)[-top_k:][::-1] return [knowledge_base[i] for i in top_indices] def generate_reply(query, knowledge_base): relevant_docs retrieve_knowledge(query, knowledge_base) context \n.join([doc[content] for doc in relevant_docs]) prompt f 基于以下产品信息回答客户问题。要求自然语言非固定模板。 产品信息 {context} 客户问题{query} # 调用本地或自申请API return call_llm(prompt)回调通知Agent回复后自动推送对话摘要到钉钉群def send_notification(dingtalk_webhook, summary): import requests payload { msgtype: text, text: {content: f[客服Agent] {summary}} } requests.post(dingtalk_webhook, jsonpayload)2.3 踩坑记录坑1知识库更新滞后价格变动后Agent仍报旧价。解决知识库文件设为每日自动同步Agent每次回复前强制重新加载。坑2多轮对话上下文丢失客户问多少钱再问那B型号呢AI把B型号当成A型号报价。解决引入对话记忆最近3轮用Redis缓存。坑3渠道适配成本高三个渠道的消息格式和发送方式不同。解决抽象统一的消息接口层各渠道单独实现适配器。2.4 效果80%常见问题自动回复复杂问题自动标记需人工转接对应同事回复速度从平均5分钟→秒级三、合同发票自动归档OCRAI校验3.1 业务痛点月底财务处理几十张发票、合同邮箱下载PDF→打开→提取金额、税号、日期→重命名→分类存储→录入财务系统单张5-8分钟月底加班常态人工重命名易出错如把5000写成500003.2 技术方案[邮箱] → [RPA定时扫描] → [下载PDF] → [OCR识别] → [AI校验] → [自动归档] → [录入财务系统]OCR识别用pdfplumberTesseract提取PDF文字关键字段正则匹配import re import pdfplumber def extract_invoice_info(pdf_path): with pdfplumber.open(pdf_path) as pdf: text \n.join([page.extract_text() or for page in pdf.pages]) # 金额匹配支持金额5000、合计5000等格式 amount re.search(r(?:金额|合计|小写)[^\d]*(\d{1,3}(?:,\d{3})*\.\d{2}), text) # 税号匹配 tax_id re.search(r[A-Z0-9]{15,20}, text) # 日期匹配 date re.search(r\d{4}[年/-]\d{1,2}[月/-]\d{1,2}[日]?, text) return { amount: amount.group(1).replace(,, ) if amount else None, tax_id: tax_id.group(0) if tax_id else None, date: date.group(0) if date else None, raw_text: text[:500] # 保留原始文本用于校验 }AI校验层接入大模型做合理性检查def validate_with_llm(extracted_info): prompt f 请校验以下发票信息是否合理 - 金额是否为数字且大于0 - 日期格式是否正确 - 税号长度是否为15-20位 如有异常标注具体问题。 提取信息 {json.dumps(extracted_info, ensure_asciiFalse)} result call_llm(prompt) if 异常 in result: return False, result return True, 校验通过自动归档按规则重命名{日期}-{供应商}-{金额}.pdf分类存储/发票/2025/06/import os from datetime import datetime def archive_invoice(pdf_path, info, base_dir/发票): # 解析日期 date_str info[date] or datetime.now().strftime(%Y%m%d) year, month date_str[:4], date_str[4:6] if len(date_str) 8 else date_str[5:7] # 构建路径 target_dir os.path.join(base_dir, year, month) os.makedirs(target_dir, exist_okTrue) # 重命名 new_name f{date_str}-{info.get(supplier, 未知)}-{info[amount]}.pdf target_path os.path.join(target_dir, new_name) os.rename(pdf_path, target_path) return target_path3.3 踩坑记录坑1扫描件PDF无法提取文字pdfplumber 0.11.0版本在Windows下提取扫描件会报PDFObjRef错误。解决先用Tesseract OCR再用LLM做二次校正。坑2金额单位混淆有的发票金额单位是元有的是万元。AI校验层加入单位推断逻辑。坑3财务系统字段变更ERP升级后字段名变了RPA脚本报错。解决字段映射单独抽成配置文件field_mapping.json不硬编码。3.4 效果单张处理从5-8分钟→全自动月底无需加班数据全本地存储财务合规通过审计四、周报自动生成多系统数据采集LLM总结4.1 业务痛点每周五花1-2小时写周报各系统截图→复制数据→贴PPT→排版。领导格式要求常变上周模板这周作废。4.2 技术方案RPA数据采集层数据源采集内容方式CRM客户跟进记录模拟登录→筛选本周→导出电商平台销售数据同案例一项目管理任务完成情况API调用各系统关键页面截图模拟操作→截图保存LLM总结层提示词核心prompt 基于以下本周数据生成周报 数据 {data} 要求 1. 本周完成列出3-5项核心成果附具体数字 2. 下周计划基于未完成任务推断 3. 遇到的问题数据中的异常或延迟项 4. 需要支持明确列出需要资源或决策的事项 格式每段不超过3行有逻辑、有重点不要堆砌数据。 自动排版层用python-docx生成Word按公司模板插入截图和表格from docx import Document from docx.shared import Inches def generate_weekly_report(data, screenshots, template_path, output_path): doc Document(template_path) # 替换占位符 for paragraph in doc.paragraphs: if {本周完成} in paragraph.text: paragraph.text paragraph.text.replace({本周完成}, data[completed]) if {下周计划} in paragraph.text: paragraph.text paragraph.text.replace({下周计划}, data[plans]) # 插入截图 for screenshot in screenshots: doc.add_picture(screenshot, widthInches(5.5)) doc.save(output_path)定时任务每周五16:00自动运行16:30邮件推送草稿。4.3 踩坑记录坑1LLM总结过于笼统早期输出本周工作进展顺利毫无信息量。解决在提示词中强制要求引用具体数字。坑2截图分辨率问题不同电脑分辨率不同截图位置偏移。解决用窗口句柄定位而非绝对坐标。坑3模板频繁变更领导每周换格式。解决模板抽离为可配置Word文档RPA动态读取。4.4 效果从2小时/周→10分钟/周检查LLM生成内容报告质量稳定不受周五疲劳影响五、技术选型本地RPA vs 云端RPA的实测对比做这4个案例我换过3款工具最终选型逻辑需求某云RPA本地RPA方案内网/离线环境❌ 必须联网✅ 纯本地运行离线可执行数据安全⚠️ 数据上云✅ 全本地存储不上传第三方打包分发❌ 需安装环境✅ 可打包EXE双击运行AI费用按功能/机器人收费自申请API按token计费指纹浏览器部分支持支持紫鸟、比特、HubStudio等选型结论对数据敏感、需内网离线部署、预算有限的团队本地RPA方案更合适。我当前在测试的本地RPA工具实测体验这个工具叫蓝印RPA几个核心能力对应了我们团队的刚需离线运行内网环境直接执行无需联网这是我们能过等保测评的前提EXE打包写好的流程打包成可执行文件同事双击就能跑不用装环境数据本地存储所有流程、数据、日志全在本地符合财务审计要求AI费用透明接大模型用的是自己申请的API文心一言、豆包、DeepSeek、Kimi都支持用多少付多少一个月AI调用费用几十块但也存在局限社区生态不如大厂成熟部分高级功能文档不够详细遇到冷门问题需要自己去GitHub翻issue或社区提问可视化流程编辑器的体验还有优化空间对于小团队来说够用且省钱但如果你需要企业级SLA保障或丰富的预置组件库建议还是看大厂方案。六、适合谁不适合谁适合有重复数据搬运需求的个人开发者/小团队业务系统老旧、不想改造系统的中小企业数据不能上云的合规场景不适合追求零代码完全不懂技术的用户仍需基础逻辑配置流程极度复杂、每一步都需要人工判断的场景期望100%无人值守、一次配置永久不管的心态RPAAI Agent不是万能药。它最适合的是那些重复、规则明确、耗时间的活儿。我这一年最大的感受省下来的时间不是让你摸鱼的是用来做更有价值的事的。如果你也在被复制粘贴折磨建议从最简单的场景开始——自动登录抓取数据跑通了再慢慢加AI能力。技术是用来解决问题的不是用来炫技的。