
之前帮家人买过几次彩票,验奖时发现体验挺麻烦的:要么去投注站扫描,要么手动一个个核对号码。作为程序员当然想到能不能写个工具解决,于是就有了这个小程序项目。
技术选型上选择了微信小程序 + 腾讯云开发(CloudBase),主要是看中了云开发的 Serverless 架构,省去了运维的麻烦,可以专注在业务逻辑上。
最开始的想法是直接用 OCR 识别彩票上的号码,但实际遇到了几个问题:
后来采用了 OCR + LLM 结构化提取 的方案:
// 1. 先用腾讯云 OCR 识别文字 const ocrResult = await customOCRService.detectFromDataURL(imageData); // 2. 将 OCR 结果交给智谱 AI 的 LLM 进行结构化解析 const lotteryInfo = await parseLotteryByZhipuLLM(ocrResult.ocr_result); // 3. 获取开奖数据进行比对 const issue = await getIssue(app, lotteryType, lotteryInfo.issue); const calcRes = await calculateWinning(lotteryInfo, issue); LLM 的好处是可以理解上下文,自动识别出"这是双色球"、"这些是红球号码"、"这是蓝球",准确率比纯规则匹配高很多。
后端采用云托管(Cloud Run)部署 Express 服务,配合 CloudBase SDK 操作数据库:
// 使用数据模型而不是直接操作 database const models = cloudBaseClient.getModels(); await models.tickets.create({ data: { lottery_type, issue, numbers, status: isOpened ? 'winning' : 'undrawn', _openid: openId // 安全隔离,每个用户只能查看自己的数据 } }); 这样做的好处:
_openid)未开奖的彩票可以订阅开奖通知,技术上用的是微信小程序订阅消息能力:
// 前端申请订阅权限 wx.requestSubscribeMessage({ tmplIds: ['xxx'], success: (res) => { // 调用后端接口记录订阅 callCloudApi('/api/message/subscribe', { ticketId, issue }) } }) // 后端定时任务检查开奖 // 当检测到新期开奖时,批量推送消息给订阅用户 最初直接上传原图,有些用户拍照动辄 5-8MB,上传慢还占存储。后来加了前端压缩,限制宽度 1200px,质量 0.8,效果不错。
腾讯云 OCR 按次计费,为了省钱做了些优化:
这个项目让我对 OCR + LLM 结合 有了新的认识。传统做法是 OCR 识别后用正则或规则提取信息,但面对非标准化的场景(比如各种彩票样式),维护成本很高。引入 LLM 做结构化提取后,准确率和鲁棒性都提升了不少,而且几乎不需要针对新样式单独写规则。
另外云开发这种 Serverless 模式确实适合个人开发者,不用操心服务器、域名备案、数据库运维这些琐事,专注写业务逻辑就行。
小程序搜索"彩运多"可以体验,欢迎交流技术实现细节。
项目还在持续优化中,后续计划:
1 spacebound 12 天前 老铁,官方的小程序支持扫码验奖。。。 |
2 dagmurphy OP @spacebound 福彩只有部分省份支持扫码验奖。 |
3 x1n04 12 天前 个人小程序支持订阅消息模板么? |
5 Rrrrrr 12 天前 为什么你可以做,5 ,6 年前我做了一个记录号码的,小程序不给过 |
6 Sh1xin 12 天前 我的经验是直接用 LLM 。OCR 这步省掉,不然有些 OCR 识别出来以后结构有变化,反而会误导 LLM |
7 seamonster 12 天前 很实用,但是首页有点丑,哈哈哈哈,为什么拍照那里的白色背景是个椭圆形,就像分辨率不足被拉伸了一样 |
9 dagmurphy OP @seamonster 不会设计,审美不在线。。。 |
11 SaiyZhao 12 天前 有没有可能官方 app 和小程序扫条形码就能验奖啦。线下机子也能扫。 |
12 theroad 12 天前 19 年做了一个一样的,包含彩票记事本,自动兑奖的,修改了好几遍都不能上架 |
13 houshengzi 12 天前 之前也考虑做类似的小程序,看完评论后,没想到有这么多佬都做过了 |
14 chunqiu233 12 天前 @dagmurphy 可以问下你是用什么类目吗 |
15 dagmurphy OP @chunqiu233 信息查询类 |
19 DavZhn 11 天前 我一直买体彩,官方的小程序很好用哈哈 |
21 biubiula 11 天前 哈哈哈,我前些天用 AI 也搞了个彩票小程序,后面懒得收尾了 |