Is it possible to read japanese tategaki with vision framework

We are building an app which can reads texts. It can read english and Japanese normal texts successfully. But in some cases, we need to read Japanese tategaki (vertically aligned texts). But in that times, the same code gives no output. So, is there any need to change any configuration to read Japanese tategaki? Or is it really possible to read Japanese tategaki using vision framework?

    lazy var detectTextRequest = VNRecognizeTextRequest { request, error in
        self.resStr="\n"
        self.words = [:]
        // Get OCR result
        guard let res = request.results as? [VNRecognizedTextObservation] else { return }
        // separate the words by space
        let text = res.compactMap({$0.topCandidates(1).first?.string}).joined(separator: " ")
        var n = 0
        self.wordArr=[[]]
        self.xs = 1
        self.ys = 1
        var hs = 0.0 // To compare the heights of the words
        // To get the original axis (top most word's axis), only once
        for r in res {
            var word = r.topCandidates(1).first?.string
            self.words[word ?? ""] = [r.topLeft.x, r.topLeft.y]
            if(self.cartLabelType == 1){
                if(word?.components(separatedBy: CharacterSet(charactersIn: "//")).count ?? 0>2){
                    self.xs = r.topLeft.x
                    self.ys = r.topLeft.y
                }
            }
            }
        }
    }
Answered by DTS Engineer in 823327022

Hello,

Re: "So, is there any need to change any configuration to read Japanese tategaki?"

In the case of tategaki it seems you would need to rotate a line of characters 90 degrees to a form horizontal line, and then rotate each character 90 degrees such that they're oriented upright. If I recall correctly, you would also read each line from right-to-left.

In other words you would re-render the text into a conventional left-to-right horizontal format before performing a RecognizeTextRequest.

Note that you might be able to avoid line rotation using the orientation property of the perform function.

Hello,

Re: "So, is there any need to change any configuration to read Japanese tategaki?"

In the case of tategaki it seems you would need to rotate a line of characters 90 degrees to a form horizontal line, and then rotate each character 90 degrees such that they're oriented upright. If I recall correctly, you would also read each line from right-to-left.

In other words you would re-render the text into a conventional left-to-right horizontal format before performing a RecognizeTextRequest.

Note that you might be able to avoid line rotation using the orientation property of the perform function.

... just noticed that VNRecognizeTextRequest doesn't support an orientation so RecognizeTextRequest is preferred.

Note also that both API allow you specify recognitionLanguages which I don't see in your example above. That said, see if you get better results for tategaki simply by specifying Japanese as the only recognized language.

Is it possible to read japanese tategaki with vision framework
 
 
Q