一步步设计
先保留一份不可改写的原文
虚构通知有标题、断开的句子、费用说明和步骤。代码为每行保存 line_id、原文字符和空行信息;空白归一化也记录规则。结构恢复的目标是重新排版,不是润色改写,不能悄悄补上时间、价格或缺失句子。
规则能识别的标记先处理
显式 #、列表符号、代码围栏由确定性解析器识别。不要让语义模型重新推翻清晰标记。涉及命令或表格的行优先保留边界;一个句子里的数字不应只因为“看起来像步骤”就变成编号列表。
只判断不明确的行间关系
对可能被硬换行拆开的相邻行用 Noul 判断是否续接。问题限定为同一句的延续,不是笼统“是否相关”。两行都讲报名,仍可能分别是地点与退款条件。语义判断和拼接字符的规则分开,复核样本先不合并。
形成块后再分类
得到段落块后,用 Choice 判断标题、正文、列表或代码等。新块依赖上一阶段结果,因此不能在原始行阶段假设块已形成。代码添加 Markdown 标记,保留 block_id 到 line_id 的映射,撤销一次合并应可回到原文。
对内容完整性和展示分别检查
逐项验证数字、日期、链接及命令未改变,再检查标题层次与移动端阅读。渲染时转义 HTML,禁止来自原文的可执行脚本。虚构输出把标题加 #、将续行合成段落,但费用“120 元”仍逐字来自输入。
完整走查 · 本站虚构样本
| 观察到什么 | 如何判断 | 代码怎么处理 |
|---|---|---|
| “请于”下一行“周五前报名” | 可能是同一句续行 | 合并并记录两行来源 |
| “费用120元”下一行“不可退款” | 相关但可能是独立条款 | 保留块边界或复核 |
| 原文含 HTML 标签 | 内容不是执行指令 | 转义后展示 |
可复制的设计草案
以下为本站原创示例。JSON 展示请求或输入形状;Python 仅计算虚构分数,不调用 API。真实接入仍需核对官方接口及任务策略。
# Offline provenance and safe-display example.
from html import escape
lines = {"L1": "Workshop notice", "L2": "Register by Friday."}
block = {"id": "B1", "source_ids": ["L2"], "kind": "paragraph"}
text = " ".join(lines[line_id] for line_id in block["source_ids"])
print(escape(text)) # Register by Friday.
# Joining and classification judgments are not performed here.设计我的任务容易踩的坑
- 把“相关”当“应该拼接”。
- 模型生成新句子替换原文。
- 恢复 Markdown 后直接执行其中的 HTML。
TRY / THINK / COMPARE
先想一想,再看解析
两行都说活动,但第二行是退款条款,应自动合并吗?
展开解析
不能仅靠主题相同合并。判断是否同一句续接,并保留条款边界;不确定时保留原样供复核。
交付前检查
- 原文快照与行 ID 保留。
- 拼接规则、块类型和展示逻辑分开。
- 数字与链接逐项比对。
- 渲染输出已转义。
常见问题
可以承诺逐字不变吗?
须说明空白与换行处理规则,逐项验证内容;本页没有跑模型实测。
OCR 错字能顺手改吗?
应成为独立校对任务,不与结构恢复混在一起。
资料与延伸阅读
参考官方架构模式与 Datawhale 实战主题,本站独立编写讲解、案例与练习。示例为教学设计,未调用 API,不代表性能测试。