はじめに
OCRに触れてみようということで、オープンソースで手軽に試せるtesseractを使ってみることにしました。
ここでは、画像を読み込ませて、画像内の読み取った文字列を出力するまでにやったことをメモに残しました。
ここでは、3系のインストールになっているので、すんなり4系が入らない場合は、こちら。
tesseractとは
- https://github.com/tesseract-ocr/tesseract/wiki
- オープンソースのOCRエンジン
- Apache2.0 licence
- 画像内にあるテキストを読み取って出力
インストール
上記のサイトを見ながら、Ubuntu 16.04.4 LTS にインストールしてみます。
- コマンドの実行
$ sudo apt install tesseract-ocr
$ sudo apt install libtesseract-dev
- インストール後の確認
$ tesseract -v
tesseract 3.04.01
leptonica-1.73
libgif 5.1.2 : libjpeg 8d (libjpeg-turbo 1.4.2) : libpng 1.2.54 : libtiff 4.0.6 : zlib 1.2.8 : libwebp 0.4.4 : libopenjp2 2.1.2
実行してみる
- まずは普通に実行
- 出力先ファイルは、output.txtになる。(拡張子は自動的に付与される)
$ tesseract test.png output
- -l jpn のオプション追加で日本語指定をすると何やらエラーが…
$ tesseract test.png output -l jpn
Tesseract Open Source OCR Engine v3.04.01 with Leptonica
Error opening data file /usr/share/tesseract-ocr/tessdata/jpn.traineddata
Please make sure the TESSDATA_PREFIX environment variable is set to the parent directory of your "tessdata" directory.
Failed loading language 'jpn'
日本語対応をさせる
- 下記サイトから日本語の言語ファイルを落としてくる
- https://github.com/tesseract-ocr/tessdata
- 上記のエラーメッセージにもあるとおり、/usr/share/tesseract-ocr/tessdata/ に日本語用のファイルがないというので、そこに保存
$ wget https://github.com/tesseract-ocr/tessdata/raw/master/jpn.traineddata
- 再度日本語指定で実行してみると問題解消!
- 補足:エラーメッセージにあるように、環境変数(TESSDATA_PREFIX)で指定するという方法もあるようです。
結果
PythonのWikiの目次のスクリーンショットを撮って試してみた結果がこちら。
きれいに読み取っているところもあれば、何がなんだか分からないのもあり。
読み込ませた画像(左)とその結果(右)
コマンドにオプション追加で、何ができるのかはまだ分かっていないので、試してみようと思います。