Blog スタッフブログ

iOS Swift システム開発

[Swift][iOS16]画像から日本語OCRをやってみた

Swift

こんにちは、株式会社MIXシステム開発担当のBloomです。

早速本題のiOS16で画像から文章を抽出するOCR処理について、

お仕事の中で

Vision.framework

Vision.frameworkとは顔認識や文字認識、特徴量検出といった画像処理をサポートするフレームワークです。

iOS16から文字認識機能が日本語に対応し、iPhoneではiOS16から写真アプリから直接写真の中の文字をコピーできる等標準機能として実装されるようになったため、その機能をアプリからも使ってみましょう。

実際に認識してみた

では、実際に日本語認識をしてみましょう。下記はCGImageを渡すことで認識した文字列を返すサンプル関数です。

topCandidatesには文字の認識結果の候補最大数を指定しています。

func recognize(cgImage: CGImage, handler: @escaping([String]) -> Void) {
    var texts: [String] = []
    let request = VNRecognizeTextRequest { (request, error) in
        guard let observations = request.results as? [VNRecognizedTextObservation] else { return }
        for observation in observations {
            let candidates = observation.topCandidates(5)
            for candidate in candidates {
                print(candidate.string)
            }
            texts.append(candidates.first!.string)
        }
        handler(texts)
    }

    request.recognitionLanguages = ["ja-JP"]
    let handler = VNImageRequestHandler(cgImage: cgImage)
    try? handler.perform([request])
}

サンプル画像

弊社名刺の裏面です

認識結果

これだけで簡単に日本語OCRを実装できました。良かったですね。

参考文献

Vision – Apple Developer Documentation