请问下,我在网页端采用jssdk实现一个敏感词检测功能,后台有个敏感词/错词库,需要拿到用户上传的word文档的文字(图片不需要检测)内容去后台的敏感词库匹配,匹配完成后返回文档中每个敏感词/错词的位置,但是一旦word中含有图片或其他元素,就会造成定位不准,请问我能有什么办法来获得一个相对准确的定位,下面是代码
async function test () {
const app = this.instance.Application
const range = await app.ActiveDocument.Content
//全文本内容, 获取到的是包含了 \t ,\n, 空格 的纯文字
const text = await range.Text
// 文档中有图片的话,这里获取到的Start和End在有时候会变得很长,比如Start:0, End: 1000, 但 text.length才是700
console.log(await range.Start, await range.End)
// 检测
const resultRanges: {
// 敏感词
word: string
// 开始位置
start: number
// 结束位置
end: number
} = await sensitive(text)
// 将敏感词加上下划线,在word中都是纯文本的时候准确,有图片后就不是很准
const underlineGroupIds = await app.ActiveDocument.SetCustomUnderline({
Underlines: resultRanges.map(item => {
return [{
pos: item.start,
len: item.end - item.start,
color: '#b33622',
type: 'Straight'
}]
})
})
}
这种实现方式只解决了纯文本的时候的定位,但是一旦有图片或其他元素,就会定位错误,有没有其他方式可以获取一个相对准确的定位和range, 比如先把文档分段,然后按段去检测,有些段是图片就不检测。有没有这种api可以来实现,或是有其他的方案可以让我获取到一个比较准确的定位。麻烦了,谢谢。