一张收据明明存下来了,却怎么也找不到。你记得那台洗衣机、那家店、坏掉的是什么,但未必记得文件名或发票号。这就是「Maa ka Drawer」想解决的问题——一个为妈妈做的小型家庭收据查找器,把开放的多语言向量模型和 Tiger Cloud PostgreSQL 的关键词与向量搜索拼在一起,让「找那张账单」变成一件更小的事。
作者明确交代了边界:这个原型的问题是他自己选的,还没有在妈妈身上实测过,所以不能声称帮她省了时间,也不能引用她没给过的反馈。这一点在整篇说明里被反复强调。
![]()
抽屉里长什么样
应用打开后是一个插画卡片组成的抽屉。鼠标悬停,卡片会抬起并倾斜;点击或轻触,收据就展开。搜索跑在已保存的文本上,原始 PDF 或照片可以一直挂在旁边。如果收据上没有写保修到期日,那个字段就保持空白——不猜、不填。
上传 JPG、PNG 或 PDF 后,系统会抽取文字并给出一个识别出的账单类型建议。一张合成的电费单被归为「Electricity bill → Services」,INR 400 的金额和原始图片都保留了下来。Tesseract.js 在应用服务器上读取英文和印地语文字;PDF.js 直接读取内嵌文本;扫描页的 OCR 也实现了,但只限于前三页,而且浏览器端的复测还没做。照片和内嵌文本的 PDF 通过了功能检查。模糊照片、手写体和陌生版式的账单,都可能失败。
说一句印地语,账单自己冒出来
「Speak receipt」功能可以录一段简短的印地语或印度英语备注,也可以直接传音频文件。本地的 Whisper-small 通过 ONNX 转换和 Transformers.js 完成转写。一个保守的解析器会给出物品建议和明确说出的金额。一段合成的印地语开发录音产出了「Electricity bill · ₹400」;不完美的转写文本会一直显示出来,供人手动修正。语音备注被标记为备注,而不是原始发票。录音是临时的,只有经过复核的文本才会被保存。
语音验证记录用的是两个 Murf 生成的开发用样本,不是留出集准确率测试,也不是他妈妈的反馈。转写和云端保存/重载是分开验证的。进一步的实时麦克风和嘈杂家庭环境测试仍待进行。Murf Isha 提供印度英语的演示旁白;Murf 不负责转写用户备注。
演示视频是一段带字幕的走查,旁白由 Murf Isha 的印度英语合成,画面是从真实交互中截取的截图拼起来的。它展示了印地语搜索、收据证据、一次无匹配查询、上传收据照片并 OCR、印地语语音转写、一份附带的 PDF、归档、撤销,以及重载后的持久化。它不是连续录屏。演示里的每一张收据都是虚构的。
真正有用的 AI 任务是检索
一句印地语查询,比如 कपड़े धोने वाली मशीन,能找到一张英文的洗衣机收据——哪怕查询里的词一个都没在收据里出现。这就是这个项目里 AI 真正干活的地方。
模型是 multilingual-e5-small,用的是 Xenova 的 ONNX 转换,跑在 Transformers.js 上。量化推理在应用服务器上执行。查询和收据分块会变成归一化的 384 维向量。
PostgreSQL 存源文本、元数据、全文检索向量和 pgvector 嵌入。精确的词和发票号很重要,所以关键词搜索仍然是系统的一部分。倒数排名融合把关键词排名和语义排名合到一起。一个相似度闸门会过滤掉弱匹配或含糊的语义匹配。这些分数不是概率。
界面用 React 和 Vite,Express 提供 API 和构建后的应用。PDF.js 在收据视图里渲染原件。Codex 帮助实现和测试了这个项目,生成的家电插画提供视觉线索——这些插画不是他妈妈物品的照片。
数据层与验证记录
Tiger Data 是实时的数据层。一个专用的免费 Tiger Cloud 服务把收据文本和 384 维嵌入存进 pgvector。一次实时验证跑通了保存、精确发票检索、向量搜索、重连持久化、归档排除和撤销。验证记录里包含时间戳和 pgvector 版本。最初的图库/PDF 走查和检索基准用的是本地 PGlite。新的 OCR 和语音录入截图是在应用连到 Tiger Cloud 时截取的。云端持久化是单独验证的。
免费服务提供的是私有的 Timescale 证书颁发机构。作者在首次连接时把该 CA 固定在本地,之后的连接保持链和主机名检查开启。这个首次使用即信任的步骤在 README 里有披露;它不是公开认证的证书链。
作者对六张虚构收据和 18 条查询跑了一次固定评估。完整的查询集和结果都是公开的。这是一个小型的、由构建者自己做的评估。一句印地语洗衣机短语被拒绝了,一句 Hinglish 的吊扇查询返回了净化器。这些失败限制了他把这个工具放心交给别人的程度。
全部 21 个自动化测试通过,覆盖检索、标识符、校验、源文件服务、归档/撤销、数据库持久化、真实图片 OCR 和保守的语音备注解析。桌面和手机布局都在浏览器里检查过。
开放模型让这个项目有一个可以运行、检查、替换和测试的检索组件,而不需要托管的生成式 API。权重下载之后,本地模式把收据数据和推理都留在笔记本上。经过验证的 Tiger Cloud 模式把收据文本和嵌入存到远程,而模型推理和原始附件留在应用服务器上。那个模式不是完全离线的。
这个模型只做一件有限的事:帮忙定位已有的证据。它不写关于保修范围的答案。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.