>

반환 된 객체가있는 TessBaseAPI () 객체가 있습니다. 경계 상자로 단어를 추출하고 싶지만 작동하지 않는 것 같습니다.

val Text = tesseract.getUTF8Text()

텍스트를 알려주세요.

val Words = tesseract.getWords.boxRects

루프 할 수있는 경계 상자를 제공하지만 getUTF8Text ()와 일치하지 않습니다.

testesact.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를 올바르게 추출하려면 어떻게해야합니까?

  • 답변 # 1

    해결했습니다!

    // 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은 반환하려는 텍스트 구조 유형 (단락, 단어, 줄 또는 문자)으로 지정할 수 있습니다.

  • 이전 MacOS Sierra에서는 OS 기본 Python2.7 대신 Python3.x를 사용하도록 AWS CLI를 구성하는 방법은 무엇입니까?
  • 다음 jms - Java에서 JMSBytesMessage를 TextMessage로 변환하는 방법