読者です 読者をやめる 読者になる 読者になる

OCRと画像の回転

メモっとかないと間違いなく忘れそうなので大したネタでもないけど。

iOSでカメラから取り込んだ画像は撮影時の本体の向きが考慮された状態になっていない(メタデータとして向きの情報が記録されている)。

つまり、 iOSで読み込んだ画像をそのままOCRエンジンであるTesseract-OCRに渡してもダメで、撮影時の向きと画像の向きを合わせてやる必要がある。

基本的にやることは下記リンク先の通り(特にコメント欄の方)。

qiita.com

iOSアプリでは常識の部類なんだろうけど知らないと普通にハマる。

リンク先の通りfixOrientation()メソッドをUIImageクラスのエクステンションとして定義して、下記のようにする。

        let tesseract = G8Tesseract(language: "jpn")
        
        tesseract.delegate = self
        
        tesseract.image = image.fixOrientation()
        tesseract.recognize()
        
        let ocred_text =  tesseract.recognizedText

また、画像サイズの大きさに上限があるようなので、自作のアプリの場合は長辺の長い方が2048ピクセル以下になるように拡大縮小しています。

とりあえず備忘録。