<!-- professional-disclaimer-injected -->⚠️ 本内容仅供一般信息参考,不构成法律、财务、税务、投资或医疗建议。 涉及合同签署、报税、投资、诊疗等专业决策时,请务必咨询持证专业人士,并由使用者自行承担决策后果。
<!-- ai-generated-notice -->本内容由 AI 生成,仅供学习参考
acts-as-money — 金额识别与货币标准化 Skill
一、能力边界(一页纸速查卡)
1.1 能做什么
| 能力项 | 说明 | 示例 | |--------|------|------| | 金额提取 | 从混合文本中识别所有金额表达式 | "订单总价$1,200.50,运费€45" → 提取两笔金额 | | 币种识别 | 自动识别货币符号、ISO代码、中文币种名称 | ¥ / CNY / 人民币 / RMB / 美元 / USD | | 格式标准化 | 将各种金额写法统一为规范格式 | "1,200.50" → 1200.50;"1.234,56" → 1234.56 | | 批量处理 | 支持单条文本或CSV文件批量处理 | 整列金额字段清洗 | | 行号保留 | 文件处理时保留原始行号,便于回溯 | 第3行、第7行有金额 | | 置信度输出 | 每条结果附带置信度标记 | high / medium / low |
1.2 不能做什么
| 限制项 | 说明 | |--------|------| | 不做汇率换算 | 仅识别与标准化,不进行币种间兑换 | | 不做语义判断 | 不判断金额是收入还是支出、是否合理 | | 不处理手写体 | 仅支持电子文本输入 | | 不识别非金额数字 | 电话号码、日期、数量等不会被提取 | | 不修改原始文件 | 输出为新文件或标准输出,原文件不变 |
1.3 适用对象
- 财务人员:整理报销单、发票中的金额字段
- 数据分析师:清洗含金额的混合文本数据
- 开发人员:将非结构化文本中的金额转为结构化数据
- 运营人员:从用户反馈、评论中提取消费金额信息
二、触发方式
2.1 触发词
直接使用以下任一触发词即可激活:
acts as money金额转换货币解析money gem金额字段处理金额提取币种标准化
2.2 场景映射表
| 用户说(大白话) | 实际需求 | 推荐调用方式 |
|-----------------|----------|-------------|
| "把这段文本里的钱都提出来" | 提取所有金额及币种 | acts as money --input "文本内容" |
| "帮我标准化这些金额字段" | 清洗CSV中的金额列 | acts as money --file data.csv --column amount |
| "这堆数据里哪些是钱?" | 识别并标记金额字段 | acts as money --input "文本" --format json |
| "把美元和人民币分开列出来" | 按币种分类输出 | acts as money --input "文本" --group-by currency |
| "这个文件里的金额格式太乱了" | 统一金额格式 | acts as money --file data.csv --column price --normalize |
三、标准流程
3.1 前置条件
| 条件 | 要求 | 检查方法 |
|------|------|----------|
| 输入文本 | 非空,包含至少一个金额表达式 | 目测或 wc -c 检查 |
| 输入文件 | CSV格式,有表头行 | head -5 file.csv 查看 |
| 列名指定 | 使用 --column 参数时,列名必须与表头完全一致 | head -1 file.csv 确认 |
| 环境依赖 | Python 3.8+,无额外第三方库依赖 | python3 --version |
3.2 执行步骤
场景A:单条文本处理
-
准备包含金额的文本,例如:
本月收入:工资 ¥15,000.00,兼职收入 $800,报销 €120.50 -
调用命令:
acts as money --input "本月收入:工资 ¥15,000.00,兼职收入 $800,报销 €120.50" -
查看输出结果(JSON格式):
{ "status": "success", "count": 3, "results": [ {"index": 1, "amount": 15000.00, "currency": "CNY", "original": "¥15,000.00", "confidence": "high"}, {"index": 2, "amount": 800.00, "currency": "USD", "original": "$800", "confidence": "high"}, {"index": 3, "amount": 120.50, "currency": "EUR", "original": "€120.50", "confidence": "high"} ] } -
若某条结果置信度为
low,需人工核对原始文本。
场景B:CSV文件批量处理
-
准备CSV文件
data.csv,内容示例:id,amount,note 1,"¥1,200.50","办公用品" 2,"USD 45.00","快递费" 3,"1.234,56 €","差旅费" -
调用命令:
acts as money --file data.csv --column amount -
检查输出中的
confidence字段:{ "status": "success", "total_rows": 3, "processed": 3, "low_confidence_rows": [3], "results": [ {"row": 1, "amount": 1200.50, "currency": "CNY", "confidence": "high"}, {"row": 2, "amount": 45.00, "currency": "USD", "confidence": "high"}, {"row": 3, "amount": 1234.56, "currency": "EUR", "confidence": "low"} ] } -
对低置信度行(第3行)进行人工复核,确认
1.234,56 €是欧洲格式的 1234.56 欧元。 -
将结果写回新文件:
acts as money --file data.csv --column amount --output cleaned.csv
3.3 输出规范
| 输出字段 | 类型 | 说明 |
|----------|------|------|
| status | string | success 或 error |
| count / total_rows | int | 识别到的金额数量 |
| results | array | 每条金额的详细信息 |
| results[].index / row | int | 序号或行号 |
| results[].amount | float | 标准化后的数值 |
| results[].currency | string | ISO 4217 三字母币种代码 |
| results[].original | string | 原始文本片段 |
| results[].confidence | string | high / medium / low |
四、置信度门控
4.1 置信度判定规则
| 置信度 | 判定条件 | 示例 |
|--------|----------|------|
| high | 币种符号明确 + 数字格式标准 | $1,200.50、¥500、EUR 100 |
| medium | 币种可推断但格式有歧义 | 1.200,50(可能是欧洲格式的1200.50) |
| low | 币种缺失或数字格式严重冲突 | 1000(无币种)、1.234(可能是1234或1.234) |
4.2 信息不足时的处理
当遇到无法确定的信息时,输出 [需核实:字段名] 占位符,绝不编造:
{
"index": 5,
"amount": 1000.00,
"currency": "[需核实:币种]",
"original": "费用1000元整",
"confidence": "low",
"note": "文本中出现'元',但无法确认是人民币、台币还是其他币种"
}
4.3 人工复核建议
- 置信度为
low的记录,建议人工查看原始文本 - 置信度为
medium的记录,建议抽样复核 - 置信度为
high的记录,可直接使用
五、错误码体系
| 错误码 | 错误描述 | 提示话术 | 修正步骤 |
|--------|----------|----------|----------|
| E001 | 输入为空 | "输入文本为空,请提供包含金额的文本或文件路径" | 检查输入参数,确保 --input 或 --file 有值 |
| E002 | 文件不存在 | "指定的文件不存在,请检查路径是否正确" | 使用 ls 确认文件路径,检查文件名拼写 |
| E003 | 列名不存在 | "CSV文件中未找到指定的列名,请确认表头" | 使用 head -1 file.csv 查看实际表头 |
| E004 | 未识别到金额 | "在输入中未找到任何金额表达式" | 确认文本中确实包含金额,检查是否使用了特殊符号 |
| E005 | 格式解析失败 | "金额格式无法解析,请检查原始数据" | 查看原始文本,手动确认金额写法 |
| E006 | 币种代码无效 | "识别到未知的币种代码" | 检查币种是否为ISO 4217标准代码 |
| E007 | 输出文件无法写入 | "无法写入输出文件,请检查权限" | 使用 touch 测试写入权限,更换输出路径 |
六、FAQ 反模式
6.1 常见坑
| 坑点 | 错误做法 | 正确做法 |
|------|----------|----------|
| 千分位混淆 | 把 1,200 当作 1.2 处理 | 根据上下文判断:$1,200 是 1200 美元,1,200 单独出现时标记为 medium 置信度 |
| 欧洲数字格式 | 把 1.234,56 当作 1.23456 | 识别为欧洲格式的 1234.56,标记为 medium 置信度 |
| 币种符号缺失 | 看到 500 就默认是人民币 | 无币种符号时标记为 low 置信度,输出 [需核实:币种] |
| 中文金额单位 | 忽略"万""亿"等中文单位 | 识别 5万 为 50000,3.2亿 为 320000000 |
| 混合文本干扰 | 把日期 2024.05.01 中的数字当金额 | 仅识别带币种符号或明确金额单位的数字 |
6.2 反模式对照表
| 反模式 | 问题 | 推荐替代 |
|--------|------|----------|
| 直接拼接原始文本到输出 | 下游系统无法解析 | 始终输出结构化 JSON |
| 忽略置信度直接使用 | 错误数据进入下游 | 先过滤 low 置信度记录 |
| 修改原始文件 | 数据不可追溯 | 输出到新文件,保留原文件 |
| 猜测缺失币种 | 产生错误数据 | 使用 [需核实:币种] 占位 |
| 一次性处理超大文件 | 内存溢出 | 分批处理,每批不超过 10000 行 |
七、渐进式披露
7.1 速查卡(30秒上手)
输入文本 → 提取金额 → 标准化 → 输出JSON
7.2 新手路径(5分钟掌握)
- 准备一段包含金额的文本
- 运行
acts as money --input "你的文本" - 查看输出的 JSON 结果
- 若置信度为
low,人工核对原始文本
7.3 进阶路径(深入使用)
- 学习 CSV 批量处理:
--file+--column参数 - 掌握置信度门控机制,建立数据质量检查流程
- 理解欧洲数字格式与千分位规则,处理国际化数据
- 结合下游系统,将标准化金额直接导入数据库或报表工具
7.4 参数速查表
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|------|------|------|--------|------|
| --input | string | 二选一 | 无 | 待处理的文本内容 |
| --file | string | 二选一 | 无 | 待处理的CSV文件路径 |
| --column | string | 否 | 无 | CSV中金额所在的列名 |
| --output | string | 否 | 标准输出 | 结果输出文件路径 |
| --format | string | 否 | json | 输出格式(json / csv) |
| --group-by | string | 否 | 无 | 按币种分组输出 |
| --normalize | boolean | 否 | false | 是否统一金额格式 |
| --selftest | boolean | 否 | false | 运行自检 |
| --version | boolean | 否 | false | 显示版本信息 |
八、使用示例
8.1 单条文本
acts as money --input "订单金额:$2,500.00,已付定金 ¥800,尾款 €1,700"
输出:
{
"status": "success",
"count": 3,
"results": [
{"index": 1, "amount": 2500.00, "currency": "USD", "original": "$2,500.00", "confidence": "high"},
{"index": 2, "amount": 800.00, "currency": "CNY", "original": "¥800", "confidence": "high"},
{"index": 3, "amount": 1700.00, "currency": "EUR", "original": "€1,700", "confidence": "high"}
]
}
8.2 CSV文件处理
acts as money --file expenses.csv --column amount --output cleaned_expenses.csv
8.3 按币种分组
acts as money --input "收入:$1000,支出:¥500,投资:€200" --group-by currency
输出:
{
"status": "success",
"groups": {
"USD": [{"amount": 1000.00, "confidence": "high"}],
"CNY": [{"amount": 500.00, "confidence": "high"}],
"EUR": [{"amount": 200.00, "confidence": "high"}]
}
}
九、自检与版本
9.1 自检命令
acts as money --selftest
自检内容:
- 基本金额识别(
$100、¥200、€300) - 千分位格式(
1,000、10,000.50) - 欧洲格式(
1.234,56) - 中文单位(
5万、3.2亿) - 无币种金额(
500→ low 置信度)
9.2 版本信息
acts as money --version
输出:acts-as-money version 1.0.0
十、用户协议
<!-- user-agreement-injected -->使用本 Skill 即表示您同意以下条款:
-
责任承担:使用者应自行承担使用本 Skill 的全部责任。因使用本 Skill 产生的任何直接或间接损失,Skill 作者及贡献者不承担任何责任。
-
禁止反向工程:禁止对本 Skill 进行反向工程、反编译、破解、篡改或试图提取源代码(除非适用法律允许)。
-
合规使用:使用者应确保使用本 Skill 的行为符合当地法律法规及平台规定。
-
数据安全:使用者应对输入数据的合法性、合规性负责。本 Skill 不存储、不传输任何用户数据至第三方。
-
无担保声明:本 Skill 按"现状"提供,不附带任何明示或暗示的担保,包括但不限于适销性、特定用途适用性和非侵权性的担保。
十一、许可证(License)
<!-- professional-license-embedded -->MIT License
版权所有 (c) 2024 数据工坊
特此免费授予任何获得本软件及相关文档文件(以下简称"软件")副本的人士使用本软件的权利,包括但不限于使用、复制、修改、合并、出版、分发、再许可和/或出售软件副本的权利,并允许向其提供软件的人士这样做,但须满足以下条件:
上述版权声明和本许可声明应包含在软件的所有副本或重要部分中。
本软件按"现状"提供,不附带任何明示或暗示的担保,包括但不限于适销性、特定用途适用性和非侵权性的担保。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论是在合同诉讼、侵权或其他方面,由软件或软件的使用
微信扫一扫