收藏
0
0
分享
举报
·15 小时前发布·59次阅读

11 天,我把 V1.1-beta 的 799MB 砍到 211

独立开发商业增长付费用户

11 天前我把 V1.1-beta 推上去了。

那天晚上看下载量从 0 涨到 27,不是火,是冷启动。但更难受的是评论里有 3 个人问同一个问题:你这个 799MB 是不是有问题?

是的,是 799MB。

我做的叫印流PDflow,本地 PDF 工具。V1.1-beta 跑通了:合并拆分、压缩、转换、模板排版。技术上是能跑。但"能跑"和"能发布"完全是两码事。

799MB 这个数字把我按在地上摩擦了。

更要命的是,里面 350MB 是 Qt6WebEngine,我项目根本没用这玩意。

11 天前我按下「重新设计」。


砍包 3 天

PyInstaller 默认会把 Qt 所有模块都打进去,WebEngine、3D、Multimedia、Network、Sql 一堆我根本没用。

pyinstaller --noconfirm \
  --exclude-module=PySide6.QtWebEngineCore \
  --exclude-module=PySide6.QtWebEngineWidgets \
  --exclude-module=PySide6.Qt3DCore \
  --exclude-module=PySide6.QtMultimedia \
  --exclude-module=PySide6.QtNetwork \
  main.py

砍完 8 个模块,1.1GB → 540MB。

然后换成 onedir + NSIS LZMA 高压缩,540MB → 247MB。

最后用字体白名单(项目只用 3 个字体),247MB → 211MB。

3 天,799 → 211。

不是某个 spec 跑出来的,是 NSIS 包装后用户实际下载的那个安装包。


OCR 选型又卡了 3 天

V1.2 计划加 PDF→Excel,需要 OCR。

试了 3 个:

  • Tesseract:800ms/页,太慢,pass
  • PaddleOCR:400ms/页,但装上 ONNX 依赖瞬间胖 200MB,我前面白砍了
  • RapidOCR:200ms/页,准确率低 5%,但轻

最后选 RapidOCR。

理由说出来有点反常识:本地 PDF 工具,速度比准确率重要。用户最痛的不是"识别错一个字",是"等 30 秒还没完"。

PaddleOCR 我装上又卸了 4 次,每次编译 5 分钟。认输。


6 个模板的反直觉教训

V1.2 加了 6 个模板:名片、合同协议、发票收据、单页公告、产品规格、分析报告。

技术上看不难——选模板、填表单、导出 PDF。

但我卡在「实时预览」上卡了 2 天。

预览和最终导出的图必须像素级一致。不一致的话用户填完表单导出,会发现"咦怎么跟我看到的不一样"。这种体验比"丑"更要命。

最后改了一个东西:预览和导出走同一套渲染管线。

def render_template(template, data, output):
    layout = build_layout(template, data)  # 同一个 layout 函数
    if output.endswith('.pdf'):
        return render_pdf(layout)
    return render_png(layout)  # 预览

屏幕看到啥,导出就是啥。

这个改完以后,我加新格式(Word、图片)都自动支持预览。

另一个反直觉的事:正反面切换。

名片要正反两个面。最初做了 3 个方案:双击卡片、右侧 Tab、滑动。选了最简单的双击。结果用户根本发现不了。

最后把「切换」按钮挪到预览图旁边,加了文字提示。

重要的功能不要藏起来。为了"简洁"牺牲发现率,是本末倒置。


体积优化的彩蛋

最后一个加分项:图片保真嵌入。

很多 PDF 工具嵌入图片会重新编码(压缩 + 转码),放大就糊。设计师最恨这个。

PyMuPDF 有个参数:

# 不推荐(重新编码)
page.insert_image(rect, filename="logo.png")

# 推荐(保持原格式)
page.insert_image(rect, filename="logo.png", keep_image_format=True)

用户导出的 PDF 里图片放大仍是清晰的。


11 天后的数字

V1.1-betaV1.2
安装包799MB211MB
模板06
OCR无RapidOCR
启动5s<3s

减重 74%。


收尾:

印流PDflow V1.2 已经放在 yinliupdflow.com。

不需要 Python 环境,211MB 双击装完即用。纯本地,数据不出电脑。

GitHub:github.com/jiuyue1024/PDflow (项目本身不开源,欢迎 issue 和 star)


最后问一句:你做工具类软件,砍包、砍功能、砍时间,最让你头疼的是哪个?

(写不动了,先这样)

 

讨论 (0)

    目录

    关于作者

    心得体会

    这家伙很懒,什么都没留下

    Solo 独立开发者社区support@solo.xin
    关于社区隐私政策用户协议商务合作友情链接订阅更新(RSS)投稿赞助

    © 2023 SOLO · 为独立开发者而生