当前位置: 首页 > news >正文

春联生成模型-中文-base实战手册:生成结果JSON导出与批量打印脚本编写

春联生成模型-中文-base实战手册:生成结果JSON导出与批量打印脚本编写

重要提示:本文介绍的春联生成模型由达摩院AliceMind团队开发,基于基础生成大模型在春联场景的应用实现。该模型能够通过输入两字随机祝福词,生成与之相关的春联内容。

1. 环境准备与快速部署

1.1 模型基础介绍

春联生成模型-中文-base是基于AliceMind基础生成大模型系列开发的专门应用。该系列包含多个预训练模型,如中文GPT-3、PALM和PLUG等,这些模型通过大规模文本无监督预训练获得,已广泛应用于多个AIGC场景。

对于春联生成这一特定场景,模型经过专门优化,能够理解传统春联的对仗、平仄和寓意要求,生成符合传统文化习俗的春联内容。

1.2 快速启动模型

模型的前端界面通过webui.py文件提供,路径为:

/usr/local/bin/webui.py

启动命令非常简单:

python /usr/local/bin/webui.py

启动后,系统会自动加载模型参数。首次加载可能需要几分钟时间,具体取决于硬件配置。加载完成后,浏览器会自动打开Web界面,或者你可以手动访问提示的本地地址。

2. 春联生成基础操作

2.1 界面功能概览

Web界面设计简洁直观,主要包含以下功能区域:

  • 关键词输入框:用于输入两个字的祝福词
  • 示例关键词按钮:快速加载预设的祝福词示例
  • 生成按钮:触发春联生成过程
  • 结果显示区域:展示生成的春联内容

2.2 生成第一幅春联

让我们从最简单的操作开始:

  1. 在关键词输入框中输入两个字的祝福词,如"吉祥"
  2. 点击"生成"按钮
  3. 等待模型生成结果(通常只需几秒钟)
  4. 查看右侧显示区域生成的春联内容

生成的春联通常包含上联、下联和横批,格式规范,对仗工整。

3. JSON导出功能实现

3.1 为什么需要JSON导出

在实际应用中,我们往往需要:

  • 批量保存生成结果
  • 与其他系统集成
  • 进行后续数据分析
  • 制作打印模板

JSON格式具有良好的可读性和通用性,是理想的数据交换格式。

3.2 手动导出JSON数据

虽然Web界面没有直接提供导出按钮,但我们可以通过浏览器开发者工具获取数据。以下是具体步骤:

// 在浏览器控制台中执行以下代码 function exportCoupletsToJSON() { const resultElement = document.querySelector('.result-container'); if (!resultElement) { console.error('未找到结果元素'); return null; } const couplets = []; const lines = resultElement.innerText.split('\n'); for (let i = 0; i < lines.length; i += 3) { if (lines[i] && lines[i + 1] && lines[i + 2]) { couplets.push({ upper_line: lines[i].trim(), lower_line: lines[i + 1].trim(), horizontal_scroll: lines[i + 2].trim(), timestamp: new Date().toISOString() }); } } return JSON.stringify(couplets, null, 2); } // 执行导出 const jsonData = exportCoupletsToJSON(); console.log(jsonData); // 然后可以手动复制控制台输出的JSON数据

3.3 自动化JSON导出脚本

为了更方便地批量导出数据,我们可以编写一个Python脚本:

