いろんなアプローチがあると思いますが、最近流行のDeepLearningを用いてOCRをしたいと思います。
詳しくは次章以降で述べますが、簡単には次の方針でいくことにします。
このタスクは、物体認識のDeepLearningの手法を用いることで解決できます。 物体認識は、「何が」「どこの場所に」「どんな大きさで」存在するか判定しますが、 今回は、文字があるかないかの2クラス(背景と文字)分類のバウンディングボックスを 検索させることとします。
日本語の場合、縦書きと横書きがあり、文字の配置の順番が異なります。 文字の場所の詰まり具合や空きの状況、配置の角度等から縦横を判定し、 基線がどこにあるかを決定します。
文字の画像から、text表現にします。 今の時代はUTF8で何でも表現できるので、この文字コードで表すこととします。 1文字ずつ処理するのですが、前後の文脈を読んでカタカナとひらがな等を 切り替えようと、Transformerベースの変換器を使用します。
UTF8文字列が得られたので、あとは、ふりがな等の位置によって意味がある文字を 適切に出力します。