このブログ、概して.NET Frameworkべったりでしたが、実はわたくし、Ruby歴の方が長いです。
初めてのRubyな記事を書きます。
フリーのOCRライブラリ「tesseract」をRubyから触れる「ruby-tesseract」の紹介です。環境はLinux(Debian/Ubuntu)とします。
https://github.com/meh/ruby-tesseract-ocr
Tesseractの導入
抜けがあるかもしれません。
$ sudo apt-get update $ sudo apt-get install libtesseract3 libtesseract-dev tesseract-ocr
言語は必要に応じて。apt-cache search tesseract で調べると、いろいろな言語がずらずら出てきます。
$ sudo apt-get install tesseract-ocr-eng tesseract-ocr-jpn
ごく簡単な動作確認。
$ tesseract -v tesseract 3.02
ruby-tesseractの導入
$ sudo gem install tesseract-ocr
(ここで何か怒られたような気がしますが、思い出せない...)
Ruby-FFIを使っていて、gemで入れるときにネイティブコードのビルドが走ります。
お試し
以下は、認識結果の文字列を出力します。
require 'rubygems' require 'tesseract-ocr' engine = Tesseract::Engine.new{ |engine| engine.language = :eng } puts engine.text_for('hoge.tif')
以下は、各シンボル(≒文字)の情報を出力します。
require 'rubygems' require 'tesseract-ocr' engine = Tesseract::Engine.new{ |engine| engine.language = :jpn } engine.symbols_for('hoge.tif').each_with_index{ |sym, i| text = sym.text b = sym.bounding_box printf("%d | text=%s pos=(x:%d y:%d w:%d h:%d)\n", i, text, b.x, b.y, b.width, b.height) }
「symbol」のところを、「block」「paragraph」「line」「word」と変えれば、文字単位以外にも行単位・段落単位等での要素の情報が得られます。
得られる情報の種類については、冒頭で挙げたgithubを参考にしましょう。画像・向き・認識の確からしさ等の情報も得られます。その他の使い方も、githubのテストコードから得られるところが多いです。