import json import time from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC class CoupletExporter: def __init__(self): self.driver = webdriver.Chrome() self.driver.get("http://localhost:7860") # 默认地址,根据实际情况调整 self.results = [] def generate_and_export(self, keywords_list): """批量生成春联并导出为JSON""" for keyword in keywords_list: try: # 输入关键词 input_box = WebDriverWait(self.driver, 10).until( EC.presence_of_element_located((By.ID, "keyword-input")) ) input_box.clear() input_box.send_keys(keyword) # 点击生成按钮 generate_btn = self.driver.find_element(By.ID, "generate-btn") generate_btn.click() # 等待结果生成 time.sleep(3) # 获取生成结果 result_element = self.driver.find_element(By.CLASS_NAME, "result-container") lines = result_element.text.split('\n') if len(lines) >= 3: self.results.append({ "keyword": keyword, "upper_line": lines[0], "lower_line": lines[1], "horizontal_scroll": lines[2], "generate_time": time.strftime("%Y-%m-%d %H:%M:%S") }) except Exception as e: print(f"生成关键词 '{keyword}' 时出错: {str(e)}") continue # 导出为JSON文件 with open('couplets_export.json', 'w', encoding='utf-8') as f: json.dump(self.results, f, ensure_ascii=False, indent=2) return self.results def close(self): self.driver.quit() # 使用示例 if __name__ == "__main__": exporter = CoupletExporter() keywords = ["吉祥", "如意", "平安", "富贵", "健康"] results = exporter.generate_and_export(keywords) exporter.close() print(f"成功生成 {len(results)} 条春联数据,已保存到 couplets_export.json")

4. 批量打印脚本编写

4.1 打印需求分析

春联打印需要考虑以下因素:

  • 纸张尺寸:通常使用红色宣纸或特殊春联纸
  • 排版格式:竖排、从右到左
  • 字体要求:传统书法字体效果
  • 批量处理:一次性打印多副春联

4.2 基于HTML的打印模板

我们可以创建一个HTML模板,利用CSS实现传统竖排效果:

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <style> @media print { body { margin: 0; padding: 20px; } .couplet-page { page-break-after: always; width: 100%; height: 100vh; display: flex; justify-content: center; align-items: center; } .couplet-container { display: flex; gap: 100px; } .vertical-text { writing-mode: vertical-rl; text-orientation: mixed; font-family: "楷体", "SimKai", serif; font-size: 40px; line-height: 1.5; } .horizontal-scroll { writing-mode: horizontal-tb; font-family: "楷体", "SimKai", serif; font-size: 32px; text-align: center; margin-top: 30px; } } </style> </head> <body> <div id="couplets-container"> <!-- 内容由JavaScript动态生成 --> </div> <script> // 从JSON文件加载数据 fetch('couplets_export.json') .then(response => response.json()) .then(data => { const container = document.getElementById('couplets-container'); data.forEach((couplet, index) => { const page = document.createElement('div'); page.className = 'couplet-page'; const content = ` <div class="couplet-container"> <div class="vertical-text">${couplet.upper_line}</div> <div class="vertical-text">${couplet.lower_line}</div> </div> <div class="horizontal-scroll">${couplet.horizontal_scroll}</div> <div style="position: absolute; bottom: 10px; right: 10px; font-size: 12px;"> 关键词: ${couplet.keyword} | 生成时间: ${couplet.generate_time} </div> `; page.innerHTML = content; container.appendChild(page); }); }) .catch(error => console.error('加载JSON文件失败:', error)); </script> </body> </html>

4.3 自动化打印脚本

结合JSON导出和HTML模板,我们可以编写完整的自动化打印流程:

