之前帮家人买过几次彩票,验奖时发现体验挺麻烦的:要么去投注站扫描,要么手动一个个核对号码。作为程序员当然想到能不能写个工具解决,于是就有了这个小程序项目。
技术选型上选择了微信小程序 + 腾讯云开发(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 2 天前
老铁,官方的小程序支持扫码验奖。。。
|
2
dagmurphy OP @spacebound 福彩只有部分省份支持扫码验奖。
|
3
x1n04 2 天前
个人小程序支持订阅消息模板么?
|
5
Rrrrrr 2 天前
为什么你可以做,5 ,6 年前我做了一个记录号码的,小程序不给过
|
6
Sh1xin 2 天前
我的经验是直接用 LLM 。OCR 这步省掉,不然有些 OCR 识别出来以后结构有变化,反而会误导 LLM
|
7
seamonster 2 天前
很实用,但是首页有点丑,哈哈哈哈,为什么拍照那里的白色背景是个椭圆形,就像分辨率不足被拉伸了一样
|
9
dagmurphy OP @seamonster 不会设计,审美不在线。。。
|
11
SaiyZhao 2 天前
有没有可能官方 app 和小程序扫条形码就能验奖啦。线下机子也能扫。
|
12
theroad 2 天前
19 年做了一个一样的,包含彩票记事本,自动兑奖的,修改了好几遍都不能上架😅
|
13
houshengzi 2 天前
之前也考虑做类似的小程序,看完评论后,没想到有这么多佬都做过了
|
14
chunqiu233 2 天前
@dagmurphy 可以问下你是用什么类目吗
|
15
dagmurphy OP @chunqiu233 信息查询类
|
19
DavZhn 2 天前
我一直买体彩,官方的小程序很好用哈哈
|
21
biubiula 1 天前
哈哈哈,我前些天用 AI 也搞了个彩票小程序,后面懒得收尾了
|