# 072:CPU 评分协议实验 Python >=3.10,只有标准库。实际环境 Python 3.12.14 / macOS / CPU。 不需要 pip 安装;requirements.txt 记录了零第三方依赖。PyTorch、Transformers 未安装;没有运行 OCR、VLM、图像预处理、真实数据集或模型权重。 在文章目录运行: ```bash python3 -m py_compile code/minimal_eval.py code/audit_protocol.py python3 code/minimal_eval.py python3 code/audit_protocol.py ``` `minimal_eval.py` 默认写入脚本旁 `results/`,可用 `--out /path/to/output` 改变位置。`audit_protocol.py` 审计默认 results/ 和已保存的 source_snapshots/。不要用优化参数 `-O`,审计使用 assert。 ## 研究设计 种子72;20份结构化文档规格,每份2个系列值:cyan 为120–200整数,amber 为20–80整数。标识是 AB 加6位数字。每份有OCR、lookup、difference、percentage四题。开发5文档20题,测试15文档60题,按文档隔离。没有图像文件或模型输入张量;日志的 spec_shape=(20,2) 只是数值规格形状。 五种预测模式均为故障注入,不是模型输出:gold_fixture、numeric_4pct、numeric_6pct、mixed_faults、format_prefix。百分比答案先固定为两位小数;4%和6%扰动针对这个已舍入的标准答案。mixed_faults 对四类题分别改一个字符、换系列、减法变加法、去掉百分号。格式前缀固定为 `The answer is `。 EM对所有60题,ANLS只对OCR15题,数值指标只对45题。ANLS统一小写/空白后计算距离和长度;相似度必须严格大于0.5,多答案取max,空预测为0。数值支持单个有限十进制数及可选百分号,使用Decimal计算,5%以标准值绝对值为分母;标准值0时只接受数值0。数值精确指标使用0容差。此口径用于诊断,不声称与任意官方榜单完全一致,不通用处理单位或日期。 results中保留原始JSONL、5组预测和逐题JSON、summary.json;smoke_test.txt与audit_test.txt为本次实际输出。 ## 导入真实预测 ```bash python3 code/minimal_eval.py --gold gold.jsonl --predictions predictions.jsonl --out eval_output ``` gold.jsonl 每行最小格式: ```json {"question_id":"doc01_q01","task":"lookup","answers":["50%"]} ``` predictions.jsonl 每行: ```json {"question_id":"doc01_q01","answer":"0.5"} ``` task为 `ocr` 时用文本指标,其他task必须为数值题。文本类别回答不要误放到数值题。多参考答案放answers列表。预测必须是字符串;重复ID、缺失ID、额外ID均报错;空字符串是有效提交记录但得0。后续VLM适配器应把请求失败写成空字符串,并另存失败原因、模型/权重版本、提示词、图片哈希和推理配置;不要将gold或合成故障答案送入模型输入。外部文件模式只运行评分,不替用户生成真实预测。本次通过CLI回放已保存的合成预测,未导入真实模型预测。 ## 源码对照 source_snapshots中的两个文件来自Qwen-VL官方master,检索日2026-09-13;manifest.json保存原始URL、时间、字节数和SHA-256。代码归原作者,使用与再分发遵循其上游许可;这里为科研阅读与函数对照保存原样快照。它们不是本文自行编写的最小实现,也不是两个新模型。 audit_protocol.py核对快照哈希后,只从AST提取已审阅的评分函数,跳过上游import和main,避免触发GPU加载。执行ChartQA聚合函数、ANLS评估入口和数据校验函数。证据只对应这个快照,不表示运行了上游完整推理。未固定提交号;当日获取提交元数据失败,因此以本地字节哈希保证此次回放。 关键边界:gold=100,pred=105.2,gold分母拒绝而快照聚合接受;gold=100,pred=95则相反。gold=0,pred=0.0快照不接受。ANLS相似度恰为0.5时两种口径不同;尾随空白膨胀只在独立评分入口示范,上游生成脚本strip会去掉这类尾随空白,不能据此宣称端到端结果被污染。 独立审计:重建80个gold;961对短字符串用完整矩阵编辑距离与滚动行算法及源函数交叉检查;225条数值判定独立用Decimal重算;逐列核对分母和均值;检查3种非法提交、重排不变性、多答案、空输出及非有限数拒绝。