Raspberry Pi 5

$ sudo apt-get install tesseract-ocr

とりあえずOCRを突っ込んでみる。使い道はまたあとで考える、というかナンバープレートのOCRをしてみたい。
Googleが提供しているやつで、ついでに学習もできるとかなので、専門外でも割ととっつきやすそう・・・
あとオープンソースだそうです。

で、そんなに容量もないらしくRasPiでも割とすぐにインストールが終わる。
とりあえず適当な数字画像を引っ張ってきて(それこそ某艦隊でもいい)ので、試す。

$ tesseract test.png result -l eng

そうしたら result.txt に test.pngOCR結果が保存される。
単なる数字しかないやつとか、英語のみだったらそれで問題ない。

で、問題は日本語を含む場合。
デフォだと英語のみ?っぽいので、日本語の学習データを引っ張ってくる。

$ wget https://tesseract-ocr.googlecode.com/files/tesseract-ocr-3.02.jpn.tar.gz
$ tar zxvf tesseract-ocr-3.02.jpn.tar.gz 

でもってでてきたファイルを /usr/local/share/tessdata に放り込み。

$ sudo mkdir /usr/local/share/tessdata
$ sudo chmod 775 /usr/local/share/tessdata
$ sudo cp tesseract-ocr/tessdata/jpn.traineddata /usr/local/share/tessdata/.

chmod が必要だったのかどうかは微妙 というかこのディレクトリってデフォで形成されないのかーとか思ってるところ。


で、やってみようとしたけど日本語動かんね?

$ tesseract numplate.jpg result2 -l jpn
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'
Tesseract couldn't load any languages!
Tesseract Open Source OCR Engine v3.02 with Leptonica
Segmentation fault

開けんってさ。
・・・あ。コピー先ディレクトリがおかしいらしい。

Error opening data file /usr/share/tesseract-ocr/tessdata/jpn.traineddata

だそーなのでコピーしなおし。

$ sudo cp jpn.traineddata /usr/share/tesseract-ocr/tessdata/.

気を取り直して。

$ tesseract test.jpg result2 -l jpn
Tesseract Open Source OCR Engine v3.02 with Leptonica

・・・・・・はい。動いたぽいので結果を見てみる。



識字率悪すぎでは?

一応数字限定とかできるらしくって、

tessedit_char_whitelist 0123456789

こんだけ書いたファイル用意して、

$ tesseract test.jpg result2 digits_whitelist.txt 

とかすれば数字限定にできる。
というか数字だったら識字率結構良いし英語も結構良いんだけど日本語が壊滅的すぎる・・・

ちゃんと学習させないといけないらしーけどその学習データ準備させるのもめんどくさいのです


どーしたものか


ので次。
nhocr というものやってみる。

$ wget https://nhocr.googlecode.com/files/nhocr-0.21.tar.gz
$ wget http://www.imglab.org/p/O2/archives/O2-tools-2.01.tar.gz

とりあえずふたつとってくる。O2なんたらのほうは、nhocr のREADME参照したら必要とかそんなことが書いてある。

$ tar zxvf nhocr-0.21.tar.gz
$ tar zxvf O2-tools-2.01.tar.gz 
$ cd O2-tools-2.01/
$ ./configure --prefix=/usr/local
$ make
$ sudo make install
$ cd ../nhocr-0.21/
$ ./configure --prefix=/usr/local --with-O2tools=/usr/local
$ make
$ sudo make install

そんなに時間かからずインストール完了。
ひとまずテストしてみる
nhocr を解凍してたディレクトリの中に test ディレクトリがあるのでそこ。

$ cd test/
$ ./run-test
fs.pgm: ファイルシステム
hello.pgm: ニんにちは、

tohoku3.pgm: 
# Character candidates table
#   produced by: NHocr - Japanese OCR  v0.21 
IMG	0
R	1	東	0	0	2.4283356e+00
R	2	束	0	0	2.5794504e+00
R	3	京	0	0	2.7960027e+00
R	4	恵	0	0	2.8455623e+00
R	5	車	0	0	2.8773998e+00

IMG	1
R	1	北	0	0	1.9178933e+00
R	2	牝	0	0	3.1787773e+00
R	3	ft	0	0	3.3584956e+00
R	4	虻	0	0	3.4200158e+00
R	5	化	0	0	3.5008508e+00

IMG	2
R	1	\ 	0	0	0.0000000e+00
R	2	∴	0	0	2.9960626e+00
R	3	‥	0	0	3.4399795e+00
R	4	i	0	0	3.5661385e+00
R	5	…	0	0	3.6350114e+00

とりま結果は出てくる。
ので、例によって画像を適当に準備して放り込む。

・・・んだけどナンバープレートとかだと余計なものが多すぎて読み込めない模様。



とりあえず、学習させやすさとかそっちを考えると tesseract-ocr のほうがよさげかなあ・・・
というかどっちも結構古そうに見えるし最近のはないんだろーか(このへん専門外すぎる