【发布时间】:2019-02-27 12:21:05
【问题描述】:
我有一个带有返回对象的 TessBaseAPI() 对象。我想提取带有边界框的单词,但似乎无法正常工作。
val Text = tesseract.getUTF8Text()
给我文字。
val Words = tesseract.getWords.boxRects
给了我可以循环的边界框,但它们与 getUTF8Text() 不匹配。
循环遍历 tesseract.getWords 中的数据对象并尝试将其转换为字符串让我很乱。
val Words = tesseract.getWords
for(i in Words) {
Log.i(TAG, i.data.toString())
}
我发现一个非常糟糕的解决方法是使用 .getHOCRText 并对生成的内容执行正则表达式来获取文本和框。
val result = tesseract.getHOCRText(0)
val BoxPattern = Pattern.compile("(?<=title='bbox ).*?(?=; x_wconf)")
val BoxMatch = BoxPattern.matcher(result)
while(BoxMatch.find()) {
Log.i(TAG, BoxMatch.group().toString())
}
val TextPattern = Pattern.compile("(?<='>).*?(?=<\\/span>)")
val TextMatch = TextPattern.matcher(result)
while(TextMatch.find()) {
Log.i(TAG, TextMatch.group().toString())
}
那么,如何正确地从 tess-two 中提取文本和 boxRects?
【问题讨论】: