C#からtesseractを利用して画像から文字を認識する

画像や手書き文字から文字データを認識するOptical Character Recognition(OCR)ソフトウェアについて調べて使ってみました。左の画像は指定された画像をOCRで文字列を読み、出力するC#のフォームアプリケーションです。

調べてみたところ、実用的なOCRソフトウェアは企業が研究開発した物が多いみたいですが、OSSOCRソフトウェアもあります。tesseractはその一つです。tesseractに画像ファイルを入力すると、その画像から読み取った文字列がテキストファイルで出力されます。



使った実行ファイルは以下のリンクからダウンロードできる3.00.1です。
http://code.google.com/p/tesseract-ocr/downloads/detail?name=tesseract-3.00.1.exe.zip&can=2&q=

tesseractは実際に使おうとすると言語定義ファイルを置くだとか訓練データがどうのだとか結構面倒です。
しかもモノクロの.tif画像しか受け付けないし。

3.00.1は標準のリリースとはちょっと違うようですが、単独で実行できて、カラー画像に対応、さらには.bmp/.jpg/.pngを渡す事もできる、という、ちょっと豪華な仕様になってます。

このバイナリをパスを通して、下のクラスを定義してC#からOCRができるようにしました。オープンなOCR環境だ!
本当は適切なライブラリがあれば良かったけれど、無かったので結局外部コマンドとして実行してテキストファイルから結果を拾う事に。tessnet2という.NETでtesseractを使うライブラリを見つけたものの、いろいろ弄ってもうまく動かなかった。

OCRソフトはかなり需要がありそうだったので、OSSでも高い品質のOCRソフトウェアがあるのだろうと予想して調べたものの、実際にはむしろ少なく、意外でした。