news 2026/9/7 11:19:20

AI钱币鉴定落地实践:大模型+Agent工作流如何辅助识别与信息结构化

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI钱币鉴定落地实践:大模型+Agent工作流如何辅助识别与信息结构化

最近把 Claude 的 Agent 能力跟智谱 GLM-5.1 大模型接到一起,做了一个 AI 钱币鉴定的体验 Demo。先说结论:这个方向能跑通,但它不等于专业鉴定。它真正擅长的是把“这张钱币图片里有什么”转成结构化信息,再结合资料库给出参考结果,帮你把查目录、对版别、估行情的重复劳动省掉。

这篇文章适合两类人。一类是钱币收藏新手,想知道 AI 能不能帮自己快速认识手里的币;另一类是正在做图像识别、Agent 工作流的开发者,想找一个比较完整的落地样例。最值得关注的点不是某个模型“强不强”,而是完整链路怎么设计:图片输入、视觉理解、知识库检索、结构化输出、失败兜底。

先说清楚一件事:我用它跑通的是“辅助鉴定”,不是“权威鉴定”。真伪、品相评分、精确估价这些事,静态图片本身就给不了足够证据。下面按实际落地顺序拆一遍。

1. AI 钱币鉴定系统到底在解决什么

1.1 传统流程里最花时间的不是“看”,而是“查”

一枚普通古钱币或者老银元拿到手里,新手通常要判断几件事:

  • 品种是什么,例如“光绪元宝”“袁大头”“乾隆通宝”。
  • 年号、面值、材质、直径、重量。
  • 属于哪个版别,例如“大字版”“小字版”“甘肃版”。
  • 品相如何,有没有明显磕碰、划痕、包浆。
  • 当前市场参考价大概在什么区间。

这里面最耗时的不是第一眼“看”,而是后面反复“查”。新手不认识版别,就要去翻目录、问人、搜图对比。老手虽然认得多,但遇到冷门品种也要翻资料。

AI 鉴定的价值就在这里:先用多模态大模型读出币面可观察的信息,再让 Agent 去资料库里找候选品种,最后把结果整理成一张可以快速阅读的卡片。它替代的是“初步资料检索”,不是“最终拍板”。

1.2 这套 Demo 的协作方式

这个 Demo 里我用了两个角色:

  • 智谱 GLM-5.1 大模型负责视觉理解。它看钱币图片,描述币面文字、年号、图案、面值和材质特征。
  • Claude 的 Agent 能力负责调度和判断。它拿到文字描述后,提取关键实体,调用知识库工具,最后汇总输出。

为什么不用一个模型一步到位直接给结论?因为多模态模型直接回答“这是什么币、值多少钱”时,很容易把“看起来像”讲成“一定是”。幻觉来源很多:图片不清晰、特征不明显、训练数据里同品种图片太多。

所以更稳的做法是:先让视觉模型输出“可见事实”,再做实体抽取,再查资料库,最后才生成鉴定卡片。每一层都能检查和干预。

1.3 实际能力边界

这套方案能做的事情,我实测下来大概是这样:

能力说明
常见币种识别对清晰、常见品种,准确率较高
版别候选推荐能从知识库给出多个候选,按相似度排序
信息整理把散乱描述变成统一字段,方便录入
批量初筛对大量图片做第一轮分类,适合目录整理
价格参考只能给区间,且需要人工确认行情来源
真伪判断对高仿、改刻、修补币基本不可靠
品相评分只能描述明显缺陷,不能替代评级标准

开头不要期待过高。真正跑起来后你会发现,最有用的不是“它能准确说出这是哪一枚币”,而是“它能帮你把候选范围从几千种缩小到两三种”。

2. 跑通 Demo 前需要准备哪些条件

2.1 模型接入方式:API 优先,本地可作替换

智谱 GLM-5.1 大模型我直接走官方开放平台 API,这样最快,不用先折腾显卡和依赖。配套的 Claude Agent 也走官方 SDK,或者用支持相同调用方式的模型网关。简单说,你的代码只需要保存两个 API Key:一个给视觉大模型,一个给 Agent 编排模型。

如果你不希望图片出本地环境,可以改用本地部署的开源多模态模型,例如用 Ollama 拉起支持视觉能力的模型。这样图片隐私性更好,不用传外部接口。但代价是显存要求高,部署和调优时间长,而且不同小模型对币面小字的识别能力差距很大。新手不要一开始就钻进本地部署,先让云端 API 把流程跑通更重要。

2.2 图片素材和知识库

图片是这套系统的生命线。我建议准备至少正反面两张照片,放在同一个编号目录下。拍摄要求不复杂,但很关键:

  • 自然光或均匀灯光,不要强反光。
  • 背景用纯色,不要放一堆其他钱币。
  • 不要手指捏着币面,会遮挡图案。
  • 不要过度修图,不要锐化拉满。
  • 图片长边建议在 1024 到 1536 像素之间。

