婚礼前要准备迎宾牌、座位表、桌卡和宾客座位卡;名单一改,四种文件都得跟着更新。把宾客名单和座位规则整理好后,可以手工或让模型排座位,再用脚本检查,最后一次生成全部 PDF。我们用 200 位宾客、21 桌做过一套,排版脚本约 12 秒出完四种印刷物。

迎宾牌、座位表、桌卡和座位卡的成品预览迎宾牌、座位表、桌卡和座位卡的成品预览

需要自己跑脚本的话,先下载「婚礼印刷物脚本与样例」。ZIP 里有排座检查、可选的 AI 排座、PDF 排版三个脚本,另有示例名单、规则、信息和背景图;文件名以 s020_ 开头。演示姓名都是虚构的,正式使用前请替换。

你需要准备

内容 说明
宾客名单 姓名、分组、家庭编号;家庭编号相同表示需要坐在一起
座位规则 每桌人数、固定桌、不能同桌的人,以及桌数
设计素材 一张迎宾牌背景、一张配套卡片背景;也可先用 ZIP 里的示例图
电脑和字体 Mac、Python 和 uv、Adobe 思源宋体;示例脚本在 M1 Max 和 macOS 27 上整理
排座方式 不用 AI 也能手工排;若用云端模型,先确认是否可以把宾客名单交给该服务处理

200 人示例是 21 桌、每桌最多 10 人。你的桌数和规则要按酒店确认的实际情况填写,不能直接照搬样例。

第一步:整理宾客和座位规则

宾客表用 CSV 保存,列名按下面这样写:

name,group,family
张建国,新郎亲友,F1
刘桂英,新郎亲友,F1
李思琪,新娘亲友,F2

规则文件至少要写桌数、每桌人数、固定座位和不能同桌的组合:

{"per_table": 10, "tables": 21,
 "fixed": {"主桌": 1},
 "avoid": [["亲友甲", "亲友乙"]],
 "max_groups_per_table": 2}

先核对人数是否正好能放进这些桌子。把分组和家庭编号写清楚,再交给模型或人工排座;一场婚礼的家人关系和同桌禁忌由新人确认,模型无法替你判断。

第二步:准备两张风格一致的背景

可以先用 ZIP 里的 background_sign.jpg 和 background_cards.jpg 跑通流程。要另做一套视觉,先出迎宾牌背景,再参考它做桌卡和座位卡背景,能让颜色和装饰更接近。图像提示词例如:

竖版 2:3 婚礼迎宾牌背景,森系,米白色纸张质感,四角和边缘有淡雅尤加利叶与白玫瑰。中间 15% 到 85% 留出干净的浅色区域,供后期排字。不要任何文字、字母、数字和标志。
参考迎宾牌的米白纸张、尤加利叶和白玫瑰,生成横版桌卡背景,保持同一套配色和画风。装饰只放左上角和右下角,中间留出空白。不要文字、字母、数字和标志。

用生成工具时,具体入口和费用以你当前使用的官方产品为准。公开发布 AI 生成背景时,按发布平台要求主动声明并使用标识功能;不要故意删除或篡改作品携带的生成标识。

第三步:排座位并检查

你可以手工整理座位表,也可以把匿名化或已获许可的名单交给模型生成建议。工具包里的 s020_seat_llm.py 支持 Gemini API 和本机 Ollama:

export GEMINI_API_KEY="你的 Google Gemini API Key"
python3 s020_seat_llm.py gemini-3.8-flash s020_guests200.csv s020_rules.json s020_seats.csv

这会把名单和规则发送到 Google Gemini API;只有确认新人同意且服务条款符合你的使用场景时才用真实姓名。也可以在 Excel 里手工填写 s020_seats.csv,或者改用本机已安装的 Ollama 模型。API Key 申请和当前支持的模型见 Gemini 官方 API 文档。

不论座位由谁安排,都要用检查脚本核对:

