接手这个任务前我真没想到有一天能把“内部系统迁移”这种脏活累活从三天压到半小时。当时的情况是这样的老业务系统要退役几万条客户资料、跟单记录必须搬到新CRM里。按老办法运营同事得在两个系统之间来回登录复制、粘贴、核对、改格式加班加点也要整整3天。我试着把RPA自动化和AI智能识别组合起来把流程拆成“自动采集—智能清洗—自动回填”三段最终跑完整个迁移只用了28分钟。这篇文章就是这次RPAAI实战的完整踩坑复盘从方案选型到关键参数再到那些文档里不会写的坑一次性讲透。想用自动化改造内部系统又不知道AI该在哪一步介入的人可以参考。1. 项目背景与整体设计思路1.1 3天到底慢在哪里先说老流程为什么这么慢。表面看是“迁移数据”实际上是一堆琐碎的人工操作登录老系统翻列表页一页页查数据复制到Excel里打开新系统新建客户档案再一条条粘贴进去。每条数据要核对字段比如老系统只有一个“客户名称”新系统却拆成了“单位名称”和“联系人”两个字段那就得人工判断哪个词是单位名、哪个词是人名。更麻烦的是脏数据手机号有带横杠的、有带空格的地址有的写到街道、有的只写到城市同一个客户在老系统里出现过两次但名称略微不同。这些都需要人去看、去判断、去修正3天就是被这些细碎活堆出来的。1.2 为什么是RPAAI组合而不是选一个一开始我也想过两条路纯用RPA或者纯用AI。结果都走不通。纯RPA擅长的是“确定性的重复操作”比如登录、点击、翻页、复制、粘贴它速度快、稳定但遇到“客户名称应该拆成单位还是联系人”这种需要判断的事就抓瞎了没法处理脏数据硬写规则的话规则比头发还多维护成本直接失控。纯AI则相反它能理解语义、能做模糊匹配但它没法操作浏览器也没法点击Web系统里的按钮去回填数据。所以最合理的方案是各干各擅长的RPA负责所有“手”的活AI负责所有“脑”的活。说白了RPA是搬运工AI是分拣员两者配合才能把整条流水线跑起来。2. 核心细节拆解与实操要点2.1 先拆流程再排工具动手前一定要把迁移流程拆成最小步骤不然后面写脚本会一团糟。我拆出来的核心环节是登录老系统→按条件查数据→抓取页面字段→写入临时表→AI清洗与归一化→映射成新系统字段→登录新系统→逐条创建档案→核对结果。每个环节对应一个RPA组件网页自动化、Excel读写、OCR识别、条件判断、异常捕获。这里要特别说下网页自动化组件它有两种模式一种是按CSS选择器定位元素一种是按坐标或图像识别。实际项目里我强烈建议优先用选择器定位因为图像识别在屏幕分辨率变化、浏览器缩放时极容易失效。2.2 AI在迁移里的三个真正落点很多人一提AI就想着“让AI帮我写脚本”其实在这个场景里AI最大的价值是处理那些规则搞不定的脏数据。我实际用到三个落点第一是字段拆解。老系统的“客户名称”字段实际包含了单位名、联系人、职位比如“XX科技有限公司-采购部-张伟经理”这种格式靠正则写死非常痛苦但用大模型做信息抽取就很简单给它输入字段说明它就能把单位、部门、人名、职位拆成一列列。第二是数据清洗。手机号格式不统一、地址缺失、地区名称不一致这些用AI做归一化比写规则靠谱得多比如“北京市朝阳区”和“朝阳区北京”能不能合并成同一个地址AI能根据语义判断。第三是智能映射。老的字段名和新系统的字段名往往不是一一对应比如新系统没有“客户级别”这个字段但有“客户类型”到底怎么对应我把两个系统的字段清单都喂给大模型让它给出一份映射建议再人工确认一遍比对着Excel表格一个个数效率高太多了。2.3 关键参数怎么定才算跑得又快又稳RPA脚本跑起来容易跑得稳才是难点。我先说超时和重试。网页加载是有波动的所以每个页面操作都要设置超时我一般设为15秒超过就重试重试3次仍失败就记录日志并跳过。再说分批大小。几万条数据一次性灌进内存Excel直接卡死内存溢出所以我每批只处理100条处理完写入磁盘再处理下一批。并发线程数我保持在2个太高容易触发目标系统的风控策略。这里有一个我后来才意识到的重要参数操作间隔。RPA模拟人工操作时每一步之间最好有200到500毫秒的随机间隔否则目标系统很容易识别出“这不是人”触发验证码或封IP。为了不让服务器察觉是批量操作我还在脚本里加入了随机等待时间让整个迁移动态地像一个人在手动操作而不是匀速前进的机器人。3. 实操过程与核心环节实现3.1 第一步登录与数据抓取我用的是影刀RPA来搭骨架因为它的网页自动化组件比较成熟对国内常见业务系统兼容性好。登录环节没什么技术含量但有个细节很容易被忽略很多旧系统有验证码。当时我处理的系统没有验证码但保险起见我还是加了验证码识别逻辑影刀自带的OCR组件可以识别简单的数字验证码复杂的话可以把截图丢给AI接口识别。登录之后我用“循环翻页”的方式遍历列表页每一页提取需要的字段然后写入一个临时Excel文件。这里的小技巧是页面字段不要等到最后再清洗而是每抓完一页就写盘免得意外中断后全丢了。抓取过程里还要处理弹窗、提示框这类“页面噪音”。影刀自带“弹窗检测”组件我把它放在主循环里一旦弹出窗口就自动关闭。踩过一次坑某页因为数据异常触发了一个模态框脚本没识别到结果后续所有点击都点在了模态框上直到超时崩溃。3.2 第二步AI处理字段映射与清洗抓下来的原始数据放在Excel的sheet1里字段是老的很乱。我写了段Python脚本调用大模型API把每条数据的字段内容发过去让它按我设定好的JSON格式返回。这是我实际使用的清洗脚本的框架import pandas as pd import requests # 读取抓取出的原始数据 df pd.read_excel(raw_data.xlsx, sheet_namesheet1) # AI清洗函数输入原始客户名称返回结构化字段 def ai_clean(raw_text): prompt f 你是一个数据清洗助手请从以下客户记录中提取 - company: 公司名称 - contact: 联系人 - department: 部门 - title: 职位 原始记录{raw_text} 只返回JSON对象不要多余解释。 resp requests.post(http://your-llm-api/v1/chat/completions, json{...}) data resp.json()[choices][0][message][content] return json.loads(data)这段脚本对每一条记录调用大模型提取JSON字段如果返回异常就标记为“需人工复核”。清洗完的数据写入sheet2并把老字段名和新字段名的映射关系也一并处理好。这里要提醒每次调用AI接口都有延迟几万条数据全量跑会比较慢所以更好的做法是先搞清楚哪些数据是干净的、哪些是脏的。干净数据写规则跳过AI只有脏数据才交给大模型。我后来统计过约60%的数据用规则就能搞定剩下40%才需要AI这样一来总耗时大幅降低。3.3 第三步回填新系统与校验清洗完的数据最终要逐条写进新系统。这段流程是纯RPA的活登录新系统→点击“新建客户”→按字段填入→保存。为了提高效率我用Excel读取清洗后的每行数据填充表单后立即提交。还要增加提交后的校验逻辑保存成功后页面通常会回到列表页并出现一条新记录我判断是否出现该记录的唯一标识比如统一社会信用代码如果没找到就触发失败重试。这样可以确保漏单的数据能第一时间被发现。校验环节我做了两层。第一层是逐条校验保存成功后新系统页面会自动生成客户编号我用RPA抓取这个编号回写到Excel的“迁移结果”列。第二层是全量校验迁移全部结束后我导出一份新系统的客户列表和迁移前的老系统客户清单做数量比对数量一致才算迁移完成。3.4 一个样例字段映射逻辑这里给出一段实际映射的示意老系统和新系统字段的对照关系大家能更直观地看到AI的作用老系统字段示例数据新系统字段AI处理逻辑客户名称北京XX科技有限公司-采购部-张伟经理公司名称、联系人、部门、职位AI拆解电话138-1234-5678手机号正则清洗去横杠空格地址朝阳区望京SOHO T1北京市省、市、区、详细地址AI补全省市提取详细地址客户级别重点客户客户类型AI归类为标准/重点/VIP无对应字段无客户来源默认值为“老系统迁移”4. 常见问题与排查技巧实录4.1 高频问题速查表实际操作中遇到的问题五花八门我整理了一个速查表都是真实发生的现象可能原因排查思路解决方案脚本跑到一半页面元素点不到网页结构变化选择器失效查看失败截图/页面源码改用更智能的选择器如按文本定位或增加元素等待条件AI返回的JSON解析失败大模型“精心”加入了解释文字打印完整返回内容在prompt中强制“只返回JSON”并做一个解析兜底截取第一个{到最后一个}大批量写入时系统提示操作频繁请求太密集触发风控查看系统日志降低并发增加随机等待时间数据迁移后金额字段对不上新老系统字段精度不一致抽样比对迁移前确定精度规则脚本中统一格式OCR识别验证码报错图片干扰线太多查看OCR置信度复杂验证码切换到AI识别接口4.2 我踩过的3个大坑值得细说坑一页面元素选择器一夜之间全失效。第二天早上跑脚本发现原定选择的元素全部定位不到查了半天才知道是前端同事发了个新版页面CSS的class改掉了。从那以后我在脚本里加了个启动自检第一步先检查一个关键元素是否加载没有就直接报警而不是傻傻地跑到一半才报错。坑二AI“幻觉”把不存在的信息补齐了。AI清洗时有一条地址缺少详细门牌号模型居然帮我编了一个“XX路XX号”出来。这非常危险数据迁移最关键的是真实性宁可缺失也不能造假。我的解决方案是在prompt里明确写“如果字段信息不存在对应值为空字符串”同时在代码里做规则校验凡是地址字段出现清洗前完全没有的字就标记为需人工复核。坑三目标系统限流迁移进度突然归零。全量回填跑到一半新系统开始报“操作过于频繁”然后把我账号踢下线了。我一开始还以为是网络问题后来才发现是没控制写入频率。后来我在每条记录之间加了500到1000毫秒的随机延迟并把单次写入数量从100条降到50条才把这个问题彻底解决。5. 落地效果评估与可复用方向5.1 效果对比从3天到28分钟这次迁移完成后我做了一个简单统计。完整处理的总记录数是2万多条原先人工操作需要约3个工作日、3到4个人力轮换耗时和人力成本都很高。新流程跑一遍自动采集用了约12分钟AI清洗用了约9分钟回填和校验用了约7分钟合计28分钟全程只需要1个人盯着处理速度提升了超过40倍。准确率方面人工操作会因为疲劳产生漏填错填而新流程通过双层校验字段完整率达到99.6%未匹配的数据只有不到40条全部进入人工复核清单。5.2 这套组合还能用在什么场景这次验证完之后我发现RPAAI的组合远不止能用来做数据迁移。比如财务对账从银行下载流水AI识别交易备注并归类RPA自动填入对账模板。用户画像整理从多个内部系统采集用户行为AI做标签归一化RPA定时触发更新。供应链单据处理供应商发来的PDF/图片单据OCR之后由AI抽取关键字段RPA写入采购系统。报表生成每天早上定时抓取业务数据AI写摘要RPA推送至群和邮件。坦白说这次项目里最值钱的不是那28分钟而是形成了一套“RPA干体力活AI干脑力活”的协作模板。以后再遇到内部系统对接、老数据搬迁、多平台数据同步我基本都会先问自己三个问题这里面有哪些是确定的、重复的操作有哪些是需要理解、判断的脏数据人工兜底环节放在哪里最合适想清楚这三个问题方案基本就出来了。最后再分享一个小技巧任何AIRPA的数据清理任务都不要拿全量数据直接跑到黑。第一步先抽50条样本做AI清洗效果验证确认返回结果符合预期后再设计“规则优先AI兜底”的全量流程。这样做能避免AI在整个数据集上系统性出错也能帮你第一时间发现prompt里没写清楚的要求及时调整。数据迁移这种活慢不是问题错了才是大麻烦。