手持ちのコミックスやラノベのデータベースを作りたいと思った時、全部手作業で入力するにはだいぶ厳しい分量があるので、どうせなら、背表紙が写るように並べて撮影→各本ごとの領域に切り分け→OCR→タイトル/著者くらいの情報を得て、データベースに放り込む、みたいなシステムを作りたいと思うわけだ。その準備として、まずはOCRで文字が認識出来るかどうか、取り敢えずで触ってみる。

今回触るのはtesseract。環境はantergos(ArchLinux)。

普通にリポジトリにあるみたいなので、素直にインストールする。

[bash]
$ sudo pacma -S tesseract tesseract-data-eng tesseract-data-jpn
[/bash]

tesseract本体、English, Japaneseの言語データをインストールした。言語データが無いと、本体だけでは実行出来ない。

今回試しにOCRしてみる画像はこちら。

[caption id=”attachment_128” align=”alignnone” width=”206”]OCRサンプル。サクッと作った OCRサンプル。サクッと作った[/caption]

さて、実行してみる。tesseract input_file output_fileといった感じ。-lで使用する言語を指定できる。+で複数繋げば複数選択する事も可能。

[bash]
$ tesseract test.png result.txt
$ cat result.txt
ABC123

$ tesseract test.png result.txt -l jpn
$ cat result.txt
ABCー z3
ぁいう
日本語

$ tesseract test.png result.txt -l eng
$ cat result.txt
ABC123

$ tesseract test.png result.txt -l eng+jpn
$ cat result.txt
ABC123

$ tesseract test.png result.txt -l jpn+eng
$ cat result.txt
ABC123
あいう
日本語

[/bash]

  • 言語を指定しないと英語が選択される

  • 日本語だけではアルファベットや数字を正しく認識できない

  • 言語複数指定の場合は指定する順序で結果が変わる

  • eng+jpnよりjpn+engの方が精度が良い?

といったところか。そう何度も試したわけではないので、それぞれの実行も1回だし実際どうなのかは不明。

Tesseract-OCRの学習あたりを参考にすればさらなる学習も出来そうだけど、だいぶ骨が折れそうだな。

サンプル画像を変形した場合にどうなるかはまた今度調べよう。