我用 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适用场景:增值税发票批量识别、本地留档、查询追溯部署方式:本地运行,数据不出内网,安全可控
夜雨聆风