展开本页目录
开始前准备什么
- 使用虚构展览材料,测试的是文本表格,不是图片 OCR。
- 输出单位固定为元,数量为整数,ID 和金额为字符串。
- 预先写清括号负数、万元、缺失符号规则,不依赖模型自行猜约定。
- 确定字段类型
- 复制固定 prompt
- 核对每一行
- 测试边界符号
- 保存验收记录
20个虚构任务、参考答案、可信测试与空记录模板。没有新模型成绩,不会调用API。
20 个虚构用例。expected 是验收参考,不是模型结果。
60 行未运行占位;未知耗时、通过与实际扣费保留 null。
同一张表里,零和缺失不要混淆
0002 的金额和数量明确为零;0021 的金额没有给出。第一种必须输出 "0.00" 与 0,第二种必须输出 null。编号 0017 不能变成数字 17。
虚构输入表格
| 编号 | 金额(元) | 数量 | 单位 |
|---|---:|---:|---|
| 0017 | 1,280.50 | 3 | 套 |
| 0002 | 0 | 0 | 份 |
| 编号 | 金额(元) | 数量 | 单位 |
|---|---:|---:|---|
| 0021 | - | 2 | 本 |
| 0022 | 360.00 | - | 件 |明确金额类型、单位与缺失语义
| 字段 | 类型与合同 | 原因 |
|---|---|---|
| recordId | 字符串,保留输入前导零 | 编号不是可以做加减的数量 |
| amountYuan | 两位小数字符串或 null | 保留精度与未知状态 |
| quantity | 精确整数或 null | bool 不是数量 |
| unit | 原表单位字符串 | 不凭常识补单位 |
- 字段
- recordId
- 类型与合同
- 字符串,保留输入前导零
- 原因
- 编号不是可以做加减的数量
- 字段
- amountYuan
- 类型与合同
- 两位小数字符串或 null
- 原因
- 保留精度与未知状态
- 字段
- quantity
- 类型与合同
- 精确整数或 null
- 原因
- bool 不是数量
- 字段
- unit
- 类型与合同
- 原表单位字符串
- 原因
- 不凭常识补单位
固定抽取 prompt
将下面的虚构展览费用行转换为 JSON 数组。每行字段仅含 recordId、amountYuan、quantity、unit。recordId 保留前导零并为字符串;amountYuan 为元单位两位小数字符串或 null;数量为整数或 null。- 表示缺失,负号表示调整款。万元乘以10000后再保留两位;不推断缺失值,不增加总计行。万元换成元,负号一起保留
对应原表为 1.25 万元和 -0.003 万元,转换后是 "12500.00" 与 "-30.00"。任务明确了单位,不能输出 "1.25" 后另加一个未约定的 currency 字段。
作者参考答案
[
{
"recordId": "0041",
"amountYuan": "12500.00",
"quantity": 5,
"unit": "套"
},
{
"recordId": "0042",
"amountYuan": "-30.00",
"quantity": 1,
"unit": "笔"
}
]五组边界覆盖的错误
括号表示负数只在本题明确说明的表格中成立。遇到新的行业表格,要先确定原表规则;不能把本题规则无条件套到所有材料。
| 边界 | 输入示例 | 期望 |
|---|---|---|
| 前导零与千位符 | 0017 / 1,280.50 | "0017" / "1280.50" |
| 缺失 | 金额 -,数量 2 | null / 2 |
| 负数 | -50.25 | "-50.25" |
| 单位换算 | -0.003 万元 | "-30.00" |
| 括号负数 | 说明括号表示负数;(125.00) | "-125.00" |
- 边界
- 前导零与千位符
- 输入示例
- 0017 / 1,280.50
- 期望
- "0017" / "1280.50"
- 边界
- 缺失
- 输入示例
- 金额 -,数量 2
- 期望
- null / 2
- 边界
- 负数
- 输入示例
- -50.25
- 期望
- "-50.25"
- 边界
- 单位换算
- 输入示例
- -0.003 万元
- 期望
- "-30.00"
- 边界
- 括号负数
- 输入示例
- 说明括号表示负数;(125.00)
- 期望
- "-125.00"
四层验收,别停在“合法 JSON”
本地 grader 使用精确类型核对,金额字符串和数字不等价。若生产管道允许宽松格式,应把清洗步骤和模型原始抽取分开记,别把清洗后的成功说成模型原样通过。
| 层次 | 通过条件 | 常见假阳性 |
|---|---|---|
| 结构 | 全部行,按输入顺序,只含四个字段 | 多加总计,少了一行 |
| 类型 | ID 和金额为字符串;数量为 int | 数字 17、浮点金额或布尔数量 |
| 数值 | 小数、负号与换算都正确 | 去掉负号,万元未换算 |
| 缺失 | 没给值就 null | 无值填零以求完整 |
- 层次
- 结构
- 通过条件
- 全部行,按输入顺序,只含四个字段
- 常见假阳性
- 多加总计,少了一行
- 层次
- 类型
- 通过条件
- ID 和金额为字符串;数量为 int
- 常见假阳性
- 数字 17、浮点金额或布尔数量
- 层次
- 数值
- 通过条件
- 小数、负号与换算都正确
- 常见假阳性
- 去掉负号,万元未换算
- 层次
- 缺失
- 通过条件
- 没给值就 null
- 常见假阳性
- 无值填零以求完整
文本表格与扫描图像分开测试
这些题的输入已经是可读文本,所以不能证明 OCR、复杂合并单元格或跨页表格识别。图片到表格的业务先验收视觉读取,再使用这套字段合同检查结构与数值。所有新用例仍是离线材料,没有模型成绩。
怎样确认已经完成
- 所有输入行都被保留,没有额外汇总行。
- 编号前导零、金额负号与小数不丢失。
- 缺失与零明确区分,单位按题目约定转换。
- 结果注明文本抽取范围,没有声称图片 OCR 通过。
常见问题
金额为什么用字符串,而不用 JSON 数字?
这里用两位小数字符串固定表示与精度。生产系统可以采用自己的数值类型,但必须固定规则,不能比较时一款严格、一款宽松。
缺失符号 - 是负数吗?
本页表中单独的 - 表示缺失;-50.25 才是负数。约定写进 prompt 后才可复现验收。
可以用于截图和 PDF 吗?
可以作为抽取后的字段合同,但这些材料不包含 OCR 或 PDF 解析测试。视觉读取的准确性需要另外验收。