在自动化操作场景中,答题脚本是按键精灵常见的应用类型之一,以单选题这类标准化题型为例,将从核心的 “文字识别” 和 “题库匹配” 两大环节入手,拆解单选题答题脚本的完整编写思路,帮助新手快速掌握这类脚本的设计与实现。

第一步:精准识别题目与答案选项

答题脚本的基础是 “读懂” 题目和选项,而文字识别是实现这一目标的核心,根据应用场景不同,主要分为两种识别方式,各有适用场景和实现逻辑。

1. 节点 XML 元素提取(高效精准型)

这种方式的核心是从 APP 的 XML 节点中提取text属性的文字内容,优势非常明显:

  • 速度快:直接读取文本数据,无需额外的图像处理步骤;

  • 准确率高:提取的是原生文字,不存在识别误差。

但局限性也同样突出:仅适用于有可提取文字节点的 APP,像游戏类 APP、定制化界面的 APP 基本没有这类节点,因此无法使用该方法。

2. OCREX 文字识别(通用兼容型)

当无法通过节点提取文字时,OCR(光学字符识别)是唯一选择。按键精灵本身自带 OCREX,本地版 OCREX 识别更快,

  • 准确率:对标准字体(如黑体、宋体)识别率接近 100%,手写体、艺术体识别率会下降,无法做到百分百准确。数字类的0.1这类的识别会容易出现错误。

识别实操建议

识别题目和选项时,优先分开识别(如先识别题目区域,再分别识别 A/B/C/D 选项区域),便于后续匹配;若答题有严格时间限制,可一次性识别整个答题区域,再通过字符串处理(如按换行、标点分割)区分题目和选项。

第二步:题库匹配实现自动答题

如果说文字识别是 “读懂题目”,那么题库匹配就是 “找到答案”—— 没有题库,答题脚本就是无源之水。这一环节分为 “制作题库” 和 “匹配答案” 两个关键步骤。

1. 题库的两种制作形式(各有优劣)

形式一:按行编写(易维护型)

每一行对应一道题,格式为题目----答案,示例如下:

五岳中的中岳是哪座山----嵩山

优点:制作和维护极方便,新增题目只需在文档最后追加一行,无需调整格式;

缺点:题库量极大(如上万道题)时,匹配速度会变慢。

形式二:JSON 格式存储(高效匹配型)

以键值对形式存储,题目为 “键”,答案为 “值”,示例如下:

"五岳中的中岳是哪座山":"嵩山"

优点:题库量越大,匹配速度越优于按行编写的形式,因为键值对可直接通过 “键” 调取 “值”,无需遍历;

缺点:手动制作麻烦,建议先按形式一制作题库,再编写小脚本自动转换为 JSON 格式。

2. 题库匹配的实现逻辑

匹配的核心目标是:将识别到的题目与题库比对,找到对应答案,再从识别的选项中匹配出目标选项并点击。

方式一:按行题库的匹配逻辑

  1. file.readlines命令读取题库文档,将每一行内容存入数组;

  2. 遍历数组,对每一行使用分割命令(如按----分割),拆分出 “题库题目” 和 “题库答案”;

  3. 将 “题库题目” 与识别到的题目进行精准比对,找到完全匹配的行;

  4. 提取该行的 “题库答案”,再与识别到的选项逐一比对,找到一致的选项;

  5. 触发按键精灵的点击命令,点击目标选项完成答题。

方式二:JSON 题库的匹配逻辑

  1. file.read命令读取整个 JSON 题库文档;

  2. 将 JSON 字符串转换为按键精灵可识别的 table(键值对)结构;

  3. 直接以识别到的题目作为 “键”,调取对应的 “值”(即答案);

  4. 与识别的选项比对后点击目标选项,完成答题。

延伸:模糊匹配(应对题目变体)

实际场景中,识别的题目可能与题库题目不完全一致(如多了标点、少了助词),此时需用模糊匹配:

  1. 遍历所有题库题目;

  2. 使用查找命令(如InStr),判断题库题目是否包含识别到的核心题目内容;

  3. 若包含,则判定匹配成功,提取对应答案继续后续操作。

三、完整脚本编写流程梳理

结合上述两大核心环节,单选题答题脚本的完整编写流程可总结为:

  1. 确定识别方式:优先尝试节点提取,不可行则选用 OCR;

  2. 制作题库:根据题库规模选择 “按行编写” 或 “JSON 格式”;

  3. 编写识别逻辑:截图 / 提取节点→获取题目和选项文字;

  4. 编写匹配逻辑:题库比对→找到答案→匹配选项;

  5. 编写执行逻辑:点击目标选项→完成答题;

  6. 优化调试:针对识别误差、匹配失败、答题超时等问题调整参数(如 OCR 截图区域、匹配容错率)。

总结

  1. 文字识别是答题脚本的基础,节点提取优先(精准高效),OCR 作为通用兜底方案(兼容所有场景但有识别误差);

  2. 题库制作需权衡维护成本和匹配效率,小题库用 “按行编写”,大题库建议 “按行制作 + 脚本转 JSON”;

  3. 匹配逻辑的核心是 “精准比对”,实际应用中可通过模糊匹配适配题目变体,提升脚本通用性。

更多推荐