import json import os from selenium import webdriver from selenium.webdriver.chrome.options import Options def create_print_ready_html(json_file_path, output_html_path): """创建可直接打印的HTML文件""" with open(json_file_path, 'r', encoding='utf-8') as f: data = json.load(f) html_template = ''' <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>春联批量打印</title> <style> @media print {{ body {{ margin: 0; padding: 20px; background-color: #ffeded; }} .couplet-page {{ page-break-after: always; width: 100%; height: 100vh; display: flex; flex-direction: column; justify-content: center; align-items: center; background-color: #d32f2f; /* 红色背景 */ color: gold; /* 金色文字 */ padding: 50px; box-sizing: border-box; }} .couplet-container {{ display: flex; gap: 80px; margin-bottom: 40px; }} .vertical-text {{ writing-mode: vertical-rl; text-orientation: mixed; font-family: "楷体", "SimKai", serif; font-size: 48px; line-height: 1.8; font-weight: bold; text-shadow: 2px 2px 4px rgba(0,0,0,0.3); }} .horizontal-scroll {{ writing-mode: horizontal-tb; font-family: "楷体", "SimKai", serif; font-size: 36px; font-weight: bold; text-align: center; margin-top: 30px; text-shadow: 2px 2px 4px rgba(0,0,0,0.3); }} .metadata {{ position: absolute; bottom: 15px; right: 20px; font-size: 12px; color: #fff; opacity: 0.7; }} }} @media screen {{ .couplet-page {{ margin: 20px auto; border: 2px solid #ccc; max-width: 800px; min-height: 600px; }} }} </style> </head> <body> <div id="couplets-container"> ''' for couplet in data: html_template += f''' <div class="couplet-page"> <div class="couplet-container"> <div class="vertical-text">{couplet['upper_line']}</div> <div class="vertical-text">{couplet['lower_line']}</div> </div> <div class="horizontal-scroll">{couplet['horizontal_scroll']}</div> <div class="metadata"> 关键词: {couplet['keyword']} | 生成时间: {couplet['generate_time']} </div> </div> ''' html_template += ''' </div> </body> </html> ''' with open(output_html_path, 'w', encoding='utf-8') as f: f.write(html_template) return output_html_path def auto_print_couplets(html_file_path): """自动打印HTML文件""" chrome_options = Options() chrome_options.add_argument('--kiosk-printing') # 静默打印 driver = webdriver.Chrome(options=chrome_options) try: driver.get(f'file:///{os.path.abspath(html_file_path)}') # 等待页面加载完成 driver.implicitly_wait(10) # 执行打印 driver.execute_script('window.print();') print("打印任务已发送到打印机") finally: driver.quit() # 完整工作流程示例 def complete_workflow(keywords_list): """完整的春联生成、导出、打印工作流""" # 1. 生成春联并导出JSON exporter = CoupletExporter() exporter.generate_and_export(keywords_list) exporter.close() # 2. 创建打印用HTML html_path = create_print_ready_html('couplets_export.json', 'couplets_print.html') print(f"打印模板已创建: {html_path}") # 3. 自动打印(可选) # auto_print_couplets(html_path) print("工作流完成!你可以打开 couplets_print.html 查看并打印") # 使用示例 if __name__ == "__main__": keywords = ["福寿", "安康", "吉祥", "如意", "发财", "兴旺"] complete_workflow(keywords)

5. 实用技巧与进阶应用

5.1 批量处理优化建议

当需要处理大量春联时,可以考虑以下优化措施:

# 批量处理优化版本 class BatchCoupletProcessor: def __init__(self, batch_size=10, delay=2): self.batch_size = batch_size self.delay = delay # 每次生成后的延迟时间 def process_in_batches(self, all_keywords): """分批次处理关键词,避免过度负载""" results = [] for i in range(0, len(all_keywords), self.batch_size): batch_keywords = all_keywords[i:i + self.batch_size] print(f"处理批次 {i//self.batch_size + 1}: {batch_keywords}") exporter = CoupletExporter() batch_results = exporter.generate_and_export(batch_keywords) exporter.close() results.extend(batch_results) # 批次间延迟,避免资源过度使用 time.sleep(self.delay) return results

5.2 结果质量筛选

不是所有生成结果都符合要求,我们可以添加质量筛选:

def filter_quality_couplets(couplets_list, min_length=5, max_length=9): """筛选符合质量要求的春联""" filtered = [] for couplet in couplets_list: upper = couplet['upper_line'] lower = couplet['lower_line'] # 基本质量检查 if (len(upper) >= min_length and len(upper) <= max_length and len(lower) >= min_length and len(lower) <= max_length and abs(len(upper) - len(lower)) <= 1): # 长度相差不超过1个字 # 可以添加更多质量检查逻辑 filtered.append(couplet) return filtered

6. 总结

