开发专题
人工智能AI
机器学习ML
深度学习DL
关于大模型的一些基础内容
一些人工智能的架构图
使用ollama在本地启动运行大语言模型
在本地部署sd使用AI生图功能
AIGC入门教程
队列
RabbitMQ消息队列
redis+mq实现秒杀功能
非结构化存储OSS
使用minio进行数据存储
非结构化文档在线预览
使用kkfileView实现在线文档预览
OnlyOffice实现文档在线编辑
全文搜索
Elasticsearch构建全文搜索系统
windowns下使用Logstash7.6.2同步Mysql数据到ElasticSearch,并使用kibana进行检索
工作流Flowable应用
Flowable基础入门知识
Springboot+mybatisplus+flowable6.5.0 开发房产审批模块
人脸识别
虹软人脸识别应用
人脸识别基础入门知识
WebSocket在线聊天
Springboot+WebSocket+redis实现在线客服系统
WebSocket基础入门
信创产业
领域驱动DDD
定时任务quartz
流媒体
流媒体服务LALMAX的部署安装与使用
使用go2rtc+webrtc-streamer在网页上播放rtsp 的摄像头视频
RPA数字员工
使用盘匠设计器进行RPA项目的开发
RPA开发过程中的一些经验之谈
本文档使用 MrDoc 发布
-
+
首页
使用盘匠设计器进行RPA项目的开发
> 之前没有接触过这方面技术的开发,RPA只是老早听过这个概念 这次一个偶然的机会 简单的学了一下 开发完一个流程下来的感觉就是 要考虑的细节很多,以后可能会被ai所替代。 ## 使用盘匠设计器进行RPA项目的开发 这次开发的流程需求主要是 从一个pdf 和 一个word中 提取一些关键的人名 一个是会议记录,一个是会议纪要。 把里面所有的主持人,出席人,列席人,缺席人全部抽取出来,然后去做一些比对。 这个里面用了大量的正则匹配。 其中的会议纪要是一个word文件,放到了一个zip的压缩包的,然后 通过登录到oa系统,去下载这个压缩包,然后解压出来。 用户提供一个会议 列表的excel清单,比较一月份开了10场会议,那么需要一次性把这10场会议全部处理掉,我开发的思路就是把所有的操作放到一个大循环体里面。 ### 大概的流程如下: 1、登录OA系统,进入到纪要的搜索列表页面,然后待命 2、打开会议清单excel,把会议存到一个 meeting_lists中 3、循环这个 meeting_lists,在data目录 创建以会议名称的目录 4、然后把子项meeting_item 传给每个子流程 5、下载zip包的子流程,接收到这个 meeting_item之后,使用meeting_item[1] 搜索会议名 6、把 对应的 会议纪要下载到本地指定路径,然后解压。 7、循环这个 meeting_lists: 8、进行 pdf的文字识别,因为这个rpa设计器没法直接识别图片格式的pdf的内容,所以这里需要把pdf分割成图片,然后对所有的图片进行遍历识别,把遍历识别出来的结果 全部放到一个大的数组里,然后在循环结果的时候,把这个数据 里的words字段全部拿出来,拼接成一个string的长字符串 放到meeting_record变量中 9、进行word的识别,这个word文档是从zip包里解压同来的,通过找到文件名的命名规则 ,获取到文档里面的内容放到 meeting_record2中。 10、正则提取会议记录中的所有参会人员包括主持、出席、列席 11、正则提取会议纪要中的所有参会人员包括主持、出席、列席 12、接下来就是 正常一些规则 的判断 了,比如判断 会议记录中出席人和会议纪要中出席人是否一致 set(出席人) == set(列席人),出席人是否大于4个人,len(list1) >= 4 13、这个里面有一条规则 繁杂一些,但是其实通过人去判断的话很简单,但是通过程序 有点无从下手的感觉,就是 会议记录里最后有很多人 要发言,那么发言是有顺序 要求的,比如 张三是总经理,李四是副总经理,那么 张三一定是最后一个发言人,李四是倒数第二发言。 代码如下: ~~~ import re def check_speech_order(text): pattern = re.compile(r'^(.+?)[::]\s*同意[,。!?]?$') speakers = [] for line in text.split('\n'): line = line.strip() if line and (match := pattern.match(line)): speakers.append(match.group(1)) try: zhang_index = speakers.index('李四') long_index = speakers.index('张三') is_valid = (zhang_index == len(speakers)-2) and (long_index == len(speakers)-1) except ValueError: is_valid = False return is_valid, speakers # 返回验证结果和发言人列表 # 使用示例 text = """周七:同意。本次采购型号前期合同已经到期,要尽快完成保障市场。 王六:同意。 刘五:同意。 李四:同意。 张三:同意。 记录人(签字): 汇报部门领导(签字): 综合部部门领导(签字): 会议主持人(签字):""" check4, speakers_list = check_speech_order(text) print("check_result4:", check4) print("提取到的发言人列表:", speakers_list) ~~~ 大概的思路就是通过 同意这个字符把所有人的名字都拿到,然后放到一个数组里,然后张三和李四在这个数组里位置。。 这个里面其实也是有坑的,比较 如果发言人后面没有 “同意”两个字。。那么这段代码就废了! 这个里面还有一些手写体的识别,比如判断 某个领导是否签字了。。 但是这个需求直接给用户推掉了,因为基于目前的orc 技术,根本无法正确的能识别出来签名的字,连是否有没有签字都 不好识别。。 比如下面这个签名,有能认识出来的朋友 吗。。。  解决的办法也是有的,就是要求写 字体工整,写正楷。。。 但是领导好不容易花钱练出来的艺术签名,让他写正楷???呵呵呵 还有些规则 ,基于目前的rpa技术 很难实现,比如 会议记录和会议纪要里的内容是否一致,这个如果能借助于目前的这些大模型,可以能识别出来 一个相似度,人工再根据这个相似度去判断 内容的一致性。 > 最后的总结 RPA的开发是一件挺痛苦的事,因为受限于目前RPA底座的能力,受限于用户提供的非结构化文件里内容格式的规范性, 但是随着现在dify+deepseek的技术,MCP协议的成熟,还有openai公司的Operator技术的进一步成熟和应用,以后有一天RPA平台会被 AI相关技术融合,慢慢的退出历史舞台。。。
superadmin
2025年3月31日 15:42
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码