📋 题目描述
题目描述
NS-2026-00 星图识别员:校园票据分类
赛题任务
本题编号为 NS-2026-00。
任务介绍
星图识别员需要整理来自校园事务系统的图片资料。每张图片可能是报销发票、消费小票、课程表、社团海报、实验记录、校园通知、手写便签、申请表、会议纪要或成绩报告。参赛者需要根据图片内容预测其所属类别。
你的任务是:
- 使用训练图片和标签构建分类模型或规则系统。
- 对测试集中每张图片输出一个类别标签,标签必须属于
label_map.json中固定 10 类。 - 在不同拍摄设备、截图尺寸、轻微模糊、旋转、压缩和遮挡情况下保持稳定分类。
本题是 NeuronSpark 2026 的入门题。基础图像分类模型应能获得可观分数;更高分的方案可以尝试 OCR 文本特征、版面特征、图文特征融合、类别均衡采样和测试时增强。
赛题背景
文档图像分类是多模态智能系统中的基础任务。相比普通自然图像分类,文档图片同时包含视觉样式、文字内容、版面结构和拍摄质量变化。例如,发票和收据可能在视觉布局上相近,但 OCR 文本中的关键词、金额字段和表格结构能提供额外线索;社团海报和通知截图可能都包含大量文字,但颜色、标题位置和版式差异明显。
本题考察以下能力:
- 图像分类模型训练与验证。
- 文档图片增强和鲁棒性处理。
- 类别分布分析、混淆矩阵分析和错误样本复盘。
- 可选 OCR 文本特征与图像特征融合。
- 遵守 AI 使用边界并提供可复现 Writeup 证据。
本题不要求训练大型多模态模型,也不要求必须使用 OCR。OCR 仅作为提分路径之一。
类别列表
| label | 中文名 |
|---|---|
invoice | 报销发票 |
receipt | 消费小票 |
schedule | 课程或日程表 |
poster | 社团活动海报 |
lab_note | 实验记录 |
notice | 校园通知 |
handwritten_note | 手写便签 |
form | 申请或登记表 |
meeting_minutes | 会议纪要 |
grade_report | 成绩或学业报告 |
赛题数据
在本页下方“相关资源”处下载数据包,或在 https://modelscope.cn/datasets/SteamedFresh/NS-2026-A-data 处获取。
本题提供校园文档图片分类数据集,包含训练集图片、测试集图片、训练标签、合法标签表、示例提交和格式检查工具。测试集不提供标签。
NS-2026-00-data/├── train.csv├── test.csv├── label_map.json├── images/│ ├── train/│ └── test/├── example_submission/│ └── results.csv└── tools/ └── check_format.py数据说明
train.csv
| 字段 | 类型 | 含义 |
|---|---|---|
id | string | 训练样本 ID,与图片文件名对应 |
image | string | 图片相对路径 |
label | string | 类别标签 |
示例:
id,image,labelns26_b2ce9f2fa6ff2a6988feeeb3d1135126,images/train/ns26_b2ce9f2fa6ff2a6988feeeb3d1135126.jpg,formns26_245133677982114867e742813e96b310,images/train/ns26_245133677982114867e742813e96b310.jpg,formtest.csv
| 字段 | 类型 | 含义 |
|---|---|---|
id | string | 测试样本 ID |
image | string | 图片相对路径 |
示例:
id,imagens26_d5981fcee61ebb8104aee19ad19d71a8,images/test/ns26_d5981fcee61ebb8104aee19ad19d71a8.jpgns26_34a5bd019d7907385ad97a9d5a30385f,images/test/ns26_34a5bd019d7907385ad97a9d5a30385f.jpglabel_map.json
label_map.json 给出全部合法标签和中文说明。正式数据固定为 10 类:
{ "labels": [ "invoice", "receipt", "schedule", "poster", "lab_note", "notice", "handwritten_note", "form", "meeting_minutes", "grade_report" ], "label_names_zh": { "invoice": "报销发票", "receipt": "消费小票", "schedule": "课程或日程表", "poster": "社团活动海报", "lab_note": "实验记录", "notice": "校园通知", "handwritten_note": "手写便签", "form": "申请或登记表", "meeting_minutes": "会议纪要", "grade_report": "成绩或学业报告" }}数据规模
正式数据目标规模如下:
| 数据 | 规模 |
|---|---|
| 训练集 | 约 3600 张图片,10 类均衡 |
| 测试集 | 约 1200 张图片,10 类均衡 |
| 类别数 | 10 类 |
使用说明
参赛选手需要:
- 使用
train.csv和images/train/训练分类模型。 - 对
test.csv中列出的图片生成预测。 - 按
evaluation.md要求生成results.csv并压缩提交。
如需验证集,参赛选手应从训练集中自行划分。建议使用分层划分,并检查类别分布、相似样本和主要混淆类别。
注意事项
- 可以使用公开预训练图像模型、OCR 工具和开源库。
- 如果使用 OCR,需在 Writeup 中说明 OCR 工具、OCR 文本如何进入模型,以及至少 3 个 OCR 失败样例。
评测说明
提交说明
参赛选手需要对测试集中每张图片输出一个类别标签,并将结果保存为 results.csv。
提交文件必须压缩为:
NS-2026-00-answer.zip压缩包内必须只包含:
results.csv注意:压缩包内不得包含文件夹,仅包含 results.csv 文件本体。
提交格式
results.csv 必须包含表头 id,label。
示例:
id,labelns26_d5981fcee61ebb8104aee19ad19d71a8,invoicens26_34a5bd019d7907385ad97a9d5a30385f,poster格式要求:
- 必须包含且仅包含两列:
id、label。 - 必须覆盖
test.csv中全部测试样本。 - 每个测试样本 ID 必须出现一次且仅出现一次。
- 不得出现测试集之外的 ID。
label必须属于label_map.json中的 10 个合法标签。- CSV 文件建议使用 UTF-8 编码。
评测原理
平台会读取选手提交的 results.csv,与隐藏测试标签按 id 对齐,计算分类准确率:
Accuracy = 预测正确的样本数 / 测试样本总数得分计算
本题满分 500 分。主指标为 Accuracy,按以下锚点线性插值映射到分数:
| Accuracy | 得分比例 | 得分 |
|---|---|---|
0.00 | 0% | 0 |
0.70 | 20% | 100 |
0.80 | 40% | 200 |
0.88 | 60% | 300 |
0.92 | 80% | 400 |
0.95 及以上 | 100% | 500 |
例如,Accuracy 位于 0.80 到 0.88 之间时,分数会在 200 到 300 之间线性插值。
无效提交情况
以下情况将得到 0 分:
- 压缩包内没有
results.csv。 results.csv无法解析为 CSV。- 缺少必要列或包含额外列。
- 测试样本 ID 缺失、重复或出现非法 ID。
label不属于合法标签集合。- 文件中存在空标签、NaN、inf 或其它无法解析值。
评分脚本只输出总体分数和聚合指标,不会输出隐藏测试标签或逐样本对错信息。
条款
AI 协助规则
本题 AI 协助等级为 A1。
Writeup 补充要求
如果使用 OCR,Writeup 还必须说明 OCR 工具、OCR 文本如何进入模型,以及至少 3 个 OCR 失败样例。如果使用图像增强,需列出增强策略并说明是否改变文字可读性。
Writeup需包含最终提交压缩包文件 SHA256,指平台上传的 NS-2026-00-answer.zip 的 SHA256。
NS-2026-00 星图识别员:校园票据分类 — Writeup
1. 基本信息
-
队长用户名:Ayin
-
队伍名:L.Corp
-
题号:NS-2026-00
-
最终官网提交记录:
- 提交时间:2026-05-24 18:16:52
- 最终有效得分:500 分

