我花了三个下午,自动用Python写了个能自动生成三级目录的生成小工具。起因很简单——上个月整理公司那份两百页的自动产品手册时,我手动给每个章节敲目录,生成敲到第三级子标题时差点把键盘砸了。自动
三级目录这玩意儿,生成说难不难,自动说简单也真不简单。生成一级目录是自动章,二级是生成节,三级是自动子节。但真正折磨人的生成不是层级本身,而是自动文档里那些不按套路出牌的标题格式——有的用"1.1.1",有的生成用"一、(一)",自动还有的直接拿加粗正文冒充标题。我见过最离谱的一份文档,同一个三级标题在目录里出现了三种写法。
所以我的工具核心逻辑就一条:先识别,再归类。识别靠正则表达式匹配常见标题模式,比如数字编号、中文序号、甚至是"第X部分"这种老式写法。归类就更有意思了——我让程序统计每个标题的缩进量和字号,因为Word文档里这些信息通常藏在样式里,比纯文本判断靠谱得多。
第一次跑测试的时候,程序把"3.2 注意事项"识别成了三级标题,因为它前面有个"3.1.2 安全警告"——缩进量一样,但编号规则不同。我盯着输出结果看了半天,突然意识到问题出在"3.2"这种二级标题和"3.1.2"这种三级标题的视觉差异上。人眼能一眼分辨,但程序得靠规则。后来我加了个判断:如果某个标题的编号是"X.Y"且下一个标题是"X.Y.Z"格式,那前者自动降为二级。就这么个简单逻辑,准确率从67%直接跳到94%。
剩下的6%错误全是奇葩案例。比如有人把"附录A.2.1"写成"附录A-2-1",还有人用全角句号隔开编号。最离谱的是某份技术文档里,作者用"2.1.3a"表示第三子节的补充说明——这种带字母后缀的,我干脆让它归到"其他"类,让用户手动处理。
工具跑通那天,我拿它处理了那份折磨我两周的产品手册。程序花了0.8秒生成完整目录,我核对了一遍,三级标题的位置全对。那一刻我有点恍惚——原来我花了大量时间做的事情,本质上就是个模式识别问题。但转念一想,如果当初文档规范一点,连这个工具都不用写。
现在这个脚本还在我的工作电脑里躺着,偶尔有新文档要整理目录时就跑一下。它不完美,遇到格式混乱的文件照样会出错,但至少能把我从最机械的重复劳动里解放出来。说真的,与其研究怎么让AI自动写文档,不如先解决怎么让文档的标题格式统一——那才是真正的效率瓶颈。