作ったもの

https://hub.docker.com/r/kaakaa/opencv-contrib-python3/

OpenCV で文字列認識

画像処理ライブラリの OpenCV で文字列認識をする場合、OpenCV ContoribItseez/opencv_contribの text モジュールを通じてtesseract-ocrを利用するのが定番のようです。 opencv で文字認識その1  Tesseract ラッパ - whoopsidaisies’s diary

OpenCV の機能で画像中の文字列の存在する位置を特定し、その特定したそれぞれの位置に対して Tesseract-ocr の文字列認識を実行する模様。

日本語を認識する場合、Tesseract で用意されている日本語トレーニングデータが使えそうです(まだ使ったことは無い)。 tesseract-ocr の言語データ(jpn.traineddata)について(その 1) - 古都の IT 職人 Blog

日本語文字列認識なら NHocr というのもあるらしい。 日本語 OCR ライブラリ NHocr を利用してみる - Qiita

OpenCV Contrib 付き Docker イメージ

OpenCV 自体は公式でプリビルドバイナリが配布されていたりするので、環境構築自体はすぐにできる。

ただ、Contrib のモジュールを使用する場合、公式ではバイナリが配布されておらず、さらに文字列認識を利用する場合は Tesseract をインストールする必要があったりするので、自分でソースからビルドする必要がありそう。

そこら辺の手順が面倒なので、OpenCV + OpenCV Contrib + Tesseract + Python3 環境付きの Docker イメージを作りました。

https://hub.docker.com/r/kaakaa/opencv-contrib-python3/ kaakaa/docker-opencv-contrib-python3: Dockerfile for OpenCV, OpenCV contrib and Python 3.5

元々、こちらの Docker イメージaustriker/docker-opencv-contrib-python3を使おうとしましたが、Tesseract が入ってなかったので、そのあたりを修正しました。

試しに実行

docker-opencv-contrib-python3/compose-sample at master · kaakaa/docker-opencv-contrib-python3の方に、文字列認識用の Web アプリが立ち上がる docker-compose を用意しました。 (Web アプリとしても文字列認識としても、まだまだ使い物レベルにはならないですが)

実際に実行してみた結果が下記画面。

sample.png

下の画像のピンクで囲まれた部分が、OpenCV によって特定された文字列位置なのですが、画像全体として認識されてしまっているよう。 一行一行認識してほしいのですが。

そこらへんはいろいろチューニングしていく必要がありそうです。

comments powered by Disqus