云计算百科
云计算领域专业知识百科平台

把学校通知变成可执行清单,我用TextIn xParse做了一个通知行动台(附源码)

        学校活动通知很少只出现一次。先是一份 PDF 正式通知,然后是 Excel 分组表,班主任在群里补充雨衣和水杯,临近活动又因为天气改日期、改集合时间、改地点。每份消息单独看都不难,真正令人头疼的是:哪些旧要求仍然有效,哪些已经取消,我的孩子属于哪一组,今天究竟要做什么。

        这也是我做 NoticeAction 通知行动台的出发点。它不是把所有文字重新摘要一遍,而是把同一活动的多份材料放进一个上下文,找出版本变化,请用户确认关键差异,然后生成一份与孩子姓名、班级和参与状态相匹配的行动清单。每个结论还保留文件名、页码和原文片段,方便随时核对。

真正困难的不是让 AI 再总结一份通知,而是把多个版本、表格和截图合并成一份由用户确认、能够执行、能够追溯的个人清单。


一、为什么普通摘要不够

        如果只把四份材料拼在一起交给模型做摘要,结果可能读起来很顺,却仍然留下三个风险。第一,新旧日期会同时出现,摘要未必明确哪一个生效;第二,表格中的分组物资需要先找到孩子所在行,不能把整张表都变成个人待办;第三,“已交回执的不用重复提交”只是条件句,并不等于当前用户已经交了。

  • 版本问题需要显示“旧值 → 新值”,不能悄悄覆盖。
  • 分组问题需要结合姓名与班级,不能只识别表格文字。
  • 回执和费用这类事实需要用户确认,不能从模糊语句自动推断。
  • 结果必须指向原文件和原文,遇到疑问时能够追溯。

        因此,我把产品流程拆成三步:上传通知、确认变化、拿到清单。解析交给 xParse,版本合并和行动生成交给本地规则,关键选择交给用户。三个角色各做自己最擅长的事情。

从多格式通知到个人行动清单的完整流程

二、第一步 把同一活动的材料放在一起

        NoticeAction 当前支持 PDF、XLSX、PNG 和 JPG/JPEG。用户新建整理时填写孩子姓名、班级以及是否参加,再选择属于同一活动的材料。单文件限制为 10 MiB,同一活动最多 20 份,足够覆盖一个活动从正式通知到临时改期的常见材料量。

        项目内置了一组完全虚构的研学材料:正式通知 PDF、分组物资表 Excel、班主任补充说明截图和天气变更通知截图。示例学生是“林小满,三(2)班”。它们既覆盖正文、表格和图片文字,也覆盖了最关键的“后续通知只改一部分”场景。没有材料时,首页可以用 30 秒示例完整体验,不会占用真实解析额度。

上传页:PDF、Excel 与群聊截图可以混合选择

三、xParse 不是点缀 它是数据层

        浏览器把文件交给本机 Node.js 服务。本机服务先检查扩展名、Content-Type、大小和真实文件签名,再把原始文件发送到 TextIn xParse 同步解析接口。请求启用了文档层级、表格结构、页码和标题树,并保留后续证据定位需要的元素坐标。

const response = await fetch(XPARSE_ENDPOINT, {
method: 'POST',
headers: {
'x-ti-app-id': appId,
'x-ti-secret-code': secretCode,
accept: 'application/json',
},
body: formData,
});

        这一步的价值不只是 OCR。PDF 里的段落、Excel 里的行列、截图里的文字,最终都进入一套可比较的结构;页码、元素 ID 和坐标还能成为证据。供应商返回后,服务端会做响应大小和结构上限校验,只保留项目真正需要的字段。xParse 负责“把文档看清楚”,后面的业务判断仍由本地规则完成。

NoticeAction 技术链路:解析、清洗、合并、确认与输出

四、第二步 先确认变化 再生成结果

        本地规则按材料标注的发布时间排序;没有发布时间时,使用解析完成顺序作为稳定兜底。完整通知建立基线,后续补充材料只更新它明确改动的字段,未提到的旧要求继续保留。这样可以避免一张改期截图把正式通知中的服装、水杯和安全要求全部覆盖掉。

        演示中,系统找出 5 项版本变化:活动日期从 10 月 23 日改为 10 月 26 日,集合时间从 07:30 改为 08:00,地点从学校东门改为体育馆北门,加厚垃圾袋从“每组 2 只”变为“不用准备”,并新增“不能参加改期活动时在指定时间前联系班主任”的条件事项。

        这里故意没有做“一键替用户决定”。日期、地点可以根据新通知给出建议,但采用新值还是保留旧值必须清晰可见;回执和缴费更要用户亲自确认。这个多一步的交互,是为了让系统在真实安排中更可信。

确认页:新旧值并列展示,回执和费用也要求用户明确选

五、第三步 得到今天真正要做的事情

        确认完成后,系统把结果分成四组:现在要做、符合条件才做、已经完成、已经取消。家长不用再从摘要里二次提炼动作,也不会把取消的物资继续放在采购清单里。当前任务可以勾选,活动日期可以导出为 ICS 日历。

        在示例分支中,林小满属于第 3 组。全部采用新通知,并确认回执、费用已经完成后,清单包含 2 项当前待办、1 项条件待办、3 项已完成和 1 项已取消。蓝色帽子、秋季校服、运动鞋、500mL 水杯和轻便雨衣继续保留;现金和电子游戏设备仍然禁止携带。

