印度街头的杂货铺里,柜台秤旁边总搁着一本红布封面的本子,边角被墨水蹭得发黑。这就是Bahi-Khata,传统的手写赊账账本。邻居来买牛奶、面粉、芥末油,钱不急着给,店主随手记一行:几月几号、谁、买了什么、多少钱。
![]()
这套靠信任运转的体系,到了月底就卡在两个地方。一是算账,把150多个客户的零散赊账、现金还款和累计余额从手写体里对出来,每个周日晚上要花3到4个小时眯着眼扒拉。二是催款,街坊邻里低头不见抬头见,店主实在不好意思当面跟朋友、长辈要钱,一拖就是几周,每家店被卡住的周转资金在5万到25万卢比之间,约合600到3000美元。
有人会问,拿Google Lens或者ChatGPT扫一下不就行了?店主的回答很直接。客户名单、电话、欠款记录在他们眼里是社区信任的凭证,不愿意传到别人的云服务器上。商业云的多模态接口每张图要收0.02到0.05美元,一个月扫150到200页,微薄的利润直接被吃掉。更要命的是,生成式模型是概率性的,不是确定性的,万一把墨迹模糊的950认成1950,邻里之间的信任就彻底没了。
KhataSnap就是冲着这三个问题来的。它的思路是把识别放在本地跑,用开源权重模型Google Gemma 2,通过Ollama在客户端完成,账本照片不出本机。识别完不是直接记账,而是进入一个左右分屏的核对界面:左边是原始手写照片,上面叠着SVG标注框;右边是提取出来的交易卡片,包含客户名、日期、商品、金额和借贷方向。
遇到笔画重叠的模糊数字,比如Priya Singh那笔到底是950还是450,系统会标成琥珀色警报,给出三个按钮:改成450、确认950,或者手动输入。没核对过的条目会被隔离在最终账本之外,不会混进去。金额统计也分开显示:已核验净影响、待核验条目数、潜在净影响区间。
算钱这件事,KhataSnap不让AI碰。AI只负责把图像转成文字、把语言翻译过来,余额一律用代码确定性地算:当前余额等于已核验的赊账总额减去已核验的还款总额。手写账本还常有算错的时候,比如客户原本欠1000,买了450的东西,还了200,正确余额应该是1250,店主却写成了1450,系统会把那200的差额标出来,配一个一键自动对账按钮。
催款环节做了本地化处理。西式自动催收通知语气生硬,容易伤和气,KhataSnap用自然的Hinglish起草提醒,分礼貌、朋友、正式、紧急四种语气。礼貌版大意是:您好,这里是Shri Ganesh Kirana Store,您有1250卢比的账还没结,方便时到店或通过UPI支付,谢谢。点一下就能在WhatsApp里打开,或者用ElevenLabs生成一段印地语语音,店主不用打字也能发出去。
作者在坎普尔一家开了14年、有80多个常客的杂货店做了实测。店主Satish Kumar把一页日常账本拍进去,5条记录里4条的名字、日期、商品名一次提取正确。第4行有个笔画很重的数字看着像950,核对界面标了琥珀色,他看了一眼,两秒内点了改成450。随后他挑了一个欠了1250卢比、拖了三周的客户,选了礼貌语气,当场通过WhatsApp把提醒发了出去。
Satish的原话是,最大的头疼就是每个周日晚上要花两个小时手动对账,如果这个软件能在他柜台的笔记本上离线算账,还能体面地发WhatsApp提醒,他愿意每月付150到200卢比。
从生意角度看,KhataSnap跑在开源权重模型上,推理在客户端或固定硬件上完成,每次扫描的边际成本是0。不烧接口token的钱,从第一天起就有95%以上的毛利。代码以MIT协议开源,网页版部署在Render上,另有GitHub Pages镜像,技术栈包括React 19、TypeScript、Tailwind CSS、Gemma 2 via Ollama、TabPFN-3.5、ElevenLabs、SerpApi、Sentry等。
一个值得琢磨的细节是,这套方案没有追求端到端全自动。它把最容易出错的判断权交回给人,把最不该出错的算术交给代码,把最需要分寸的沟通交给语气模板。对街角那些撑起社区日常的小店来说,这可能是比"更聪明的AI"更实在的东西。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
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.