T-Plan Robot EnterpriseとABBYY Fine Readerの統合
目次:
1. 概要
2. ABBYY Fine Readerのインストール
3. プラグインのインストールと設定
4. RobotでのABBYY Fine Readerの使用
1. 概要
T-Plan Robot Enterpriseバージョン2.3では、ABBYY Fine Reader Engine v9.0のOCR機能をRobotのネイティブスクリプトで利用できるオプション機能が導入されました。ABBYY Fine Reader Engine(http://finereader.abbyy.com/)は、テキスト認識のための高精度なOCR(光学式文字認識)ソフトウェアです。
Robotは、Robotと同じマシン上に正しくインストールおよび設定されたFine Reader Engine v9のインストールとファイルレベルで統合します。Fine ReaderソフトウェアはMicrosoft Windowsのみをサポートしているため、T-Plan Robot EnterpriseとはWindows上でのみ統合できます。
2. ABBYY Fine Readerのインストール
ABBYY Fine Reader Engine v9 ソフトウェアをABBYYから入手し、インストールしてください。現時点では、このソフトウェアはT-Plan経由では入手できません。後でRobotで設定する際に使用するため、Fine Readerのシリアル番号を保存しておいてください。
3. プラグインのインストールと設定
プラグインのインストール
T-Plan Robot Enterpriseバージョン2.3以降をまだお持ちでない場合は、T-Planから入手してインストールしてください。このプラグインはリリース2.3より前のバージョンでは動作しません。
このプラグインは、abbyy.jarとABBYY.dllという2つのファイルを含むZIPファイルとして配布されており、これらは常に同じフォルダに置く必要があります。プラグインのインストール方法は2通りあります:
-
両方のファイルを
<Robot_install_path>/pluginsフォルダに保存します(Robotのインストールパスはrobot.jarが含まれるフォルダです)。plugins/フォルダが存在しない場合は作成してください。これにより、Robotは起動時に自動的にプラグインを読み込みます。インストール作業は不要です。このプラグインは、この特定のRobotインストールにのみ表示されるため、複数のRobotインストールおよび/またはバージョンをホストする環境ではこの方法が推奨されます。プラグインをアンインストールするには、plugins/フォルダからファイルを削除するだけです。
または
-
ファイルを恒久的な場所に展開します。次に、RobotのGUIでTools->Pluginsを選択し、"Available Plugins"タブに切り替え、"Add JAR, ZIP Or Classpath"ボタンを選択してabbyy
.jarを選択します。ウィンドウのテーブルにABBYY Fine Reader OCRプラグインが表示されたら、それを選択してInstallをクリックします。その後、変更を適用するためにRobotを再起動してください。
この方法では、同じマシン上で動作するすべてのRobotインスタンス間で共有されるユーザープラグインマップ(<user_home>/PluginMap.xml)にエントリが作成されることに注意してください。以前のRobotバージョン(2.2以前)はこのプラグインを処理できないため、読み込もうとするとクラッシュする可能性があります。これは、Pluginsウィンドウからプラグインをアンインストールするか、<user_home>/PluginMap.xmlファイルを削除することで解決できます。1台のマシンで複数のRobotバージョンを運用する予定がある場合は、上記の最初のインストール方法を使用してください。
プラグインの設定
Fine Readerプラグインを設定するには、RobotのGUIを起動し、Edit->Preferencesを選択して、Plugins->Image Comparison Modules->ABBYY Fine Reader OCRに移動し、少なくとも以下の設定を行います:
-
FREngine.dllへのパスフィールドには、通常ABBYY Fine Reader Engineインストールの
bin/フォルダにあるFREngine.dllへのパスを入力する必要があります。 -
Serial Numberフィールドには、ABBYY Fine Reader Engineのシリアル番号を入力する必要があります。通常は"CCCC-DDDD-DDDD-DDDD-DDDD"のような20文字の文字列で、Cは文字、Dは数字です。
さらに、デバッグモードを有効にすることをお勧めします。これにより、RobotはデバッグメッセージをWindowsコマンドプロンプトに出力するようになり、発生し得る問題のデバッグが可能になります。
プラグインが正しく設定され、ABBYY Fine Reader Engineのインストールと正常に連携して動作するかをテストするには、以下の手順を実行します:
-
RobotのGUIでScript->Compareto Commandウィンドウを開きます。
-
Comparison method チェックボックスを有効にし、ドロップダウンでabbyyを選択します。
-
Languageドロップダウンの内容を確認してください。空であるか、[Not Available]項目のみが含まれている場合、プラグインはABBYY Fine Readerからサポートされている言語名を取得できませんでした。プラグインの設定でデバッグモードを有効にしている場合、Robotのコンソール(コマンドプロンプト)ウィンドウにエラーの説明と追加詳細を含むスタックトレースが表示されます。
4. RobotでのABBYY Fine Readerの使用
Fine ReaderのOCR機能は、CompareTo、WaitFor match/mismatch、またはScreenshotのような任意の画像比較コマンドで使用できる、"abbyy"という新しい画像比較メソッドとしてRobotスクリプトから利用できます。認識されたテキストは、その後、変数の形でスクリプトから利用できるようになります:
-
_ABBYY_TEXTは、認識されたテキスト(全行)を保存します。 -
_ABBYY_LINE_COUNTは、認識されたテキスト行数を保存します。 -
_ABBYY_LINE<number>は、指定した番号の行のテキストを保持します。番号は1から始まります。例えば_ABBYY_LINE1には、最初に認識されたテキスト行のテキストが格納されます。 -
_ABBYY_ERRORは、設定ミスまたはI/OエラーによりABBYYがスローした可能性のあるエラーメッセージのテキストを保存します。
"abbyy"メソッドは、いくつかの固有のパラメータを受け付けます:
-
"language"パラメータは、テキスト認識の言語を指定します。ABBYYが認識する有効な言語名でなければなりません。このパラメータは任意であり、省略した場合はデフォルトで"English"になります。 -
"text"パラメータでは、検索対象のテキストを指定できます。指定すると、プラグインは認識されたテキスト内から指定した文字列を検索し、見つかった場合は成功(終了コード0)を、見つからなかった場合は失敗(0以外の終了コード)を返します。 -
"pattern"パラメータは"text"パラメータと似ていますが、パラメータの値がjava.util.regex.Pattern準拠の正規表現として扱われる点が異なります。
コマンドに"text"パラメータも"pattern"パラメータも指定されていない場合、OCRが正常に実行されれば(たとえテキストが一切認識されなかったとしても)成功(終了コード0)を返します。0以外の終了コードは、通常、設定ミスまたは内部エラーを示します。この仕組みは、スクリプト内でABBYY統合の機能をテストするために使用できます。このような使用例は、以下のCompareto例にあります。
例:
// Recognize text from the whole screen and record it to the result XML as a step.
// If OCR fails for misconfiguration, record the error and exit the script.
Compareto method="abbyy" language="English"
if ({_EXIT_CODE} == 0) {
Step "OCR" pass actual="Recognized text: {_ABBYY_TEXT}"
} else {
Step "OCR" fail actual="OCR failed: {_ABBYY_ERROR}"
Exit 1
}
...
// Wait max 10 seconds until the specified screen rectangle contains the "OK" button.
Waitfor match method="abbyy" cmparea="x:65,y:12,w:100,h:100" text="OK" timeout="10s"