知识库可以先用 CSV 维护,字段至少包含:名称、年份、面值、材质、直径、重量、参考价、备注。数据量小的几十条也能玩,但要真正好用,至少需要覆盖你常接触的品种。

name,year,denomination,material,diameter,weight,price_range,note 光绪元宝户部当制钱十文,1903-1906,十文,铜,28,7.2,30-150,常见版 袁大头民国三年一元,1914,一元,银,39,26.6,900-1500,以品相为准

这个 CSV 后面会被 Agent 当作查询工具的数据源。

2.3 最小工程结构

我建议把项目拆成下面这样,而不是全部写在一个脚本里:

coin_agent/ ├── images/ │ ├── 001_obv.jpg │ └── 001_rev.jpg ├── knowledge/ │ └── coin_catalog.csv ├── output/ │ ├── result.jsonl │ └── report.md ├── main.py ├── config.json └── requirements.txt

images 放输入图片,knowledge 放知识库,output 放每次运行结果。这样做的理由是批量跑的时候更好排查:哪张图失败、哪条结果有问题、哪个阶段的输出异常,都能按目录定位。

3. 核心流程拆解:Agent 怎么把钱币图片变成鉴定卡

3.1 先让视觉模型“只描述,不判断”

这个 Demo 最关键的步骤,不是最后那句“它可能是某某币”,而是最开始让视觉模型老实描述。

我用的 Prompt 大概是这样的:

请仔细观察这张钱币图片,列出你确定的可见特征: 1. 币面上的文字、年号、面值; 2. 主要图案,例如龙、嘉禾、人像、建筑物; 3. 材质观感,例如银白色、铜黄色、包浆颜色; 4. 正面和反面的布局; 5. 任何明显缺陷,例如磕碰、划痕、穿孔。 只描述你能看到的内容,不要判断真伪,不要估价,不要推测版本。

这样写的目的是把“观察”和“判断”分开。视觉模型只负责看,不负责猜。观察越干净,后面的 Agent 就越不容易被带偏。

3.2 Agent 负责抽取实体和查资料

视觉模型返回文字描述后,Claude Agent 要做的第一件事是抽取结构化实体。例如从“正面写着光绪元宝,背面有龙纹,边缘有英文”里提取出:

  • 文字关键词:光绪元宝
  • 面值:十文或一元
  • 图案:龙纹
  • 可能材质:铜或银

然后是查知识库。Agent 通过工具函数读取 coin_catalog.csv,做关键词匹配和筛选。比如“光绪元宝”选中一批数据,“铜”再筛掉一批,“龙纹”再筛一轮,最后留下候选列表。

整个流程用伪代码表示就是这样:

def identify_coin(image_path): # 第一步:视觉模型生成可观察描述 observation = glm_vision_chat( image_path, prompt="只描述可见特征,不要判断真伪" ) # 第二步:Agent 抽取实体 facts = claude_agent_extract_entities(observation) # 第三步:查知识库 candidates = search_coin_db( catalog="knowledge/coin_catalog.csv", conditions=facts ) # 第四步:Agent 汇总鉴定卡 result = claude_agent_generate_card( observation=observation, candidates=candidates ) return result

这只是一个示意,不是完整可运行代码。你落地时可以直接用智谱和 Claude 的官方 SDK,把每一步封装成独立函数,方便日志记录和错误处理。

3.3 生成结构化的鉴定卡

最后的输出我推荐用 JSON,方便程序读取,也方便后续导出 Excel 或生成报告。

{ "id": "001", "observation": "正面有光绪元宝四字,背面有龙纹,边缘有英文,铜色明显。", "possible_names": [ "光绪元宝户部当制钱十文" ], "year_range": "1903-1906", "denomination": "十文", "material": "铜", "confidence": "中", "price_range": "30-150", "need_recheck": ["边齿", "重量", "直径"] }

字段里最值得关注的是confidenceneed_recheckconfidence表示知识库匹配和特征确认的程度,need_recheck表示哪些信息必须人工再看。这样设计的目的就是不让 AI 的输出显得绝对正确。

4. 关键参数和判断标准

4.1 图片预处理参数

图片不是越大越好。API 请求有体积限制,大图传输慢,还可能超出模型输入尺寸。小图又看不清年号和小字。

我一般先把图片长边压缩到 1024 到 1536 像素,JPEG 质量控制在 85 左右。如果一枚币上有特别小的暗记,再单独裁切局部图传给模型,而不是直接传整张高分辨率原图。

