LoginSignup
30
36

More than 5 years have passed since last update.

OpenCVで文字列認識するためのDockerイメージを作った

Last updated at Posted at 2016-07-02

作ったもの

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によって特定された文字列位置なのですが、画像全体として認識されてしまっているよう。
一行一行認識してほしいのですが。

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

30
36
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
36