ARTICLE · 1340726
在拼多多卖 PDF 工具,一个买家问我:能不能给 PDF 加个能点的目录?今天交付了
前几天月一个买家在客服窗口问我:能不能给 PDF 加个能点的目录?他还发来一份两百多页的标书截图——目录印在那里,看得见,点不动。
我说可以,三天给你做出来。
第一版,当天就翻车了
我的思路很简单:PDF 内部本来就存着书签(大纲),读出来排个版不就行了。结果拿他的标书一跑,列表是空的。
那本书根本没做过书签,目录是印在纸面排版里的。书签是书签,目录页是目录页,两回事。我只能改方案:把目录页那一屏的文字按坐标抓下来,同一行字被拆成几段的按位置合并,再按左边的缩进还原层级——标题越靠右,层级越深。
跑通了,又冒出新问题:目录页码写的是"第 12 页",可我在文档前面插了 4 页目录,原来的第 12 页现在在第 16 页。所有链接的目标都得重算,还得防止页码倒挂。这一步没做对,生成的目录点过去全是错的。
更烦的是字体。我想给标题加粗描边让它更醒目,结果内置中文字体不支持描边,宋体直接糊成一团黑块;页码数字用中文字体渲染,间距宽得没法看。最后数字换成西文字体,才规整下来。还有打包:PyInstaller 默认把一堆用不上的重型库全塞进包里,体积一度冲到 103MB,逐个排除之后压回 28MB。
买家一句"没有章节能叫目录吗",把我问住了
另一个买标书的用户试完说:生成的目录里"第一章、第一节"怎么没了?没有章节层级,那还能叫目录吗?
我回去把那份标书翻了个底朝天,发现它里面藏了两套目录(模板自带的和后来加的),我的程序混着抓了 176 条。修完这个问题,我给自己定了条死规矩:
原文有目录,就严格按照原文,一个字不改;原文没有,就按公文和招投标的标准格式自动编号。
工具不该替用户做主。
没有目录的 PDF,也该有出路
后来我又遇到两类文件。一种是论文,没书签也没目录页,但正文里有"1.1""1.2.1"这种编号标题——那就扫正文,按编号模式和字号把标题挑出来,自动编一套目录。
最麻烦的是纯扫描件:一百多页全是图片,连一个字的文字层都没有。文字解析这条路彻底堵死,只剩 OCR。第三方的 OCR 要么收费,要么联网上传文档——标书是涉密的东西,传出去就是事故。最后我用了 Windows 系统自带的离线 OCR:系统本来就有,买家电脑开箱即用,逐页渲染成图片再识别,筛掉正文里的编号列表、图表题注和识别碎片,只留真正的标题。一百零三页的扫描标书,五十七秒,识别出一百二十四条四级标题,全部能点、页码全对。全程本地运行,不上传一页纸。
现在的识别链是四级:原文目录页 → 书签 → 正文标题扫描 → 扫描件 OCR。不管什么样的 PDF,丢进去就行。
顺便踩了商业化的坑
工具要上架卖,就得加授权。我做了一机一码:软件读机器码,买家把机器码发我,我发回激活码,39.9 元买断终身。
第一次演示就出丑——我没用过试用,打开却提示"试用已用完"。查了半天,是我在自己电脑上测试时把试用标记写进了系统,残留了。第二次更尴尬:试用用完后点"生成",软件报了个"没有有效目录条目"的错误,用户一脸懵。位置错了,闸门应该拦在生成入口,直接弹激活窗口,而不是跑到业务逻辑里报错。
一个功能好不好用,一半在代码,一半在你有没有把自己当成第一个用户,把所有路径亲手走一遍。
定价我也琢磨了一阵。九块九的时代,工具类软件靠走量,但售后成本摆在那——激活、发码、答疑,一单几块钱根本覆盖不了。三十九块九,买断终身,一机一码:买家不用订阅续费,我不用天天防着授权被破解。试用只给一次完整生成,够买家验证效果,又不至于被白嫖。
买家最后只问了一句
折腾完这些,那位买家拿到成品,只问了一句:"点了能跳过去吗?"
能。
他付了钱,给了好评。
要看测试效果请移步到视频号














































