还要注意方向问题。有些手机拍的图自带 EXIF 旋转信息,直接读二进制给模型,可能会出现图片被转置的情况。建议先统一转成标准方向,再保存或上传。

4.2 大模型推理参数

鉴定任务和聊天任务不一样,不需要太多创造性。参数据我实测可以这样设置:

参数建议值原因
temperature0.1 ~ 0.3温度越低,回答越稳定,减少编造
top_p0.9和低温度配合,保留少量多样性
max_tokens800 ~ 1200输出鉴定卡足够,太长反而难解析
timeout60 秒图片请求比纯文本慢,要给够时间
retry2 ~ 3 次应对网络抖动和临时限流

Agent 的 system prompt 也要收窄。不要写“你是资深钱币专家”,因为这会诱导模型给出超出证据的判断。更好的写法是:

你是一个钱币鉴定流程的调度器。你只负责从视觉模型描述中提取事实、查询知识库、生成结构化报告。没有足够证据时,明确标注“待人工复核”。

4.3 并发和重试

不要一上来就开最大并发。先单条任务跑一遍,确认输入、输出、日志都正常。然后并发 2 到 3 条,观察有没有限流或超时。再根据模型服务商配额往上加。

失败重试用指数退避,例如第一次等 2 秒,第二次等 4 秒,第三次等 8 秒。连续失败就别再重试了,把任务写入失败队列,等人工检查。

4.4 判断标准

什么样的结果算成功?不是模型不报错就算成功,而是:

  • 视觉模型描述和图片内容一致,没有明显幻觉。
  • Agent 抽取的字段能被知识库检索到。
  • 候选列表里包含正确品种,或者至少没有完全离谱的选项。
  • 输出 JSON 能被正常解析。
  • 低置信度结果明确标出待复核项。

如果上面五条都满足,这套流程才算跑通。

5. 单条任务跑通之后再批量鉴定

5.1 文件命名和输入清单

批量处理前,先把图片命名规范好。我推荐用“编号_面别”的方式:

001_obv.jpg 001_rev.jpg 002_obv.jpg 002_rev.jpg

obv表示正面,rev表示背面。如果你有一批现代纪念币,还需要记录材质和重量信息,建议再建一个输入清单:

id,obverse,reverse,known_year,known_weight,remark 001,images/001_obv.jpg,images/001_rev.jpg,2023,,纪念币 002,images/002_obv.jpg,images/002_rev.jpg,,26.6,银元

命名规范的原因很简单:批量任务要把一枚币的正反面合并到同一条结果里,没有规范命名,程序没办法自动配对。

5.2 任务队列和断点续跑

批量任务不要把所有图片一次读进内存,也不要一个 for 循环跑到底。更稳的做法是维护一个任务状态列表,每个任务记录:

  • 输入路径
  • 当前状态:待处理、处理中、成功、失败
  • 模型返回结果
  • 错误信息
  • 耗时

每次处理完一条,就把结果追加写入output/result.jsonl。这样即使任务中断,已经处理的结果也不会丢。下次启动时,读取已完成的 ID,只处理未完成的即可。

失败任务单独写进output/failed.json,不要混在成功结果里。我见过很多批量任务最后输出一堆空文件,就是因为失败和数据丢失没有被分开处理。

5.3 输出报告和人工复核

批量跑完后,可以生成两种输出:

  • JSONL:给程序进一步处理。
  • Markdown/HTML 报告:给人快速阅读。

报告里一定要有“置信度低”的分组。我的建议是:高置信度结果直接归档,中等置信度结果人工抽查,低置信度结果全部人工复核。对于钱币这种有收藏价值的物品,不要直接用系统结果做交易决策。

5.4 批量任务常见问题

批量阶段最容易出的问题不是模型判断错,而是数据链错。比如图片路径写错、正反面配对错、知识库字段类型不一致、CSV 编码乱码。先跑两条验证整条链,再放开全量,能省很多排查时间。

6. 常见报错和排查顺序

6.1 典型问题对照表

现象优先检查常见处理
图片上传失败文件大小、格式、路径压缩到 10MB 以内,转成 JPEG/PNG
模型返回空图片是否过暗、过模糊提高分辨率或裁切局部
实体提取不准Prompt 不够具体让模型先列观察项,再抽字段
知识库零命中关键词不一致检查“光绪元宝”和“光绪”等别名
Agent 一直重试API Key、额度、超时单独测试工具调用,看返回错误码
JSON 解析失败模型输出了多余解释加 JSON Schema,要求只输出 JSON
本地模型 OOM显存不足降低图片尺寸,换小参数模型,开量化

6.2 系统化排查链路

