オープンソースで公開されている、OCR(画像読み取り)ソフトを使うと、スキャナやカメラ、Webページ、スクリーンショットなどからテキストを起こすことができます。
以下のGitHubからソースを落とすことができます
https://github.com/tesseract-ocr
Windowsバイナリと日本語辞書はここにあります
https://code.google.com/p/tesseract-ocr/downloads/detail?name=tesseract-ocr-setup-3.02.02.exe
https://code.google.com/p/tesseract-ocr/downloads/detail?name=tesseract-ocr-3.02.jpn.tar.gz
git clone https://github.com/tesseract-ocr cd tesseract-ocr ./autogen.sh ./configure make make install
iOSのソースも公開されているので、iPhoneアプリに組み込んだりもできます
https://github.com/gali8/Tesseract-OCR-iOS
使い方は
tesseract <画像.bmp> <出力.txt> -l <言語>
例:
英数字の場合
tesseract get_text.bmp get_text.txt -l eng
日本語の場合
tesseract get_jpntxt.bmp get_jpntxt.txt -l jpn
学習
座標ファイルの作成
tesseract <学習に使う画像> <言語>.<フォント>.exp<インデックス番号> -l jpn batch.nochop makebox
例:
tesseract train_img00.bmp jpn.hiragi.exp0 -l jpn batch.nochop makebox
これにより座標ファイル jpn.hiragi.exp0.box ができます
学習辞書には
文字 X始点 Y始点 X終点 Y終点 インデックス
の形式で記述されます
例:
M 4 6 22 30 0
※範囲が大幅にずれている文字を修正します。範囲内のものはそのままでいいでしょう
trファイルの作成
学習に使ったファイルをリネームします、座標ファイルに合わせましょう
train_img00.bmp -> jpn.hiragi.exp0.box.bmp
trファイルを生成します
tesseract jpn.hiragi.exp0.bmp jpn.hiragi.exp0 nobatch box.train.stderr
jpn.hiragi.exp0.trというファイルが出力されれば成功です
出来ない場合はエラーにしたがって、修正しましょう
トレーニングデータの作成
座標ファイルからunicharsetファイルを生成します
unicharset_extractor jpn.hiragi.exp0.box
font_propertiesファイルを作成します。が、フォントのプロパティといっても手書きや版の場合は
<フォント名> 0 0 0 0 0
固定です、意味は
フォント名(boxファイルのファイル名で指定した物と同名) italic bold fixed serif fraktur
という並びになっています。例では、hiragiを指定していますので
hiragi 0 0 0 0 0
となります
学習の実行
mftraining -F font_properties -U unicharset jpn.hiragi.exp0.tr
mftraining -F font_properties -U unicharset -O jpn.unicharset unicharset jpn.hiragi.exp0.tr
cntraining jpn.hiragi.exp0.tr
mv inttemp jpn.inttemp
mv shapetable jpn.shapetable
mv pffmtable jpn.pffmtable
mv normproto jpn.normproto
combine_tessdata jpn.
cp jpn.traineddata /usr/local/share/tessdata/
画像を拾って自動で識別するとかそんな時に使えます
無論、RaspberryPIでも動きますので、カメラと組み合わせて、名刺読み取り機見たいなこともできるかと思います。