手持ちのコミックスやラノベのデータベースを作りたいと思った時、全部手作業で入力するにはだいぶ厳しい分量があるので、どうせなら、背表紙が写るように並べて撮影→各本ごとの領域に切り分け→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サンプル。サクッと作った[/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の学習あたりを参考にすればさらなる学習も出来そうだけど、だいぶ骨が折れそうだな。
サンプル画像を変形した場合にどうなるかはまた今度調べよう。