还有笑话+成语+名词解释+智能问答+天气+翻译+问候的功能;还有发一个表情包或者问号的功能,测试效果良好,别生气别骂人!
主要思路:
1. pyautogui
- 用
pyautogui.locateCenterOnScreen
来定位 - 用
pyautogui.screenshot
来截聊天区域的图
2. 文本识别
OCR,参考之前写的一篇优快云,实现效果:
原窗口:
截固定长宽的像素:
结果:
['@21-肖龙', '老师-HCS-吴志勇', '大家都太强了#章']
发现名字也会被识别出来,这里不能直接取最后一个,因为多行输入的时候:
结果:
['好多不会都血红蛋白许多还打不打胡', '好的']
发现有时候有名字有时候又没有……
解决方法:微信原因。这里只针对单人聊天,如果需要实现群聊效果需要进入群中设置不显示成员名称。
['还是你的记得记得都就差你']
3. 改进版文本识别
以上文本识别太不好用了,同时百度云OCR注册比较麻烦,免费的只有200次的额度,中午睡午觉发现了一个更为简便的方法:
- 找到所有的聊天框:
pyautogui.locateAllOnScreen
- 微信双击就可以选择文本:
pyautogui.doubleClick
- 粘贴过来:
pyautogui.hotkey('ctrl', 'c'))
和txt = pyperclip.paste()
4. 自动回复
本来想用ERNIE的,发现几个月前百度有个新的预训练模型,也挺麻烦的,先获取access_token,接口在这,控制台在这,好像是基于PLATO-XL,中文预训练模型,论文地址
5. 全部代码
https://github.com/YoungSeng/Autowechat
6. 实验结果可视化
https://www.bilibili.com/video/BV1X5411S7vE
运行效果:
手写一个自动回复微信消息机器人!
图片截图:
……
7. 未来方向
- 现在是设置为没有新消息的时候点一个固定的屏蔽群消息的置顶群聊,知道检测到红点为止,这个可以改进,就可以和一个人不只说一句话了;
- 我想到了发文件、音频、表情包这样的测试用例,所以昨晚跑了一个多小时效果良好,没有报错;
- 没有基于OCR,是基于双击全选当前最后一个文本框,这在群聊中收到@消息的时候会检测不到文本,这个也好解决,把x轴坐标往右一点就可以了;
- 接到微信电话的时候!哈哈哈哈哈哈这个是最搞笑的,因为要双击所以会接到电话,但是又不能说话,然后要等别人骂骂咧咧的挂掉电话之后才可以继续运行监测图标的程序;
- 有些死循环,比如“别客气,这是应该做的……”(好像是),原本模型原因;
- 公式、代码不能识别,这一点看来比GPT差一点。