乐于分享
好东西不私藏

我用 AI 帮老婆做了一个发票识别工具,从此告别手动录入

我用 AI 帮老婆做了一个发票识别工具,从此告别手动录入

一个开发者 + 一个 AI,替财务老婆干掉了最烦的重复录入和翻档


故事从老婆的一句话开始

某天晚上,我老婆又在对着一摞发票发愁——

她是财务,公司收到大量发票后需要留档:把每张发票的金额、税率、开票单位、发票号码等信息记下来,方便以后查询追溯。

但现实是:发票越堆越多,每次都是逐张打开图片、手动抄写字段、再存到本地……一张发票至少 5 分钟,几十张下来,手腕酸、眼睛花,还容易抄错。想找一张旧发票?翻半天找不到。

她一边整理一边叹气:“能不能批量识别,自动存档,以后想查直接搜?”

作为开发者,我嘴上说着”理论上可以”,心里却在盘算:做个批量识别发票的工具?从零写起,图像处理、文字识别、字段提取、本地存储……少说得一两周。

但那天我刚好用上了 WorkBuddy,心想:不如让 AI 试试?

于是我对它说:

“帮我做一个能批量识别发票的工具,上传图片自动提取关键信息,本地留档方便查询。”

接下来发生的事,让我这个写了多年代码的人也吃了一惊。


从想法到第一版,比我想象的快太多

我原以为至少要自己搭框架、选模型、写识别逻辑,但 WorkBuddy 直接给我规划了整套方案:

  • • Flask:作为 Web 服务器,本地浏览器就能访问
  • • pyzbar:优先识别发票上的二维码,速度快、准确率高
  • • EasyOCR:二维码读不到时的备选方案,直接识别图片文字
  • • 正则提取:从 OCR 文本中精准捞出购买方、销售方、金额、税率等关键字段

整个工具的核心逻辑:

上传发票图片   ↓尝试识别二维码(pyzbar)   ↓ 成功  ↓ 失败直接解析  → OCR 文字识别(EasyOCR)   ↓正则匹配提取关键字段   ↓返回结构化数据

二维码路径不到 1 秒出结果;OCR 路径兜底老旧发票或模糊图片。双保险,基本上传什么都能识别。

如果让我从头写这些,至少要两三天。而 WorkBuddy 帮我把从 0 到 1 的过程压缩到了几十分钟


老婆试用后,真正的挑战才开始

第一版跑起来了,我兴冲冲地给老婆试用。结果——

她传了一张发票,购买方名称变成了:

“北京某某科技有限公司地”

多了个”地”字。这是 OCR 把”地址”两个字里的”地”误识别进来了。

我把这个错误截图丢给 WorkBuddy,它秒定位根因:正则边界太宽松,没有正确截断到下一个字段。修复方案是加入字段终止符列表,遇到”地址”、”税号”等关键词就停止匹配。改完,通过。

第二天她又发现:税率和税额搞反了。

应该是”税率: 13%,税额: 130元”,结果出来反了。

根因是 OCR 扫出的文本从上到下排列,但正则是全文无序搜索,谁先匹配到谁赢,顺序就乱了。WorkBuddy 重新设计了位置感知的提取逻辑——先定位字段标签,再向右/向下找对应的值。改完,串位问题彻底消失。

还有一次,个人报销场景,购买方是”(个人)”,后面多余的内容也跟着进来了。

加了一个终止条件:遇到”(个人)”就停,完美解决。


这些 Bug 如果让我自己排查,每一个都得翻代码、打断点、查日志,至少半小时起步。但 WorkBuddy 的节奏是:

给错误现象 → 它找根因 → 给修复方案 → 当场验证

每个问题 5 分钟搞定。

而我需要做的,就是当一个合格的”需求翻译官”——把老婆遇到的真实问题,准确地描述给 AI,然后把 AI 的修复结果拿回给她验证。


实际提取出来的字段长这样

{  "发票代码": "044031900104",  "发票号码": "09876543",  "开票日期": "2024-03-15",  "购买方名称": "北京某某科技有限公司",  "销售方名称": "上海某某贸易有限公司",  "合计金额": "¥1000.00",  "合计税额": "¥130.00",  "价税合计": "¥1130.00",  "税率": "13%"}

一张发票,秒出结果,格式干净。批量上传后所有发票信息自动存档本地,想查某张发票?按公司名、日期、金额一搜就有,再也不用翻文件夹了。

老婆试用后的原话:“终于不用一张一张抄了,查起来也方便多了。”


最终交付:一个傻瓜式 Windows 工具包

老婆平时用的是 Windows 电脑,我让 WorkBuddy 把整个工具打包成 Windows 部署包:

invoice-tool/├── app.py                 # 核心程序├── 一键安装启动.bat       # 双击运行,自动装依赖、启动服务├── Windows 操作说明.md    # 图文步骤,零基础也能用└── requirements.txt       # 依赖清单

她双击 .bat 文件,等环境安装完,打开浏览器,上传发票,完事。

全程不需要懂任何技术,打开就用。


作为一个开发者,我从中重新理解了 AI

这次经历让我对”开发者怎么用 AI”有了不同的认知——

1. AI 最大的价值不是”替代你写代码”,而是”帮你省掉从 0 到 1 的冷启动”

从零搭建项目、选技术栈、写基础框架,这些以前最耗精力的活,AI 几十分钟就能出第一版。开发者可以把时间花在真正需要判断力的地方:需求理解、方案选择、质量把控

2. “真实反馈”比”精确指令”更有用

我没有告诉 WorkBuddy “正则的边界条件应该是 XXX”,我只是把老婆看到的错误结果截图发过去。AI 自己找根因、自己修,比我”指导”它效率高得多。

给 AI 事实,不要给 AI 猜测。

3. 最好的迭代节奏是:真人使用 → 发现问题 → AI 修复 → 立刻验证

工具好不好用,坐在电脑前的使用者最清楚。我老婆每反馈一个问题,我就丢给 WorkBuddy 修,修完让她再试。这种真人驱动的短循环迭代,比我自己闭门造车调试高效太多了。


写在最后

我是个开发者,写代码是我的本职。但这次做发票工具,我写的代码可能不到 10 行——绝大部分都是 AI 帮我生成和调试的。

这不是偷懒,而是把精力花在了更有价值的地方

  • • 理解老婆的真实需求
  • • 把模糊的痛点翻译成清晰的指令
  • • 在 AI 的输出上做判断和验证
  • • 确保最终交付的东西真的好用

WorkBuddy 不是帮你偷懒的工具,而是帮你把时间从重复劳动中释放出来,花在真正需要你的地方


如果你身边也有人被重复手工操作困扰,不妨试试用 AI 帮 ta 造一个工具。

答案通常是:可以。


📎 如果你也在用 WorkBuddy 解决实际问题,欢迎在评论区分享你的使用场景,我们一起交流~


关于本文提到的工具技术栈:Python · Flask · EasyOCR · pyzbar适用场景:增值税发票批量识别、本地留档、查询追溯部署方式:本地运行,数据不出内网,安全可控