一个用 AI 写出来的电子发票批量打印工具,支持 PDF/OFD/图片,轻量版仅 5MB,完全免费开源,代码全程由 AI 生成。
牛马经常会遇到发票打印报销,一张一张打开、调整、打印,有些要一张有些打两三张,很多人就直接打印成一张发票一页纸。
我之前一直用 WPS 的发票打印功能,用得比较习惯,功能也很完善,但是会员过期了。
其他这类发票打印软件要么要付费,要么广告满天飞。
所以我想,干脆自己搞一个。
后端用 Rust,前端用 Web 技术,打包出来只有 5MB —— 比一张图片还小,也有绿色版,一个exe文件,不用安装就能跑。
项目叫 fapiao-print(发票批量打印工具),从第一行代码到现在的 v1.10.0,全程由 AI 辅助完成。我负责提需求、测试、反馈,AI 负责写代码、修 bug、优化。
GitHub:https://github.com/erma0/fapiao-print
为什么想自己做?
说实话,WPS会员过期后,我就靠着每天签到领取的临时会员来打印。
市面上其他工具我也试过一圈,各有各的问题,或者用着不习惯。
我需要一个本地运行、不开网络、不传文件、免费到底的工具。最好是照着 WPS 那套逻辑,把它里面发票打印那块给"复刻"出来。
但我不会写,我只是一个业余爱好者。编程经验没多少,只能说略有了解。
那怎么办?让 AI 来写。 把需求跟 AI 说清楚,让它自动生成。
之前只用过 AI IDE,还没用过 OpenClaw 或其他改版的"龙虾",所以找了个有免费额度的 WorkBuddy 来试试,后来 WorkBuddy 免费签到额度没了,就切换到了 Trae Solo 继续开发。
这个项目就这样出现了,完全免费开源,功能基本够用,后续还加了不少 WPS 没有的功能。
它能做什么?
一句话:把一堆不同格式的电子发票,拖进去,一键排版,直接打印或导出 PDF,还可以提取发票数据。
文件格式
支持 PDF / OFD / 图片,全格式混选拖入,自动识别发票类型。
特别是 OFD —— 国家标准的电子发票格式,AI 花了不少功夫实现了 OFD 的矢量渲染,发票信息直接提取,拖入即用,不需要 OCR。
文字型 PDF 发票(大多数电子发票都是)轻量版就能直接识别出金额和销售方信息,不需要下载体积更大的 OCR 版。
排版布局
6 种预设布局(1×1、2×1、3×2、1×2、2×2、3×3),也支持自定义行列(1-10 × 1-10)。
- 纸张:A4 / A5 / B5 / Letter / Legal + 自定义尺寸
- 边距间距:独立可调
- 缩放模式:自适应 / 拉伸填充 / 原始大小 / 自定义百分比
- 单张微调:每张发票可以在预览里拖拽移动位置、拖角落缩放大小
简单说就是:你想怎么排就怎么排,一页打几张你自己定,还能对每张单独调。
打印模式
四种模式任选,从"打开 PDF 阅读器看一眼再打"到"直接静默发送到打印机"都有,打印前有确认弹窗防误操作。
OCR 智能识别(可选)
如果发票是图片或扫描件,还需要识别发票金额和销售方等信息,可以下载 OCR 版,内置 PP-OCRv5 文字识别引擎,全程本地识别。
其他贴心功能
- 裁切线、编号标记、边框显示
- 裁剪白边、自定义水印
- 打印页码和打印日期、自定义页脚
- 金额统计汇总
- 车票票种自动标签
- 一键跳转国家税务总局查验平台
- 深色/浅色模式切换
- 实时预览,支持缩放翻页
- 快捷键:
Ctrl+O添加文件、Ctrl+P打印
一个外行怎么用 AI 写出桌面软件?
我一开始的想法是:用 Python 写个简单的工具,毕竟 Python 平常用得多,写写脚本什么的应该够用。但 Python 做桌面应用 + webui 的pywebview框架不够热门,打包体积也不小。相比之下 Tauri(一个基于 Rust 的桌面框架)更轻量,而且 AI 写 Rust 代码的效率反而更高、生成质量更稳。
整个过程大概是这样:
- 我说需求 → “支持拖放 PDF 和图片,一页排多张”
- AI 写代码 → 生成 Rust 后端 + 前端界面
- 我测试报 bug → “拖放没反应”“打印出来位置不对”
- AI 修 bug → 修复逻辑,重新编译
- 循环迭代 → 上面三步重复 N 轮
很多功能都是这样一步步加上去的。
我完全看不懂 Rust 代码,AI 自动配置环境、自己写好、编译好,我测试跑一下,不对就跟 AI 说,AI 继续改。
完成一个功能或修复一个问题后,让 AI 自动提交到 Github ,甚至连自动编译发布都是 AI 实现的。
AI 踩过的坑
发票识别这条路
一开始先试了直接读取 PDF 里的文本 —— 毕竟电子发票 PDF 里理论上是有文字的,直接提取不就好了?
结果发现当时根本跑不通 —— 有的字体编码错乱,有的文本顺序颠倒,提取出来的东西乱成一锅粥,没法用。那阶段只能走纯图像识别路线,先试了 Windows 10 自带的 OCR,准确率不太行,最后换成了专业的 PP-OCRv5 模型。
后来随着迭代越来越深,AI 又回头重新把文字提取攻了下来。现在对文字型 PDF 发票,轻量版就能直接识别,不需要 OCR 引擎,速度也很快,基本覆盖了大多数日常场景。
格式兼容是无底洞
OFD 是国标格式,但不同软件生成出来的文件略有差异。
每遇到一种新格式,就要对着它的特征单独适配。这种事没有尽头,遇到了就修。
打印这件事没那么简单
打印看起来简单,实际上坑很多。最早的方案打印出来的文件体积大、画质差,整个方案推翻重来换了新引擎,打印质量上来了,体积也降下来了,跟 WPS 差不多级别。
还有个边缘情况:如果选的是"Microsoft Print to PDF"这种虚拟打印机,某些情况下静默打印会导致保存对话框弹不出来,用户没法选保存位置,这也专门做了检测处理。
兼容性问题
有用户反馈在公司电脑上 PDF 文件打不开。排查发现是企业精简版系统缺少某个 Windows 组件。最新版加了启动自检,缺失时自动换备用方案,保证 PDF 在各种 Windows 10 机器上都能正常打开。
下载与运行
网盘下载:https://www.lanzoub.com/b03anhkkuf(密码:7ty2)
或者从 GitHub Releases 下载:https://github.com/erma0/fapiao-print/releases(更新及时)
有 4 种分发文件:
| 文件 | 说明 | 大小 |
|---|---|---|
发票打印工具_x64-setup.exe |
轻量版安装包 | ~5MB |
发票打印工具_x64_绿色版.exe |
轻量版便携单文件 | ~18MB |
发票打印工具_x64_OCR版-setup.exe |
OCR 版安装包 | ~23MB |
发票打印工具_x64_OCR绿色版.zip |
OCR 版便携(exe + models/) | ~26MB |
怎么选?
- 发票是 PDF 或 OFD,或只需要排版打印 → 轻量版,仅 5MB
- 发票是图片、扫描件,需要数据识别 → OCR 版
- 不想安装、即下即用 → 绿色版
系统要求:Windows 10 1803+ / Windows 11。不支持 Win7/8。
说在最后
这个项目前前后后搞了大概一周多,当然都是碎片时间断断续续地折腾。从最初只支持 PDF 的简陋版本,到现在 PDF/OFD/图片全格式 + 智能识别 + 多引擎打印 + PDF 导出的完整工具,中间踩了无数的坑。
我一共写了 0 行 Rust 或前端代码。所有代码都是 AI 写的,我做的只是不断跟 AI 提需求、测 bug、再迭代。
这大概就是现在 AI 编程最真实的案例 —— 一个对 Rust 一窍不通的人,靠 AI 写出了一款还不错的 Tauri 桌面软件。一周时间在 GitHub 上拿到了几十个 Star,网盘文件上千下载,吾爱破解论坛登上热门。
项目起步用的是 WorkBuddy,中途也切换到 Trae Solo 继续迭代,两个工具都用下来各有各的感受,以后有机会再单独写写体验对比。
完全免费开源,MIT 协议,没有任何广告,没有任何收费点,所有代码都在 GitHub 上。
如果你在使用中遇到什么 bug、识别不准或者格式错乱,欢迎来 GitHub 提个 Issue,也可以把出问题的发票文件发给我(脱敏后就行),后面会持续优化。
吾爱破解首发:https://www.52pojie.cn/thread-2105137-1-1.html
GitHub:https://github.com/erma0/fapiao-print
欢迎留言交流。如果你有发票打印的需求或遇到过什么奇葩问题,评论区聊聊。