news 2026/10/5 13:15:13

用Python批量生成画展展签:一间美术教室的数字化尝试

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用Python批量生成画展展签:一间美术教室的数字化尝试

画展筹备里最琐碎的活是展签:两百多张作品,每张要写姓名、班级、作品名、材料。这篇记录我用 Python 把展签和作品集做成批量生成的过程,从 CSV 数据整理到 PDF 排版,全部本地完成。

关键词:Python、reportlab、qrcode、数字化、批量生成

一、展签为什么值得写脚本

十月的画展开幕前,作品的拍摄和装裱由各班老师负责,展签落到我头上。粗算一下,八十多位学员,每人挑两三张,加起来两百多张作品。每张展签要写六项信息:作品编号、姓名、班级、作品名、材料、尺寸。

以前的做法是开一个 Word 模板,复制上一张,改名字,再复制,再改。一下午做几十张,改到眼花,还出过两次错——把同班两个孩子的作品名贴反了。展览现场家长看得仔细,这种错很影响观感。展签这种东西,数量大、字段固定、样式单一,正适合交给脚本。

二、先把数据收进一张 CSV

我定了一个 CSV 文件,六个字段:编号、姓名、班级、作品名、材料、尺寸。数据来源是各班老师发的报名表,格式五花八门,我花了一个晚上手工并进这张表。

没有用在线表格,原因是报名表里有孩子姓名,这类信息我不想放在任何第三方服务上。本地一个文件,改完即走,也方便脚本直接读。

三、展签生成:qrcode 加 reportlab

展签尺寸是 A6,一张 A4 纸排四张。每张展签左上角印一个二维码,内容就是作品编号加姓名的文本。现场作品多,万一两张靠在一起分不清归属,工作人员扫一下就能对回班级和姓名。

代码核心是两步。第一步用 qrcode 库把文本编码成图片,纠错等级选 M,印刷品上有划痕也能扫出来。第二步用 reportlab 排版,注册思源黑体的 TTF 文件,避免 PDF 里中文变成方块。字体只用开源的,版权这块我之前吃过亏,现在所有对外印刷品只碰开源字体。

生成两百多张展签,脚本跑了不到十秒。出错也不怕,改 CSV 里那一行,重跑一遍就行。

四、作品集:同一份数据换一个模板

展签之外,还给展厅做了一本作品集,按班级分组。用的还是那一份 CSV,换一个 reportlab 模板:每页留一张照片的位置(照片打印后粘贴),下方放作品信息。

数据只维护一份,两种输出,这是这次做法里我觉得最划算的地方。以前展签和作品集是两套东西,改一个名字要改两处,总有漏改的时候。

五、三个注意点

一是姓名隐私。作品集放在展厅入口,陌生人翻得到。我把作品集里的姓名改成"姓氏加编号"的写法,全名只出现在内部核对用的展签上。

二是打印样张。PDF 生成完先打一张样张,检查字体有没有缺字。生僻字是重灾区,有个孩子名字里带"燊",思源黑体有这个字,但换字体就可能漏。样张这一步不能省。

三是可重跑。所有中间产物只有一份 CSV 和两个脚本,明年办展,改数据就能再跑一遍,不用从头再来。

这件事本身没有技术难度,价值在于把一个手工、易错、每次重来的流程,变成一份数据加两个脚本。我所在的机构叫画绛集美术,做少儿美术教育快十年。

本文案例基于本人所在机构内部实践,仅供同业参考,不构成具体教学方案推荐

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

首字响应低至 280ms+动态慢思考!MiniMax M3.1-Flash-Preview 突袭 MCode:日常编程智能体迎来平民级“超跑小钢炮”

核心震撼导读:如果你以为顶级 AI 编程助手的进化终点依然是死磕数千亿巨无霸参数、让开发者在终端前焦急等待数秒首字响应,那么刚刚在 MiniMax Code (MCode) 爆发的这场“极速轻量突袭”,将彻底颠覆你对全栈编程智能体(Coding Age…

作者头像 李华
网站建设 2026/10/5 13:06:03

Large Language Models‘ Internal Perception of Symbolic Music

文章主要内容和创新点 主要内容 本文研究了大型语言模型(LLMs)对符号音乐的隐式建模能力。研究通过文本提示(描述音乐类型和风格的组合)让LLM生成符号音乐数据(MIDI文件),并通过识别和生成任务评估其效用: 数据集生成:使用GPT-4生成了包含13个音乐类型(源自TOP-MAG…

作者头像 李华
网站建设 2026/10/5 13:05:42

描述文件移除之后,设备为什么还在管理域里

先给结论:因为「受监督」和「装了描述文件」是两件独立的事。描述文件是设备侧的一份配置,可以删;受监督是设备的一个状态标志,由注册方式决定,删文件删不掉它。所以同一个移除动作,在不同注册方式的设备上…

作者头像 李华
网站建设 2026/10/5 12:57:53

机票预订系统详细设计落地的5大工程断点

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

作者头像 李华
网站建设 2026/10/5 12:56:07

Qt下载与安装避坑指南:版本选择、镜像配置与环境搭建

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

作者头像 李华
网站建设 2026/10/5 12:56:07

LeetCode-最大子数组和

题目:给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组是数组中的一个连续部分。 解法一:贪心算法解法二:分治算法本题解法及感悟&a…

作者头像 李华