2. 解题概述
本题任务是对 10 类校园文档图片(发票、小票、课程表、海报等)进行自动分类,选择以 OCR 文本提取 + 预训练中文文本分类模型 为核心方案。
具体流程为:使用 RapidOCR 对训练集和测试集图片进行批量 OCR 识别,将提取到的文本保存为 CSV;随后以 hfl/chinese-roberta-wwm-ext 作为骨干网络进行序列分类微调,最终对测试集完成推理并生成提交文件。
本地验证集准确率为 1.0(100%),线上提交准确率同为 1.0(1200/1200),获满分 500 分。
3. 关键改进与实验依据
-
将 PaddleOCR 替换为 RapidOCR PaddleOCR 在本机环境下依赖安装复杂、推理速度较慢。更换为 RapidOCR 后,环境配置更简洁,批量处理速度明显提升,OCR 阶段整体耗时大幅缩短。由于最终准确率均为满分,此改动的主要价值体现在工程效率上,未做精度消融。
-
使用中文预训练模型
hfl/chinese-roberta-wwm-ext相比通用多语言模型,该模型针对中文语料以全词掩码策略预训练,对中文文档文本的理解更准确。配合 OCR 提取的中文票据文本,分类效果直接达到满分,无需额外调参。
4. 验证与复现
运行环境
| 项目 | 信息 |
|---|---|
| 操作系统 | Windows 11 |
| Python 版本 | 3.12.11 |
| PyTorch 版本 | 2.7.1+cu128 |
| Transformers 版本 | 4.53.2 |
| RapidOCR 版本 | 3.8.1 |
| datasets 版本 | 4.8.5 |
| scikit-learn 版本 | 1.7.0 |
| CPU 型号 | AMD Ryzen 7 9800X3D 8-Core Processor |
| GPU 型号 | NVIDIA RTX 5090 |
| 内存 (RAM) | 48 GB |
| CUDA 版本 | 13.2 |
随机种子与核心超参数
- 随机种子:训练/验证集切分固定
random_state=42。 - 最大序列长度:
max_length=256 - 学习率:
3e-5 - 训练 Batch Size:
32 - 训练 Epoch:
5 - 优化器权重衰减:
0.01
预计运行时间与主要资源消耗
- OCR 提取阶段:预计耗时约 5-10 分钟,主要消耗 CPU 资源。
- 模型微调阶段:预计耗时约 1-2 分钟,GPU 显存占用约 6GB。
- 模型推理阶段:预计耗时约 5-10 秒。
数据预处理
使用了rapidocr对图片提取文本,具体代码见OCR.py,提前将训练集和测试集的文本提取出来
复现步骤
# 1. 安装依赖pip install rapidocr transformers datasets scikit-learn pandas torch tqdm
# 2. OCR 提取:对训练集和测试集图片提取文本,生成 train_text.csv 和 test_text.csvpython OCR.py
# 3. 训练分类模型:读取 train_text.csv,微调 chinese-roberta-wwm-ext,保存至 ./best_modelpython train.py
# 4. 推理并生成提交文件:读取 test_text.csv,输出 results.csvpython inference.pyOCR 失败样例说明
以下为使用 RapidOCR 处理时遇到的典型失败情形:
- 横线上填写文字是会识别出额外的下划线:id
, OCR 结果中下划线被误识别为文本的一部分,导致提取文本包含下划线字符。 - 日期和时间空格较小,识别连在一起:id
, OCR 结果中日期和时间被识别为一个连续字符串,缺乏空格分隔,不便于解析。 - 有部分文字超出图片边界:id
, OCR 结果中部分文字未被识别,因为它们位于图片边缘,导致提取文本不完整。
上述情况比较少见,即使 OCR 结果不完整,模型仍能通过残留关键词正确分类。
5.AI使用声明
全局说明
- 本队使用的AI工具:Gemini,Claude
- 主要用途:资料查询/代码辅助
逐题声明
NS-2026-00
- 官方等级:A1
- 实际使用:资料查询 / 代码辅助
- AI是否接触完整题面:否
- AI是否接触测试输入:否
- AI是否接触提交反馈或排行榜反馈:否
- AI是否生成或修改最终提交:否
- 是否使用商业API、闭源远程模型或托管式Agent:是
- 详细说明:使用了Gemini和Claude两个闭源远程模型,主要用于资料查询和代码辅助
Writeup 写作辅助声明
- 是否使用 AI 辅助撰写或润色:是
- 使用工具:Gemini
- 使用范围:语言润色 / Markdown 排版 / 根据本队实验记录整理段落
- AI 接触材料:代码片段 / Writeup要求
- AI 是否生成新的实验结果、验证分数或复现命令:否
- 人工核对方式:队伍成员核对事实、代码、日志、分数和复现命令
6. 最终提交与 SHA256
- 平台提交文件名称:NS-2026-00-answer.zip
- 平台提交时间:2026-05-24 18:16:52
- 最终有效得分:500
- 答案 ZIP SHA256(提交文件 SHA256):174cf538ec36c7e49612a46cca298bfd2cc458c54e667d801cec3985a6820ed4
- 内部关键文件 SHA256(提交包内部 SHA256):
- results.csv :606279f51025a8c4a73646859053fa375cb42227b31af3b490d6eae79759035e
7. 证据截图





7. 代码包
代码包包含以下文件:
Ayin-NS-00/├── README.md # 本文件,含复现步骤├── evidence/ # 证据截图目录├── submission/ # 最终提交副本└── src/ # 复现源码目录 相对路径需调整,因为模型文件放在了外面一层目录 ├── OCR.py # 步骤一:批量 OCR 文本提取 ├── train.py # 步骤二:微调文本分类模型 └── inference.py # 步骤三:批量推理,生成 results.csv如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时


















