🎯 背景与痛点#
在使用微软企业账户(Microsoft Entra ID / Office 365)登录时,系统常要求在电脑屏幕上查看一个 2 位随机数字,然后打开手机上的 Authenticator 点击匹配数字。
日常痛点:
- 很多时候手机屏幕停留在其他应用,需要切换多步;或者在电脑屏幕上扫一眼后容易记错;
- 频繁的 2FA 确认打断了心流,尤其对于每天需要反复登录各类企业系统的开发者和职场人。
Sesamo(取名自“芝麻开门” Sesame)诞生于这个极度精准的痛点:拿起手机对准屏幕,零延迟本地 OCR 自动识别匹配码并提示,1 秒完成验证流程。
🚀 核心特性#
- ⚡ 毫秒级端侧视觉识别:基于 Apple 原生 Vision Framework 与设备端 CoreML 模型,视频流逐帧本地分析,无任何网络请求,隐私 100% 安全。
- 🎯 智能防抖与高容错匹配:自动过滤屏幕反光、摩尔纹和非数字干扰字符,秒级锁定 2 位数字目标。
- 📱 极简轻量交互:应用冷启动时间低于 0.2 秒,相机对准屏幕瞬间完成识别与触觉震动反馈。
- 🌐 跨平台发布:同时支持 iOS (App Store) 与 Android (Google Play)。
🏗️ 核心代码实现#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| import Vision
import SwiftUI
final class CodeScannerEngine: ObservableObject {
@Published var detectedCode: String?
private lazy var textRequest: VNRecognizeTextRequest = {
let request = VNRecognizeTextRequest { [weak self] request, error in
guard let results = request.results as? [VNRecognizedTextObservation] else { return }
self?.processObservations(results)
}
request.recognitionLevel = .accurate
request.usesLanguageCorrection = false
request.customWords = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
return request
}()
func analyzeFrame(_ sampleBuffer: CMSampleBuffer) {
guard let pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) else { return }
let handler = VNImageRequestHandler(cvPixelBuffer: pixelBuffer, orientation: .up)
try? handler.perform([textRequest])
}
}
|
📈 交付成果与数据#
🔗 下载与体验#