OCRと画像の回転
スポンサーリンク
メモっとかないと間違いなく忘れそうなので大したネタでもないけど。
iOSでカメラから取り込んだ画像は撮影時の本体の向きが考慮された状態になっていない(メタデータとして向きの情報が記録されている)。
つまり、 iOSで読み込んだ画像をそのままOCRエンジンであるTesseract-OCRに渡してもダメで、撮影時の向きと画像の向きを合わせてやる必要がある。
基本的にやることは下記リンク先の通り(特にコメント欄の方)。
iOSアプリでは常識の部類なんだろうけど知らないと普通にハマる。
リンク先の通りfixOrientation()
メソッドをUIImageクラスのエクステンションとして定義して、下記のようにする。
let tesseract = G8Tesseract(language: "jpn") tesseract.delegate = self tesseract.image = image.fixOrientation() tesseract.recognize() let ocred_text = tesseract.recognizedText
また、画像サイズの大きさに上限があるようなので、自作のアプリの場合は長辺の長い方が2048ピクセル以下になるように拡大縮小しています。
とりあえず備忘録。