如何配置ML Kit数字墨水识别功能使其仅对数字内容进行识别?
ML Kit数字墨水识别仅识别数字实现方案
完全可以通过配置识别规则实现仅识别数字,解决数字误识别为字母的问题,操作步骤如下:
- 选用专属数字识别模型
下载识别模型时不要使用通用文字模型,选择专门的数字识别模型,大幅提升数字识别准确率:// 加载专门的数字识别模型 val modelIdentifier = DigitalInkRecognitionModelIdentifier.forLanguage("zxx-Zsym-digits") val model = DigitalInkRecognitionModel.builder(modelIdentifier).build() - 配置识别上下文限制识别范围
构建识别上下文时明确限制仅识别数字,排除字母识别结果输出:val recognitionContext = DigitalInkRecognitionContext.Builder() .setRestriction(DigitalInkRecognitionContext.RESTRICTION_DIGITS) .build() // 识别时传入该上下文配置 recognizer.recognize(ink, recognitionContext) - 识别结果二次校验过滤
拿到识别候选结果后,新增一层正则校验,仅保留纯数字结果,彻底过滤掉字母类误识别内容:val matchedDigit = recognitionResult.candidates .firstOrNull { it.text.matches(Regex("^[0-9]$")) } ?.text ?: "" // 将匹配到的数字设置到TextView yourTextView.text = matchedDigit
以上三步配置完成后,即可解决1识别为I/i、4识别为u/U/y/Y、5识别为S/s的误识别问题。
内容的提问来源于stack exchange,提问作者Taha Sami
相关产品推荐
相关产品推荐

