(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【SikuliX】OCR機能で半角英数のテキストを抽出する

スポンサーリンク

はじめに

SikuliXとはオープンソースのRPAツールで、事前に用意した画像と画面上のオブジェクトの類似性を元に操作が行えます。
また、用意された画像や事前に指定した画面の領域からテキストを抽出する機能も存在します。

本記事では光学的文字認識,、いわゆるイメージから文字列を取得する手法について紹介します。

環境情報
  • java version "1.8.0_201"
  • Sikulix IDE 1.1.3

SikuliXによるテキスト抽出方法

事前準備:注意点

結論から言うと選択した領域に.text()メソッドを用いれば文字列を取り出せます。

一方で設定ができていなければ例えば以下のようにprint文を行っても

reg=Region(346,674,272,47)
print reg.text()

以下のエラーが出ます。

[error] text: text recognition is currently switched off
--- no text ---

文字通り、設定がオフになっているのでオンにします。

事前準備:対応

Sikulix IDEのタブから

ファイル → 環境設定

を選択してください。

以下のような画面が出るので「more options」を押下すると
f:id:mtiit:20190809154301p:plain
以下の画面になります。
f:id:mtiit:20190809154339p:plain
この画面にある「TextSearch and OCR」欄の「allow searching for text」と「allow OCR」にチェックを入れて「Save」してください。

Setting saved

とウィンドウに表示されるので×マークで該当ウィンドウを閉じ、親ウィンドウで「Apply」「OK」を押すとSikuliXの再起動を促されます。

読み取り手順

Region機能をクリックすると以下のようにグレーアウトされるので検出したい領域を指定します。
f:id:mtiit:20190809154948p:plain
そうすると画面全体の中から選択箇所が赤くなった画像が表示されます。

reg=Region(0,60,206,61)
print reg.text()

先ほど設定したエリアに自由な半角英数を入れると検出可能です。

注意点

ワンポイントのテキストの抽出には使えますが長い文章は単語単語で切れて出力されますし、環境によっては精度がイマイチです。

例えばハリーポッターの書き出しである以下のフレーズですが

Mr and Mrs Dursley, of number four, Privet Drive, were proud to say that they were perfectly normal, thank you very much.

以下のように出力されました。

Mr
and 
Mrs 
of 
number 
four 
Pr 
Dr 
to 
ivet 
|Ve 
Were 
thank 
that 
normal 
say 
you

終わりに

オブジェクトの抽出という観点では十分な精度で操作を行うSikuliXですがOCRとして使うにはピンポイントの利用になりそうです。本記事では半角英数に絞っていますが、日本語への対応も外部のパッケージを落とせば利用できるようなので興味がある方は調べてみてください。

以上、SikuliXによるテキスト抽出でした。