既然手工录入太慢,我就写了个“发票自动对账系统”

既然手工录入太慢,我就写了个“发票自动对账系统”。这话说出来轻飘飘的,背后是上个月被对账逼疯的十几个通宵。客户那边财务小姑娘每天催命一样发 Excel,我这边助理手动一张张发票拍照、录入、匹配,错一个数就得从头核对,效率低到令人发指,还他妈全是重复劳动。我盯着那堆 PDF 和扫描件,脑子里就一个念头:这活儿必须让机器干,立刻,马上。

说干就干。核心逻辑其实不复杂:用 Python 的 pdfplumber 和 pytesseract 把 PDF 发票和扫描件里的文字抠出来,正则表达式匹配关键字段,比如发票号码、金额、税号,然后跟客户给的 Excel 明细表做关联匹配。难点在于发票格式千奇百怪,国税的、地税的、不同省市的模板都不一样,OCR 识别率不可能 100%。我一开始想得太美,直接上模板匹配,结果被现实毒打。后来改成多引擎识别+置信度加权:先用阿里的通用 OCR API 跑一遍,再用本地训练的 Tesseract 模型针对财务票据做二次识别,两边结果比对,取置信度高的。为了处理速度,还得上多线程,一个线程处理一张发票,最后汇总结果。这里又踩了坑,API 有频率限制,线程开太多直接被封,得自己写个简单的令牌桶算法来控制请求节奏。

硬件成本?这才是今天想说的重点。2022 年,别被云服务商忽悠瘸了。我算过账,如果全程用云函数+云 OCR+对象存储,一个月轻松烧掉大几百,一年下来就是大几千。我的策略是“本地重型计算,云端仅作备份和同步”。主力是一台自己组装的迷你主机,准系统 Intel NUC,准系统一千二,自己加了 16G 内存和 1T 的固态,总成本不到两千五。就这玩意儿,7×24 小时跑着 Python 脚本和数据库,功耗低,放办公室角落根本不用管。OCR 部分,本地模型吃 CPU,NUC 的 i5 够用了,复杂的批量处理就安排在半夜跑。只有需要调用高精度 API(比如核对模糊的印章)时才走云端,一个月费用控制在 50 块以内。

数据同步和备份用的是 Synology 的 DS220j,双盘位,两块 4T 的酷狼硬盘做 RAID 1,加起来一千五出头。所有原始发票、处理后的结构化数据、日志文件全扔里面。它自带 Cloud Sync 套件,设置好每天凌晨增量同步到百度网盘的企业版(年费三百多),算是上了个双保险。整个数据流水线的核心就这两台设备,总投入四千三左右,电费一个月几十块,却撑起了我这边所有项目的财务自动化处理,年流水对接百万级别,没出过一次数据灾难。

很多人觉得自动化就得堆钱上云上 SaaS,其实很多中小规模的脏活累活,一台可靠的本地机器加上精心编写的脚本,性价比是碾压的。关键你得懂点硬件,知道瓶颈在哪。比如我这个对账系统,瓶颈从来不是 CPU 算力,而是磁盘 IO 和网络延迟。所以钱要花在固态硬盘和稳定的内网上,而不是盲目升级 CPU。今年最大的心得就是:把每一分钱都花在解决具体的、可测量的性能瓶颈上,而不是为“未来的可能性”买单。云服务是很好,但它也是按秒计费的焦虑本身。

现在系统跑顺了,原来助理三天的活儿,现在半小时跑完脚本,人工复核一下就行。解放出来的时间,我能去研究点新东西,或者干脆去健身房多待一会儿。2022 年快过完了,感觉终于从那种被琐事淹没的窒息感里,透出了一口气。技术终究是工具,它的最高价值,就是把人类从重复中赎出来。哪怕就一点点。

© 版权声明
THE END
喜欢就支持一下吧
点赞57 分享