市面上的记账 App,不是广告多、会员墙高,就是数据存在别人服务器上不放心。我用业余时间自己写了一个:数据 100% 私有、能跑在 NAS 上、小票一拍就记账、还能比价。开源了,拿走不谢。
你有没有这种感觉:手机里装过三四个记账 App,最后全都荒废了。
不是因为懒。是它们总差点意思——
满屏的开屏广告和会员墙;数据存在别人家的服务器上,总有点不放心;想比一比「同一款抽纸,淘宝和京东到底谁更便宜」,它做不到;更别提把淘宝、京东的订单一键导进来了。
要么太重,要么不私有。于是我用一个周末,自己写了一个。
它是什么
一个完完全全属于你自己的消费记账工具。
后端是 FastAPI + 单文件 SQLite,整个数据库就是磁盘上一个 spending.db文件;
前端是手机优先的网页,加到主屏就是一个 App;
能跑在你电脑、NAS、甚至云盘同步目录里,数据 100% 私有,不上传任何第三方。
没有广告,没有会员,没有「数据用于改进服务」的小字。
核心功能
① 记一笔:手机端,拍照即记账
打开「记一笔」,点一下拍照,把小票拍下来——本地 OCR 自动识别店铺、日期、商品、单价,你在原地核对、改一改,一键入账。不用切页面,拍完就直接生成记录。
识别是模糊的,所以设计成「先识别、再编辑、后入账」,保存前你说了算,金额绝不会乱填。
② 每月消费统计
每个月自动汇总:总额、笔数、笔均,还能按分类、平台、店铺拆分,配每日趋势图。月底一眼看清钱到底花哪了。
③ 比价:同款跨店对比
搜一个产品名,比如「抽纸」,所有记录里不同店铺、不同平台的单价会聚到一起,最低 / 平均 / 最高一目了然。买东西前先比一比,长期能省下不少。
④ 电商分享记账(淘宝 / 京东 / 拼多多)
买完东西,在电商 App 里「分享 → 复制」,回到本工具,自动解析出平台、店铺、商品、到手价,确认即入账。
说明一下:淘宝、京东没有面向个人的订单推送接口,所以走的是「复制分享文本 → 自动解析」这条半自动路径,全程数据在本地,最符合私有化诉求。
⑤ 小票原图留底
拍的小票原图会存进账本,明细里直接显示缩略图,点开就能对账,再也不怕记错或对不上。
私有化 & 技术亮点
- 数据私有
:备份只需复制一个 spending.db文件;想多端同步,把路径指到 OneDrive / 群晖 Drive / Syncthing 同步目录即可。
- 随处可跑
:电脑一行 python app.py;NAS 用 Docker 一行docker compose up -d;群晖、威联通、极空间都有专属部署章节。
- 外网也能记
:Tailscale / Cloudflare Tunnel 零公网 IP 方案,在外面也能随手记一笔。
- 识别可升级
:默认本地 Tesseract(隐私优先);想更准,可一键切 PaddleOCR 高精度识别。
怎么部署
电脑端(30 秒)
NAS(以威联通为例)
另外还附了一键部署脚本,改个 NAS 地址,就能自动传文件、构建、起服务。拍照 OCR 所需的 Tesseract 中文包,镜像里已经内置好了。
开源获取
项目已开源,代码、文档、部署脚本全在 Gitee:
👉 https://gitee.com/kenowong/spending-tracker
(仓库默认私有,可自行改为公开。)
写在最后
工具不在多,在于顺手,在于属于自己。
这个记账工具没有广告、没有会员、没有数据上传,功能刚好够用,还能跟着你的 NAS 跑一辈子。
如果你也想拥有一个「数据只属于自己」的记账本,拿走不谢。欢迎 star,也欢迎提 issue 一起把它做得更好。
夜雨聆风