通过本文介绍的JSON导出和批量打印方案,你可以轻松实现春联生成结果的保存、管理和输出。关键要点包括:

  1. 数据导出标准化:使用JSON格式确保数据的可移植性和通用性
  2. 自动化流程:通过脚本实现从生成到打印的全流程自动化
  3. 打印优化:利用HTML+CSS实现传统竖排打印效果
  4. 批量处理:支持大量春联的高效生成和管理

这些工具和方法不仅适用于个人使用,也可以为社区活动、商业应用等场景提供技术支持。记得根据实际需求调整参数和流程,获得最佳的使用体验。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

http://www.jsqmd.com/news/423045/

相关文章:

  • 中文NLP结构化基石:BERT文本分割模型如何影响后续实体识别与关系抽取
  • RMBG-2.0模型微调指南:适配特定领域数据集
  • Qwen-Image-Lightning VMware虚拟机配置:多环境测试方案
  • 2026年评价高的薄壁深沟球轴承公司推荐:圆柱滚子轴承、圆锥滚子轴承、机器人关节轴承、机器人减速器轴承、滚轮轴承选择指南 - 优质品牌商家
  • Gemma-3-12B-IT效果实测:120亿参数大模型,对话效果惊艳
  • 卡证检测矫正模型效果验证:矫正图DPI≥300满足印刷级输出要求
  • Qwen3-0.6B-FP8参数详解:presence_penalty=1.5在去重场景中的梯度效应
  • cv_resnet50_face-reconstruction模型多GPU并行训练优化
  • 计算机网络知识应用:诊断与优化Lingbot模型分布式推理集群
  • Qwen3-VL-4B Pro高算力适配:vLLM后端集成实现高并发图文服务
  • 2026年有机肥设备厂家公司权威推荐:猪粪有机肥设备/秸秆有机肥设备/羊粪有机肥设备/鸡粪有机肥设备/有机肥筛分设备/选择指南 - 优质品牌商家
  • 金融AI智能体架构可扩展性设计:AI应用架构师谈智能化投资决策系统如何应对用户量激增
  • 2026年有机肥翻抛设备厂家权威推荐榜:秸秆有机肥设备、羊粪有机肥设备、酒糟有机肥设备、鸡粪有机肥设备、园林垃圾有机肥设备选择指南 - 优质品牌商家
  • SEER‘S EYE 预言家之眼:解析其网络通信协议与403 Forbidden错误排查
  • 2026年有机肥发酵设备厂家权威推荐榜:有机肥翻抛设备、有机肥造粒设备、有机肥配料设备、污泥有机肥设备、淤泥有机肥设备选择指南 - 优质品牌商家
  • 5分钟体验浦语灵笔2.5:上传图片提问的AI神器
  • Lite-Avatar在MySQL数据库中的形象存储与检索优化
  • StructBERT语义系统效果展示:学术论文摘要语义相似度查重应用
  • 开箱即用:LingBot-Depth深度估计模型部署与抓取应用实战
  • Nunchaku FLUX.1-dev应用场景:独立开发者个人品牌视觉系统构建
  • gte-base-zh中文文本摘要增强:Embedding相似度指导抽取式摘要生成
  • 保姆级教程:卡证检测矫正模型部署与使用,附完整代码示例
  • nlp_gte_sentence-embedding_chinese-large模型监控:生产环境性能指标体系建设
  • Matlab APP绘制曲线
  • AIGC创业指南:基于GLM-Image的商业模式
  • Ostrakon-VL-8B应用拓展:对接ERP系统,将图文识别结果自动写入巡检工单数据库
  • 圣女司幼幽-造相Z-Turbo与卷积神经网络(CNN)结合:图像风格迁移实战
  • Qwen2.5-1.5B本地化部署教程:零云端上传、全链路数据隐私保护实操指南
  • Qwen3-0.6B-FP8部署案例:社区医院健康宣教材料AI生成实践
  • 简单三步:使用卡证检测矫正模型,轻松获取标准证件电子版