遇到问题先别怀疑模型能力,按下面顺序查:

  1. 先直接调用视觉模型,输入单张图片,确认能生成正确描述。
  2. 再单独跑 Agent 实体抽取,确认字段完整。
  3. 然后查知识库关键词,确认能匹配到候选。
  4. 最后才整体联调,看是不是流程衔接问题。

多数“AI 鉴定不准”的案例,最后都卡在图片质量或知识库数据上,而不是模型本身。

6.3 本地部署大模型替代时的特别坑

如果换成本地部署的开源多模态模型,还会有两个额外问题:

  • OOM。常见表现是程序启动后跑几条任务突然退出,或者推理速度越来越慢。
  • 小字识别弱。币面年号往往很小,本地小模型容易看错。

解决思路是:降低图片输入尺寸,限制 batch size,不要多任务并发,优先用针对中文优化的小参数视觉模型。即便如此,本地模型的整体效果也可能弱于云端大模型,需要重新评估精度。

7. 这些边界会让你更清楚 AI 鉴定能做到哪一步

7.1 真伪鉴定不能只靠静态图片

钱币鉴定里最难的不是认品种,而是分真伪。高仿币可能图案、文字、重量都接近真品。包浆可以是人工做旧,边齿可以用机器复刻,这些细节在普通照片上很难体现。

如果只是拿手机随手拍一张图,AI 很可能把一枚高仿币识别成真品对应的品种,然后给出参考价。这个风险必须在前端提示。我的做法是在输出卡片上固定加一行:

本结果仅为图像辅助参考,不能作为真伪鉴定依据。如需交易或评级,请交由专业机构实物检测。

7.2 品相和估价要谨慎

估价是另一个容易翻车的地方。同一枚币,MS65 和 XF45 的价格可能差好几倍。AI 从图片上能看出明显划痕、磕碰、清洗痕迹,但无法准确判断压力、光泽、包浆状态。

所以估价字段永远用区间,并且加上“行情变化快,具体以成交为准”。不要让用户觉得 AI 报出来的数字就是市场价。

7.3 从 Demo 到生产还需要补什么

你如果想把这个 Demo 做成长期可用的工具,不能只优化模型,还要补这些工程项:

  • 标准化拍摄环境,减少图片质量波动。
  • 定期更新知识库,加入新发行的币种和行情变化。
  • 增加人工复核队列,低置信度结果强制走人工。
  • 记录每次模型的输入、输出、耗时、错误信息,方便复盘。
  • 注意数据合规,不要未经授权处理他人收藏品图片,也不要采集不可信来源的数据做训练。

我个人的建议是,先把这个方案当辅助工具用。真正落地时,最该盯住的不是模型有多强,而是输入图片质量、知识库覆盖率和失败重试机制。踩过几次之后你会明显感觉到,很多问题不是 AI 不行,是图和资料没准备好。把这两件事做扎实,AI 钱币鉴定才能变成一个稳定可用的初筛工具。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/7 11:18:42

从零跑通microduck:微型模型训练与部署的完整路线图

手把手教你从零跑通自己的 microduck:硬件、训练到部署的完整路线图 前阵子我一直在琢磨一个事:像 GitHub 上那些动辄几十亿参数的开源大模型,普通人根本没那个算力去碰。但你有没有想过,其实有一类叫 microduck 的微型模型项目&a…

作者头像 李华
网站建设 2026/9/7 11:18:37

四自由度棒料搬运机械手设计:从自由度取舍到电机选型全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/7 11:18:04

FurMark 1.6.5烤机全解读:从显卡压力测试原理到稳定性判断

简介:FurMark 1.6.5 是一款基于 OpenGL 的显卡压力测试与稳定性检测工具,面向硬件评测用户、游戏玩家及超频爱好者,用于在高负载渲染场景下检验显卡性能极限与稳定性。软件支持分辨率、反锯齿、窗口/全屏等参数自定义,可通过批处理…

作者头像 李华
网站建设 2026/9/7 11:17:13

符号链接实战:游戏存档跨盘迁移与C盘空间释放

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/7 11:16:35

Android 11分屏功能实现:从配置到代码实战

简介:Android 11/Q分屏功能实现Demo是一份面向Android开发者的示例工程,演示了在Android 11系统中开启、关闭分屏,以及在分屏模式下切换任务的具体实现,适合需要适配多窗口或多任务场景的进阶开发者参考。压缩包共514个文件&#…

作者头像 李华
网站建设 2026/9/7 11:16:01

2026国赛30天数学建模备赛全攻略:团队协作与真题实战

2026 年国赛(全国大学生数学建模竞赛)如果按往年的节奏来算,真正能完整利用的备赛时间,通常就是 30 天左右。这个周期不长不短,足够把一支队伍从“会建模、会写代码、会写论文”拉到“能在 72 小时内稳定产出完整论文”…

作者头像 李华