25年的鸡蛋

25年的鸡蛋

Hacker News 摘要

原标题:25 Years of Eggs

作者拥有一个坚持了25年的业余爱好:从2001年起,他就扫描并保存了自己所有的购物收据。他从未输入过价格数据,只是保留图片,期待未来的技术能够读取这些信息。2026年,他利用 AI 技术对这11345份收据进行了数字化处理,并以鸡蛋作为切入点来测试系统的可靠性。

项目概况

在为期14天的处理过程中,作者消耗了约16亿个 Token。他从乱码的感热纸打印件、OCR 失败案例以及包含拼写错误的文件夹中,成功提取到了589份购买鸡蛋的收据。整个过程他实际坐在键盘前操作的时间仅约15小时,其余时间则是 AI 代理在后台运行。

技术突破与挑战

1. 边界识别问题

由于早期的收据是放在平板扫描仪上扫描的,白色纸张在白色扫描背景下极难区分,作者将其称为白色阴影问题。

• 他先后尝试了边缘检测、自适应阈值、轮廓分析等七种传统计算机视觉方法,结果最理想的 F1 分数仅为 0.302。

• 最终他采用了 Meta 的 SAM3 模型,仅通过一个 API 调用,就以 92% 至 98% 的置信度识别出了每一张收据的边界。

2. 文本识别与矫正

收据往往由于摆放角度随机而难以读取。作者发现,传统的 Tesseract 识别精度堪忧,例如会将 OAT MILK 识别为 OATH ILK,或者丢失小数点。

• 最终的处理方案是:先使用在苹果芯片上本地运行的 PaddleOCR-VL 视觉语言模型进行清洗录入。

• 针对长条收据,作者编写了脚本将其按长宽比切片处理。

• 最后由 CodexClaude 进行结构化信息提取。

3. 结构化数据提取

最初尝试使用正则表达式提取鸡蛋的价格和数量,但由于超市经常使用缩写(如 STO LRG BRUNN 代表鸡蛋),正则表达式漏掉了大量数据。

• 作者决定使用 Codex 进行全量处理。当 Codex 的 Token 额度用完时,系统会自动切换到 Claude 继续任务。

• 为了防止长任务崩溃导致数据丢失,他优化了执行逻辑:每批次启动一个新进程,并能够从缓存中恢复进度。这让原本需要12小时的任务缩短到了3小时。

数据准确性与质量控制

为了验证数据,作者用22分钟搭建了一个基于 Flask 的标记工具,并手动标注了375份收据作为基准。

• 经过多次迭代,AI 分类器的准确率达到了 99% 以上。

• 作者发现,AI 甚至能纠正其手动标注的错误,例如识别出被漏掉的条形码扫描件或面条收据。

• AI 还能处理极端情况,比如有一张扫描反了的收据,Claude 逐个字符解码了镜像后的 OCR 文本。

核心数据统计

时间范围:2001年至2026年。

处理总量:11345份收据。

代码代理运行时间:14天。

Token 消耗成本:约1591美元。

确认的鸡蛋收据:589份。

买蛋总支出:1972美元。

鸡蛋总数:8604枚。

作者总结认为,成功的关键不在于单一模型,而在于使用针对性强的模型堆栈:用 SAM3 分割图像,用 PaddleOCR 提取文本,再用 CodexClaude 完成后续所有工作。作者感慨,这就是奇迹发生的时代,他计划继续分析过去30年的鸡蛋价格数据。


原文:https://www.john-rush.com/posts/eggs-25-years-20260219.html

评论:https://news.ycombinator.com/item?id=47427224

Report Page