0

0

如何在OCR实时识别中过滤并显示预设关键词

聖光之護

聖光之護

发布时间:2026-01-16 18:06:26

|

881人浏览过

|

来源于php中文网

原创

如何在OCR实时识别中过滤并显示预设关键词

本文介绍如何在android ocr应用中,从识别出的文本中精准筛选出预定义关键词列表中的匹配项,并仅将这些匹配词(或其组合)显示在textview中,避免无效循环和作用域错误。

在OCR实时识别场景中(如使用ML Kit或Firebase ML Vision),receiveDetections() 回调会持续返回识别出的文本块(TextBlock)。原始代码将所有识别内容拼接后直接显示,但实际业务常需白名单过滤——即仅展示预设关键词(如 "abc"、"login"、"error" 等),其余内容忽略。

你遇到的问题核心在于两处关键错误:

  1. 作用域错误:stringBuilder 是 run() 内部的局部变量,无法在外部 while 循环中访问;
  2. 逻辑混乱:while (textView.getText().toString().trim().length() == 0) 是忙等待式阻塞,既无意义又易导致ANR;且 list.contains(stringBuilder) 试图用 StringBuilder 对象去匹配 String 列表,类型不兼容,永远返回 false。

✅ 正确做法是:在拼接完全部识别文本后,立即进行关键词匹配与过滤,再设置 TextView。以下是优化后的完整实现:

Qwen
Qwen

阿里巴巴推出的一系列AI大语言模型和多模态模型

下载
@Override
public void receiveDetections(Detector.Detections<TextBlock> detections) {
    final SparseArray<TextBlock> items = detections.getDetectedItems();
    if (items.size() == 0) return;

    // Step 1: 拼接所有识别文本(保留换行便于阅读)
    StringBuilder fullText = new StringBuilder();
    for (int i = 0; i < items.size(); i++) {
        TextBlock item = items.valueAt(i);
        fullText.append(item.getValue()).append("
");
    }
    String rawResult = fullText.toString().trim();

    // Step 2: 定义关键词白名单(建议声明为成员变量,避免重复创建)
    List<String> keywords = Arrays.asList("abc", "login", "submit", "cancel"); // 示例

    // Step 3: 提取所有匹配的关键词(支持子串匹配,区分大小写可按需调整)
    StringBuilder filtered = new StringBuilder();
    for (String keyword : keywords) {
        if (rawResult.toLowerCase().contains(keyword.toLowerCase())) {
            if (filtered.length() > 0) filtered.append("
");
            filtered.append(keyword);
        }
    }

    // Step 4: 更新UI(必须在主线程)
    textView.post(() -> textView.setText(filtered.toString().isEmpty() 
        ? "No keywords detected" 
        : filtered.toString()));
}

? 关键注意事项

  • ✅ 使用 toLowerCase() 实现大小写不敏感匹配,更符合实际OCR识别容错需求;
  • ✅ 避免在回调中做耗时操作或循环等待,所有处理应在单次回调内完成;
  • ✅ keywords 建议定义为 final 成员变量(如 private final List keywords = ...),提升性能与可维护性;
  • ⚠️ 若需精确单词匹配(而非子串),请改用正则 \bkeyword\b 或 split("\s+") 后遍历比对;
  • ⚠️ 多次调用 setText() 可能引发UI抖动,如需高频率更新,可考虑添加防抖逻辑(如 Handler.postDelayed 延迟合并)。

通过该方案,你的OCR应用将只响应并高亮显示关注的关键词,大幅提升信息可读性与交互精准度。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

910

2023.08.02

while的用法
while的用法

while的用法是“while 条件: 代码块”,条件是一个表达式,当条件为真时,执行代码块,然后再次判断条件是否为真,如果为真则继续执行代码块,直到条件为假为止。本专题为大家提供while相关的文章、下载、课程内容,供大家免费下载体验。

104

2023.09.25

scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

411

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

366

2023.10.25

length函数用法
length函数用法

length函数用于返回指定字符串的字符数或字节数。可以用于计算字符串的长度,以便在查询和处理字符串数据时进行操作和判断。 需要注意的是length函数计算的是字符串的字符数,而不是字节数。对于多字节字符集,一个字符可能由多个字节组成。因此,length函数在计算字符串长度时会将多字节字符作为一个字符来计算。更多关于length函数的用法,大家可以阅读本专题下面的文章。

952

2023.09.19

android开发三大框架
android开发三大框架

android开发三大框架是XUtil框架、volley框架、ImageLoader框架。本专题为大家提供android开发三大框架相关的各种文章、以及下载和课程。

329

2023.08.14

android是什么系统
android是什么系统

Android是一种功能强大、灵活可定制、应用丰富、多任务处理能力强、兼容性好、网络连接能力强的操作系统。本专题为大家提供android相关的文章、下载、课程内容,供大家免费下载体验。

1798

2023.08.22

android权限限制怎么解开
android权限限制怎么解开

android权限限制可以使用Root权限、第三方权限管理应用程序、ADB命令和Xposed框架解开。详细介绍:1、Root权限,通过获取Root权限,用户可以解锁所有权限,并对系统进行自定义和修改;2、第三方权限管理应用程序,用户可以轻松地控制和管理应用程序的权限;3、ADB命令,用户可以在设备上执行各种操作,包括解锁权限;4、Xposed框架,用户可以在不修改系统文件的情况下修改应用程序的行为和权限。

2117

2023.09.19

Swift iOS架构设计与MVVM模式实战
Swift iOS架构设计与MVVM模式实战

本专题聚焦 Swift 在 iOS 应用架构设计中的实践,系统讲解 MVVM 模式的核心思想、数据绑定机制、模块拆分策略以及组件化开发方法。内容涵盖网络层封装、状态管理、依赖注入与性能优化技巧。通过完整项目案例,帮助开发者构建结构清晰、可维护性强的 iOS 应用架构体系。

0

2026.03.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Excel 教程
Excel 教程

共162课时 | 19.8万人学习

Java 教程
Java 教程

共578课时 | 76.1万人学习

Uniapp从零开始实现新闻资讯应用
Uniapp从零开始实现新闻资讯应用

共64课时 | 6.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号