妈妈把一条WhatsApp消息转给我,说她的SBI账户不更新KYC就会被冻结。她没有点那个链接。她打了那个号码。
我妈读孟加拉语,我祖父母也是。但管着他们生活的大部分纸张不读孟加拉语:电费单、银行信件、血压药板上的说明,还有每部印度家长手机里不断堆积的"尊敬的用户,您的账户今天将被冻结"。
![]()
于是这些东西最后都变成一张照片发给我,配一句"এটা কী?"(这是什么?)。如果我在开会,它就得等。如果那条消息是骗局,等待就是最危险的部分。
চিঠি(Chithi)在孟加拉语里是"信"的意思。它只做一件事。你把手机对准任何一张纸或任何一张截图,它就用你的语言念出来:
——这是什么。"这是你的CESC电费单。"
——你需要做什么。"在12-10-2026前支付₹1,182.00。"
——这是不是个陷阱。一个红色的প্রতারণা!(骗局!)印章,配上"什么都别做。别点链接,别打消息里的电话,别把OTP告诉任何人",以及一个巨大的按钮,按下去就能打给我。
它最初只是给我家人用的孟加拉语应用。后来我意识到同样的问题存在于印度的每一种语言里,所以它现在能说印度宪法第八附表里的全部22种语言,外加英语。
演示
试用地址:chithi-teal.vercel.app。选一种语言,然后点一张示例照片(一条诈骗短信、一张账单、一板药),或者上传你自己的。
公开演示版把Gemma跑在云端,这样你不用安装任何东西就能试,页面上也写明了这一点。在家里,它跑在我们自己的笔记本电脑上。下面会讲这个区别为什么重要。
代码
codeswithroh / chithi
把手机对准任何账单、信件或WhatsApp转发。用你的语言听出来。知道它是不是骗局。开放权重的Gemma,22种印度语言。
চিঠি(Chithi)
在线演示:https://chithi-teal.vercel.app。选一种语言,然后点一张示例照片。为DEV Hacktoberfest周末挑战赛"为朋友而建"而做。MIT许可。
给我妈和祖父母的口袋阅读器,他们读孟加拉语,不读英语。
把手机对准任何账单、银行信件、药板或WhatsApp转发。Chithi用Gemma(一个跑在家用笔记本上的开放权重模型)读出来,然后用你的语言念出来:
——这是什么,
——你需要做什么(金额、截止日期),
——这是不是个骗局,配一个巨大的按钮打给我。
照片永远不离开家。没有云端API,没有账号,没有月费账单。
它怎么工作
手机(PWA,带摄像头)──Wi-Fi──▶ 笔记本:Bun服务器 ──▶ Ollama + Gemma(视觉)
▲ │
└── 用你的语言说话 └── 防骗规则层(只能提高风险,永远不能降低)
(手机自带的离线语音)
server.ts
提供……
整个东西是故意做小的:一个Bun服务器、一个不用框架的手机网页应用,加上不到200行共享逻辑,负责提示词、清理和防骗规则。
我怎么做的
妈妈的手机(网页应用,带摄像头)──家庭Wi-Fi──▶ 家用笔记本:Bun服务器 ──▶ Ollama + Gemma 3 4B(视觉)
▲ │
└── 语音回答(手机自带的离线语音) └── 防骗规则(可以提高风险,永远不能降低)
模型。Gemma 3 4B,一个开放权重的视觉模型,跑在我那台8GB内存的M3 MacBook上的Ollama里。手机通过家庭Wi-Fi发一张照片过去。Gemma读完,按固定的JSON结构回答:原文、文档类型、两行解释、该做什么、金额、截止日期,以及safe、caution、scam三档风险等级。Ollama的JSON模式保证回复永远能解析。
语音。手机自带的文字转语音,孟加拉语用bn-IN(印地语用hi-IN,泰米尔语用ta-IN……)。离线可用。没有对应手机语音的语言,就退回到读同一套文字系统的语音——迈蒂利语走印地语语音,孔卡尼语走马拉地语语音。
手机应用。一个能加到主屏幕的小网页。按钮巨大,字号巨大,没有任何需要学的东西。一个按钮开摄像头,一个按钮选截图。
测试教会我的事
大部分工作不是"调用模型",而是找出一个4B模型会怎么失败,然后确保这些失败到不了我妈那里。
1. 模型抓住了骗局,然后给出了骗子的号码。第一次测试是一条假的SBI"KYC更新"短信。Gemma正确判断为骗局,然后建议:"拨打消息里的求助热线了解更多。"那个求助热线就是骗子。从那以后,只要判定是骗局,建议就换成由人用每种语言写好的固定文本,模型永远不写这段。
2. 小模型不该是唯一的防线。scam.ts里有一层确定性规则,检查转写出来的文字里有没有OTP和PIN索取、KYC、"账户被冻结"、彩票和奖品话术、短链接、.apk文件,以及AnyDesk这类远程控制应用。它只能提高风险等级,永远不能降低。药板上印的MRP会被记录,但不会被升级为风险。
3. 数字太重要了,不能让它转述。Gemma有一次把₹1,182念成了"一千一百八十八"。现在解释部分被禁止包含任何数字。金额和截止日期来自单独的字段,按印刷原样复制,应用把它们放在各自的框里显示。
4. 小模型会在文字系统之间漂移。孟加拉语的回答里混进过韩文字符,马拉雅拉姆语的回答里混进过罗马尼亚语和俄语单词。现在,任何不属于读者自己文字系统(或品牌名用的纯英文,比如SBI)的字母都会被剥掉,漂移严重的回答会重试一次。没有这层剥离,手机的孟加拉语语音会在句子中间卡在韩文上。
5. 8GB的笔记本有它的规矩。第一张照片花了将近四分钟,因为模型在加载。然后我的一个修复让事情更糟:预热请求和真实请求用了不同的上下文大小,Ollama把模型加载了两次,然后超时。现在服务器在启动时用同样的设置预热模型,并让它保持加载。在家里,一张照片要25到60秒——对应用来说很慢,对一封信来说刚好。
全部22种语言
首次启动时,Chithi用每种语言自己的文字显示所有语言,……
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
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.