行动清单:任务状态、最终时间地点与版本时间线在同一页

六、每个结论都应该能回到原文

        当系统告诉你“集合地点是体育馆北门”时,更重要的问题是:它从哪份材料得出,旧地点是什么,是否真的比正式通知更新。NoticeAction 的依据中心按文件展示 xParse 元素,保留页码、元素 ID 与必要原文片段。用户不需要盲信一段生成结果,可以自己检查。

        这也是我没有把项目做成普通聊天机器人的原因。聊天界面很适合探索问题,但“明天几点集合、要带什么”更适合结构化清单;一旦发生争议,证据又比流畅的回答更重要。

依据中心:四个来源文档与可定位的原文片段

七、新通知来了 不必从头再来

        首次整理只是开始。完成后的活动会出现在总览页,显示未完成数量、材料数量和更新时间。收到新的补充通知后,可以打开清单并选择“追加变更通知”,系统会恢复历史元数据、重新比对新旧版本并过滤重复变化。

        出于隐私考虑,浏览器历史只保存精简计划,不长期保存完整解析正文。因此页面刷新后若要做完整比对,产品会提示重新选择历史原材料。这不是最省事的设计,但它让“持续使用”和“不过度留存原文件”之间保持了清楚的边界。

八、本地优先不等于没有边界

        程序只监听 127.0.0.1,TextIn 凭据使用 Windows DPAPI CurrentUser 加密,保存在项目目录之外;凭据接口只告诉页面“是否已经配置”,不会回显 AppID 或 Secret Code。原始文件、完整解析文档和供应商原始响应不写入磁盘或浏览器历史。页面同时设置 CSP、nosniff 和 no-referrer,并校验 Host、Origin 与 Sec-Fetch-Site。

        但必须把边界说清楚:真实解析时,原文件会上传到 TextIn xParse;localStorage 会保存孩子姓名、班级、最终任务和必要证据片段,而且没有额外加密。当前版本是 Windows 本地单用户原型,没有公网账号与权限体系,不能直接把本地服务暴露到互联网。

九、我怎样验证它不是一个只会演示的页面

        当前版本有 71 项自动化测试,全部通过;行覆盖率 98.20%,分支覆盖率 86.04%,函数覆盖率 96.78%。测试不只覆盖理想路径,也覆盖 DPAPI 损坏数据、真实服务重启、xParse 错误映射、文件伪装、跨站请求、多版本乱序、非参加者分支、增量追加和历史并发保护。仓库还保留桌面端与 360px 移动端完整浏览器流程测试和截图。

  • 前端使用原生 HTML、CSS 与 JavaScript ES Modules。
  • 后端使用 Node.js 原生 http 服务,无第三方 npm 运行依赖。
  • Windows 双击 start-hidden.vbs 即可后台启动并自动打开浏览器。
  • 示例模式与真实 xParse 入口并存,便于评审快速体验,也便于验证真实调用。

十、适用边界与下一步

        NoticeAction 目前明确聚焦学校研学通知,不承诺理解所有通知、所有学校写法或任意业务文档;它还不支持 DOC/DOCX,也没有数据库、账号、多端同步和多人协作。下一步更值得做的不是立刻扩大概念,而是积累更多经过标注的通知样例,把日期、地点、物资、条件事项和取消语义做成稳定的回归集,再决定哪些规则值得配置化。

        对我来说,这个作品最有价值的地方,是把“AI 读懂文档”继续推进到了“用户知道下一步做什么”。xParse 提供了可靠的数据层,确定性规则和人工确认让结果能够落地,证据链则让用户保留最后的判断权。

项目地址与体验方式

开源仓库:GitHub – xiaosongxiaosong1111/NoticeAction: 将 PDF、Excel 与群聊截图中的学校通知,转化为可核对、可追溯、可执行的个人行动清单。Built with TextIn xParse. · GitHub

Windows 10/11 安装 Node.js 22+ 后,双击项目根目录的 start-hidden.vbs 即可启动。首次可以直接点击“30 秒体验研学示例”;需要解析自己的文件时,在“解析设置”中填写 TextIn AppID 与 Secret Code。

一套页面同时适配桌面和手机

NoticeAction 没有为手机另做一套页面,也不依赖容易误判的设备型号。页面会根据浏览器可视宽度自动重排:宽度不超过 780px 时,桌面侧栏收起为底部五步导航,上传区、确认卡片、行动清单和依据内容改为单列;不超过 390px 时,字号与间距进一步收紧。手机横竖屏切换或桌面浏览器缩窄窗口时,布局都会自动更新。

这不是简单地把桌面页面缩小。移动端弹窗会改为底部面板,固定导航会避开系统安全区;360×800 浏览器流程还会验证页面没有横向溢出、可见按钮高度不小于 44px、当前步骤导航状态正确。家长可以直接在手机上上传群聊截图、确认版本变化、查看行动清单与原文依据,完整流程和桌面端保持一致。

移动端:360px 宽度下仍可完成入口选择与流程导航

        欢迎大家交流试用🎉🎉🎉

赞(0)
未经允许不得转载:网硕互联帮助中心 » 把学校通知变成可执行清单,我用TextIn xParse做了一个通知行动台(附源码)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!