
最近做了一个很小的开源工具。
它解决的问题也很小:把一批发票整理成 Excel。
项目地址在这里:
https://github.com/mrliang-github/cn-vat-invoice-ocr
这个工具目前主要适合 Mac 用户。它没有接第三方 OCR API,核心用的是 macOS 自带的 Apple Vision OCR,在本地把发票图片里的文字识别出来,再整理成 Excel。
我一开始没想到这个方案能跑通。
因为我以前默认觉得,OCR 这件事要么接云服务,要么用大模型。
后来真的试了一下才发现,如果只是先把票面文字识别出来,Mac 自带的能力已经比我预想的好很多。
起因就是一批发票
这件事的起因很普通。
手里有一批发票,要整理成 Excel。
如果只有一两张,人工录一下也就算了。但发票一多,就很烦。
一张张打开。
看开票日期。
看开票单位。
看发票号码。
看金额、税额、价税合计。
再把开票内容录进表格。
这个过程没什么技术含量,但很耗人。
而且越是这种机械录入,越容易录错。尤其是金额、税额、价税合计这些字段,看起来都像数字,人工盯久了也容易串。
所以我当时的想法很简单:
能不能先让工具把票面内容识别出来,整理成一张财务能看的表,人最后只复核关键字段?
我原来以为 OCR 得接 API
我一开始的直觉是:这事可能要接 OCR API。
现在很多开箱即用的 OCR 服务,基本都是云端接口。
它们当然有自己的价值。你要做一个长期跑的产品,要处理大量票据,要稳定性和多端接入,用云 API 很正常。
但我这次不是在做一个大型票据系统。
我只是想处理手头这一批发票。
而发票又有点敏感。里面有公司名、金额、交易信息。不是说云服务一定不安全,而是如果本地能解决,我其实没必要第一步就把文件传出去。
我当时就问 AI:如果想做一个本地 OCR 小工具,Mac 上有什么方案?
它提醒我,macOS 里本来就有 Apple Vision,可以做文字识别。
我试了一下,发现识别发票文字的效果比我想象中好。不是完美,但足够把票面文字先读出来。

真正麻烦的不是识别文字
但 OCR 只能给你一堆文字。
真正要做成工具,还得继续跟 AI 说清楚:我最后要导出的 Excel 里,到底需要哪些字段。
比如开票日期、开票单位、发票号码、金额、税额、税率、价税合计、开票内容。
这里才开始有实际的坑。
金额字段容易混,开票内容也容易被截错。有些项目名称下面跟着规格型号、单位、数量、单价,如果规则没写好,最后导出来的表就会很乱。
所以这件事后面其实不是“识别文字”,而是把识别出来的文字,整理成一张人能复核的表。
我最后做的是一个很小的本地工作流
所以这个工具不是单纯调用 OCR。
它更像一个很小的本地工作流:
上传发票图片或 PDF
↓
用 Apple Vision OCR 识别文字
↓
按常见发票版式抽字段
↓
导出 Excel 主表
↓
保留识别日志,方便排查
↓
人工复核关键字段
导出的 Excel 里有两张表。
其中一张是主表,放开票日期、单位名称、发票号码、金额、税额、税率、价税合计、开票内容这些字段。
另一张是识别日志。
这个日志表挺重要。
因为当某个字段不对的时候,不能只看最终 Excel。你得回头看 OCR 原文到底识别成了什么,再判断是 OCR 识别错了,还是字段规则截错了。

最后还是要一格一格对
这类小工具很容易给人一种错觉:
页面能跑,Excel 能导出,好像就差不多了。
但发票这种东西不能这么看。
我后来拿了一版人工改过的 Excel,跟工具导出的表一格一格对。错的地方不算多,但很集中:金额和开票内容。
金额容易混,因为票面上本来就有金额、税额、价税合计。开票内容也容易被版式带偏,有时候截少了,有时候又把规格型号也带进来。
我就按这些真实错误去补规则。最后那批 28 张发票,主表跟人工修正版对到了 0 差异。
这句话也别理解成“所有发票都能自动识别准”。
我只是想说,至少对我手头这批发票,它已经能把很烦的录入先做掉。真正要用的时候,发票号码、金额、税额、价税合计,还是应该人看一遍。
所以它适合的场景其实很窄:
你用 Mac,偶尔要整理一批发票,不想一上来接付费 OCR API,也能接受最后自己复核一下。
如果你要的是企业系统、Windows 工具,或者直接自动做账,那就不是它要解决的问题。
这件事给我的一个小提醒
我以前遇到 OCR,脑子里先冒出来的就是:
要不要接 API?
要不要买额度?
要不要上模型?
但这次反过来发现,很多小工具可以先从系统已有能力开始。
Mac 负责识别文字,我补一点字段规则,Excel 负责交付,人最后兜底。就这么简单。
这也让我想到之前在 X 上看到的那个触控板称重例子。有人把 Mac 触控板当成秤,称食物重量。
那个东西跟发票没关系,但背后的感觉很像:Mac 里有些底层能力,平时你不会专门想到它,一旦接上一个具体场景,就突然变成了一个小工具。
所以我把这个项目开源了。不是说它多完整,而是给有类似小需求的人一个可以直接试的起点:
如果你也是 Mac 用户,刚好有类似的发票整理需求,可以拿去试试:
https://github.com/mrliang-github/cn-vat-invoice-ocr
如果你不处理发票,也可以把它当成一个思路:
有些能力可能已经在系统里了。
不一定每个小工具都要从付费 API 开始。
我是良逍,产品经理,最近主要在折腾 AI 产品、独立开发和出海工具。
这个号会记录我自己实测过的工具、踩过的坑,以及从想法到产品上线的过程。
如果你也在折腾 AI 工具、独立开发或出海产品,可以来找我交流:liangxiao-20