如何从 tess-two 中正确提取 text 和 boxRects?
How do I properly extract text and boxRects from tess-two?
我有一个带有返回对象的 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 中提取 text 和 boxRects 呢?
我解决了!
// As before
val tesseract = TessBaseAPI()
tesseract.init("/storage/emulated/0/com.ubft/", "eng")
tesseract.setImage(bm)
// Call utF8Text. Otherwise iterator returns null
tesseract.utF8Text
// Initiate an iterator
val iterator = tesseract.getResultIterator()
iterator.begin()
do {
val text = iterator.getUTF8Text(TessBaseAPI.PageIteratorLevel.RIL_TEXTLINE)
val boundingBox = iterator.getBoundingRect(TessBaseAPI.PageIteratorLevel.RIL_TEXTLINE)
// Do what you want with the result...
} while (iterator.next(TessBaseAPI.PageIteratorLevel.RIL_TEXTLINE))
iterator.delete()
TessbaseAPI.PageIteratorLevel 可以指定要返回的文本结构类型(段落、单词、行或按字符)。
我有一个带有返回对象的 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 中提取 text 和 boxRects 呢?
我解决了!
// As before
val tesseract = TessBaseAPI()
tesseract.init("/storage/emulated/0/com.ubft/", "eng")
tesseract.setImage(bm)
// Call utF8Text. Otherwise iterator returns null
tesseract.utF8Text
// Initiate an iterator
val iterator = tesseract.getResultIterator()
iterator.begin()
do {
val text = iterator.getUTF8Text(TessBaseAPI.PageIteratorLevel.RIL_TEXTLINE)
val boundingBox = iterator.getBoundingRect(TessBaseAPI.PageIteratorLevel.RIL_TEXTLINE)
// Do what you want with the result...
} while (iterator.next(TessBaseAPI.PageIteratorLevel.RIL_TEXTLINE))
iterator.delete()
TessbaseAPI.PageIteratorLevel 可以指定要返回的文本结构类型(段落、单词、行或按字符)。