在企业信息化演进的过程中,最常见的阻碍就是**“系统数据孤岛”**。
一些使用了十余年的老旧财务系统或特种行业申报系统,由于开发厂商停产或安全策略限制,无法开放任何对外接口。传统 RPA 依靠精确的 HTML 定位器,一旦遭遇非标控件或动态布局,就很容易崩溃罢工。
三函代码采用最新的 “多模态像素坐标定位” 技术,设计了一种不依赖底层代码的“外挂式”填报引擎。
一、 “脑(AI)+ 手(RPA)”的决策架构
该架构不需要读取系统源代码,而是完全站在真实人类的视角进行操作:
[获取屏幕截图] ➔ [AI 识别目标框与文字位置] ➔ [计算像素中心坐标 (X, Y)] ➔ [RPA 鼠标移动并点击] ➔ [模拟键盘输入]这避免了由于底层开发技术(如 React、Vue、Silverlight、Delphi)不同而导致的定位失败。
二、 核心像素计算与模拟填报代码
以下代码展示了如何使用 Python 的多模态视觉接口,在屏幕截图上识别目标文字,并计算出点击的坐标值:
import numpy as np
import pyautogui
import time
def find_element_by_visual(text_target, screen_data):
"""
利用本地视觉文本检索,在当前屏幕中找到 text_target 所在的中心像素坐标
screen_data: 来自多模态检测到的文本边界框 list, 每个包含 {'text', 'box': [x_min, y_min, x_max, y_max]}
"""
for element in screen_data:
if text_target in element['text']:
box = element['box']
# 计算边界框中心点坐标
center_x = int((box[0] + box[2]) / 2)
center_y = int((box[1] + box[3]) / 2)
return center_x, center_y
return None
def execute_voucher_input(voucher_details, detected_elements):
"""
根据凭证数据,自动操控鼠标点击录入
"""
# 1. 寻找“凭证录入”按钮并点击
pos = find_element_by_visual("凭证录入", detected_elements)
if pos:
pyautogui.moveTo(pos[0], pos[1], duration=0.5)
pyautogui.click()
time.sleep(1.0) # 等待新窗口弹出
else:
raise RuntimeError("无法在屏幕上找到 '凭证录入' 按钮!")
# 2. 定位到借方金额输入框并打字
# 假设通过视觉模型识别到了“借方金额”文字右侧的输入框位置
debit_input_pos = find_element_by_visual("借方金额输入区", detected_elements)
if debit_input_pos:
pyautogui.click(debit_input_pos[0], debit_input_pos[1])
# 清空原有内容并输入金额
pyautogui.hotkey('ctrl', 'a')
pyautogui.press('backspace')
pyautogui.write(str(voucher_details['amount']))
pyautogui.press('enter')三、 异常与反爬虫策略应对
在无接口填报中,经常会遇到“账户锁定”、“期间锁定”等突发弹窗:
- 防死锁截图备份:一旦遇到未知错误,智能体会立即截取屏幕图像并进行哈希分类。如果判断为“期间锁定弹窗”,会自动点击“取消”或“确认”按钮,并把这一异常写入执行日志中,避免流程无限挂死。
- 人机混排操作延迟:为了防止被目标网站判断为恶意刷单,机器人在输入和点击时,加入随机的毫秒级操作延迟(Random Delay),模拟真实的打字节奏。
四、 结论
这种基于视觉像素定位的自动化填报技术,打通了企业老旧系统的最后一公里,使企业无需承担昂贵且风险巨大的二次系统集成开发,为企业平稳转型提供了成本最低的备选方案。