基于Python的报告自动化工具开发问询:文本编辑模块实现困境
ChatGPT反馈文本编辑功能实现方案
核心数据结构设计
先把图片、标签、ChatGPT文本做关联绑定,确保编辑操作能精准对应到目标图片:
- 用Python类封装每个图片的元数据:
class ImageReportItem: def __init__(self, img_path, tag, raw_gpt_text): self.img_path = img_path self.tag = tag self.raw_gpt_text = raw_gpt_text # 保存ChatGPT原始输出,用于恢复 self.edited_text = raw_gpt_text # 编辑后的文本,初始等于原始文本 - 遍历图片文件夹时,生成
ImageReportItem列表,后续所有编辑操作都基于这个列表。
编辑功能实现路径
根据工具使用场景选择对应方案:
1. 命令行交互式编辑(轻量快速)
适合无GUI需求的场景,通过命令行菜单实现选择、修改、删除操作:
- 先列出所有带标签的图片条目,显示编号、标签、文本预览;
- 用户输入编号选择要编辑的条目,提供操作选项:修改文本、删除文本片段、添加内容、恢复原始文本、调用ChatGPT重写;
- 用
prompt_toolkit库实现多行文本输入(默认input()仅支持单行,该库更适合长文本编辑)。
示例代码片段:
from prompt_toolkit import prompt def edit_item(item): print(f"\n当前编辑(标签:{item.tag}):") print(f"原始文本:{item.raw_gpt_text}") print("输入新文本(按Ctrl+D结束输入):") new_text = prompt(multiline=True, default=item.edited_text) item.edited_text = new_text # 调用示例:遍历item_list,让用户选择编号 for idx, item in enumerate(item_list): print(f"{idx+1}. 标签[{item.tag}]:{item.img_path} - {item.edited_text[:50]}...") selected_idx = int(input("请输入要编辑的条目编号:")) - 1 edit_item(item_list[selected_idx])
2. GUI可视化编辑(直观易用)
适合面向非技术用户的场景,用Tkinter/Streamlit快速搭建界面:
- 用表格展示图片缩略图、标签、当前文本,每行提供「编辑」「重写」「恢复」按钮;
- 点击「编辑」弹出文本编辑器(比如Tkinter的
Text组件),支持多行编辑、快捷键操作; - 点击「重写」直接调用已对接的ChatGPT API,传入当前文本的修改需求(如“重写这段描述,更专业”),替换编辑框内容。
3. 批量文件导入导出(高效批量修改)
适合需要大量编辑的场景:
- 将所有
ImageReportItem的标签、原始文本、编辑后文本导出为CSV或Markdown文件; - 用户用本地编辑器(如VS Code、Excel)批量修改文本;
- 编写导入逻辑,将修改后的文件内容同步回
ImageReportItem列表,自动校验标签和图片的对应关系。
关键细节处理
- 保留原始文本:始终保存ChatGPT的原始输出,避免编辑后无法恢复;
- 标签关联校验:编辑时显示对应图片的路径(命令行)或缩略图(GUI),防止编辑错条目;
- 重写功能集成:在编辑界面增加「调用ChatGPT重写」按钮,直接复用已有的API对接代码,传入当前文本和重写指令,更新编辑后文本。
内容的提问来源于stack exchange,提问作者DJ-coding
相关产品推荐
相关产品推荐

