2017-04-17
tesseract-ocrで画像内の文字列を取得する

■環境
CentOS 6.4
tesseract 3.04.00
leptonica-1.72
libgif 4.1.6
libjpeg 6b (libjpeg-turbo 1.2.1)
libpng 1.2.49
libtiff 3.9.4
zlib 1.2.3
libwebp 0.4.3
■英語の読み取り

試しにこの画像の文字列を読み取ってみます
tesseract tesseract-ocr.gif text -l eng
※オプションについて
「text」の指定で「text.txt」内に文字列が書き出されます
「-l」で言語指定
〇結果
tesseract-ocr
まんま取得できました!
■日本語の読み取り

この画像の文字列を読み取ってみます
tesseract tesseract-ocr-jp.gif text -l jpn
〇結果
Tesseract Open Source OCR Engine v3.04.00 with Leptonica
Error opening data file /usr/share/tesseract/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'
Tesseract couldn't load any languages!
Could not initialize tesseract.
jpn.traineddataが必要との事なので、下記ページからダウンロードして、指定の場所に設置。
https://ja.osdn.net/projects/sfnet_tesseract-ocr-alt/releases/
〇結果
テツサラク トオーシーアール
Warning in pixReadMemGif: writing to a temp file, not directly to memory
が出ましたが、ここまで読み取れれば良い方でしょう。
■最後に
今回は一般的なフォントで試したので問題無く画像から文字列を取得できましたが、特殊なフォントや画像状態によっては、まったく使い物にならない場合もあるようです。読み取りの精度を上げるためにはトレーニングが有効で、その方法についてはまた次の機会に致します。