python3 s020_seating.py s020_guests200.csv s020_rules.json s020_seats.csv

脚本会检查漏排、重排、名单外姓名、超桌数、超员、拆分家庭、固定桌和不能同桌等规则。发现问题时会列出姓名和原因;先修正 CSV,再检查到问题数为 0。检查器只能核对你写进规则的内容,不能判断亲友关系或代替新人确认。

第四步:生成四种印刷文件

先安装 Python 和 uv(见《装好 Python 和虚拟环境》)。从 Adobe 下载并解压思源宋体,将字体目录设置给脚本:

export SOURCE_HAN_SERIF_DIR="/你的字体目录/OTF/SimplifiedChinese"

复制并修改 s020_info.json,填入新人姓名、日期、酒店和颜色。将两张正式背景图、信息 JSON 和检查通过的座位 CSV 放在工具包文件夹,再运行:

uv run --with pillow --with lunardate --with pypinyin python s020_print_kit.py s020_info.json s020_seats.csv background_sign.jpg background_cards.jpg 印刷文件

生成的迎宾牌和座位表是 60×90 cm,桌卡是 A4 对折版,座位卡是 90×55 mm,每页 A4 排 10 张。示例使用的迎宾牌为 150 dpi,小件为 300 dpi。交给印刷店前,先让对方确认出血、纸张、颜色和文件要求;不同印厂的制版要求可能不同。

名单有改动时

先更新宾客表和座位规则,再重新排座、跑检查,最后重新生成 PDF。只增加一两位且座位已确认时,也可以手工修改座位 CSV,但仍要重新运行 s020_seating.py。不要只改座位卡而忘记更新座位表和桌卡。

交付前核对

  • 新人、宾客的姓名和称呼逐字对照确认表。
  • 家庭成员、主桌、不能同桌等安排由新人确认。
  • 座位表的人数和桌号与酒店最终桌数一致。
  • 打开 PDF 检查每页、边距、裁切线、日期和文字位置。
  • 交印前向印刷店确认是否需要出血或其他格式。

宾客名单含个人信息,只收制作所需字段,限制访问权限,按约定删除。若用云端模型处理名单,应先取得新人确认,并查看服务方的数据处理条款;不需要模型知道的家庭编号或真实姓名不要上传。

接单和交付

婚礼策划师、婚礼设计师可以把四种印刷物作为一套交付。先确认宾客数量、桌数、是否每人单独座位卡、背景设计数量、修改次数和印刷店要求,再报工期和费用。市场价格随地区和交付范围变化,先查看你所在平台的同类服务,再按设计、校对、改名单和文件整理时间估算。

常见问题

AI 排出的座位表可以直接交给酒店吗? 不可以。模型只提供建议;先让新人确认,再跑检查脚本。脚本检查不到名单里写错的名字或没有录入规则的关系。

没有 Gemini API Key 怎么办? 手工在表格里排座,或使用本机 Ollama;之后都运行同一个检查脚本。工具包附了样例输入和历史检查结果。

桌卡上有两个字的名字,座位表顺序会错吗? 脚本用 pypinyin 按姓氏拼音排序,并对一些常见多音字姓氏做了单独处理。遇到名单里的其他多音字姓氏,先检查排序,再按本人确认的读音补规则。

座位卡打印有白边怎么办? ZIP 中的示例模板没有额外出血。先向印刷店确认他们的裁切规范,再决定要不要调整文件;不要直接把重要文字移到边缘。

我们试了哪些工具

在 200 位宾客、21 桌和 5 条约束的样例里,2026 年 10 月测试的 Gemini 3.8 Flash 两次排座都通过检查;本机 Qwen3.8 27B 有 12 条规则问题,包括超出桌数、拆开家庭和把不能同桌的人排在一起。模型版本和表现会变,任何模型输出都应当重新检查。

工具和相关教程


本文的样例名单为脚本生成的虚构姓名,背景由图像模型生成。本文仅介绍制作流程,不构成法律意见。