You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对OCR返回的JSON结果按前缀字符串实现模糊过滤?

解决OCR JSON结果中类似SQL LIKE的过滤问题

你遇到的问题核心是部分数据条目没有Text属性,导致调用includes或match时触发了Cannot read property 'includes' of undefined错误。

错误原因分析

之前的精确匹配d.Text == 'SALES'能正常工作,是因为只有带有Text: 'SALES'的条目会被匹配上,那些没有Text属性的条目会直接被过滤掉(undefined == 'SALES'结果为false)。但当你使用includes时,代码会遍历数组里的每一个条目,包括那些没有Text属性的条目,这时候尝试调用undefined.includes()就会抛出错误。

解决方案

在进行字符串匹配前,先确保Text属性存在且是字符串类型,再执行包含判断。这里有几种可靠的写法:

1. 基础兼容写法(适配所有环境)

var cashierData = data.filter(d => typeof d.Text === 'string' && d.Text.includes('CASH'));

这种写法先检查d.Text是否为字符串类型,避免了undefined或其他类型的干扰,再用includes判断是否包含目标前缀。

2. 简洁可选链写法(ES2020+ 环境可用)

如果你的运行环境支持ES2020及以上,可以用更简洁的可选链语法:

var cashierData = data.filter(d => d.Text?.includes('CASH'));

?.操作符会在d.Text为undefined或null时直接返回undefined,不会继续执行后面的includes,自然也就不会报错。

3. 旧环境替代写法

如果你的环境连includes都不支持(比如老旧浏览器),可以用indexOf替代:

var cashierData = data.filter(d => typeof d.Text === 'string' && d.Text.indexOf('CASH') !== -1);

效果验证

用上述代码过滤你提供的OCR数据片段,就能正确匹配到Text: 'CASHIER: JSMITH'的条目,实现类似SQL中LIKE '%CASH%'的效果。

内容的提问来源于stack exchange,提问作者Craigmax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:59:36