LoginSignup
3
5

More than 3 years have passed since last update.

macOSでSikulix+OCR動作(ver2.0.4対応)

Posted at

macOSでSikulix+OCR動作(ver2.0.4対応)

■はじめに

オープンソースのRPAツール、Sikulix。
Javaで開発されていますが、RPAのフローはPython(ただしver2系)で書くことができます。

ネットなどではWindowsで動作させる情報が多いですが、Javaなので環境さえ用意すればmacでも動きます。
また、現在(2021/02/23現在)ダウンロードできる最新バージョンは2.0.4ですが、以前の1.1.4での情報がまだまだ多いですし、macOSでバージョン2.0.4+ORC動作の情報はまだまだ見つかりません。
そこで、macOS+ver2.0.4+OCRが動作した環境構築の記録を上げます。何かのお役に立てば(^^)

このRPAの導入のきっかけは、会社で使っているWindowsPCで楽をする作業の簡略化を行うためなのですが、自宅ではmacをメインに使っているので、自宅のmacでも環境構築と動作検証をするためにmac環境での構築を始めました。楽をするためなら仕事の持ち帰りも徹夜もいとわないのがSEという職種です。

構築にあたっては、Windows環境での説明ですが『さわって学べるSikuliX Pythonで作るRPA』(大澤 文孝著)がきっかけと主な参照元になっています。AmazonのKindle Unlimitedで読むことができます。

環境

macOS:10.13.6(使っているアプリの都合でまだ10.13です。多分10.15とかでも同じだと思います)

■下ごしらえ 〜sikulixのインストール〜

JREが必要になります。"JRE"で検索すると、Suicaのポイントページがでてきてしまうので、以下のリンクを参照して下さい。
ここを参照してJavaをダウンロードしてインストールして下さい。
https://www.java.com/ja/download/help/mac_install.html

sikulixのダウンロード

1.1.4系の情報がいろいろありますが、2021年2月現在ダウンロードできる最新バージョンは2.0.4です。
※画像キャプチャーを取らず進めたので、インストールの手順はテキストで。

まず、以下のサイトから必要となる、
・Sikulix IDE
・Jython
の2つをダウンロードします
※今回はJython(Python)で使用することを前提としています。

SikuliXダウンロードサイト
https://raiman.github.io/SikuliX1/downloads.html

ここから、SikulixのIDE
「Download the ready to use sikulix.jar (SikuliX IDE)」と書かれているとこの「sikulixide-2.0.4.jar」をダウンロードします。

Jythonはこちら
「The Jython interpreter 2.7.1 for python scripting (the default)」の
「jython-standalone-2.7.1.jar」をダウンロード。

sikulixのインストール(配置)

ダウンロードしたものを適当なフォルダに入れて(Applications」フォルダに「Sikulix」というフォルダを作っていれる、とか)、「sikulixide-2.0.4.jar」をダブルクリックします。
すると「jython-standalone-2.7.1.jar」が別のフォルダに移動します。
~/Library/Application Support/Sikulixが初期設定や拡張機能が格納される場所で、jythonのファイルはExtensionの中に移動します。
スクリーンショット 2021-02-21 0.44.19.png

再度、sikulixide-2.0.4.jarをダブルクリックすると、Sikulixが起動します。
多分、セキュリティーがどうのこうのというメッセージが出てくると思いますが、「システム環境設定」の「セキュリティとプライバシー」をいじってなんとかできます。ググってみてください(てきとーだな。私)
スクリーンショット 2021-02-19 1.36.55.png

sikulixの初期設定(mac向け)

ここで、動作確認としてポップアップメッセージを表示させるコードを書いて実行すると、こんなエラーが出ます。
「javax.script.ScriptException: ReferenceError: "[メソッドとか]" is not defined in nashorn:mozilla_compat.js at line number [エラーが発生している行番号]」
スクリーンショット 2021-02-21 0.59.05.png

macで初めて実行すると、デフォルトのコード記述がJavascriptになっているので、Pythonでコードを書いて実行するとエラーが出ます。
Windowsでは出なかったエラーです。WindowsではデフォルトはPython(jython)のようです。なのでこういうエラーは出ませんでした。
一度実行してエラーが出てしまうと、このコードは修正できない(多分あるけど新規ファイルを作って貼り直したほうが早い)ので、以下の手順で記述するプログラムをPythonに指定します。

「ファイル」から「新規作成」(Command+N)で「無題」の新規ファイルを作成します。
スクリーンショット 2021-02-21 1.04.42.png

コード欄のタブ「無題」のところを右クリックして「Set Type」を選択。
スクリーンショット 2021-02-21 1.05.06.png

「Jython」を選択して「OK」をクリック。
スクリーンショット 2021-02-21 1.05.49.png

これでコードを書いてファイルを保存して「実行」をクリック。
(日本語を含んだ文字列を表示させる場合、u"日本語"と表記する必要があります)
スクリーンショット 2021-02-21 1.09.08.png

この設定は一度行えば、次回から作成するファイルに反映されます。
これでMacでもSikulixが動きました!
けど、全然Sikulixらしい動作確認じゃないな。こりゃ。
スクリーンショット 2021-02-21 1.09.41.png

このJavaのjarファイル、Dockに登録できないので、デスクトップとかにエイリアスを置いて起動させます。
スクリーンショット 2021-02-21 1.58.03.png

■OCRの日本語対応

注意!
**Home brewが使える環境を用意しておいて下さい。以下のtesseractのインストールに必要です。

このまま範囲を指定してOCRを実行するコードを実行してもエラーが出て動きません。
(すいません。キャプチャーとかエラーログを取り忘れました)

まず、ここの情報を見ると、、、
https://sikulix-2014.readthedocs.io/en/latest/news.html

New or revised in version 2.0.2
Text and OCR features are now implemented using the Java library Tess4J (current latest version based on Tesseract 4.x). 

と、sikulix2.0.2では、Tesseract 4.xを使っていると書いてあります。確か、デフォルトで入っているtesseractはver2.0。
(ただし、もしかしたら、tesseractを入れ替えなくても、この後に説明するbrewでtesseractを入れれば動作するかもしれません。以下の手順でtesseractの4.0.0を入れてもエラーが出たので、brewでtesseractをインストールしたので問題の切り分けをしてない。。。なので、tessaractのファイルを入れ替えなくても動く、かもしれません)

tesseractの言語ファイルのダウンロード

(もしかしたら、デフォルトのtesseractのファイルでも動くかもしれません。後述するbrewでtesseractのインストールを先に行って、それでもOCRが動作しないようであれば、各言語ファイルを入れ替えたほうがいいかもしれません)

gitのtesseractのページからダウンロードします
まずここにアクセス。
https://github.com/tesseract-ocr/tessdoc

リンク「tessdata_best」をクリック。
スクリーンショット 2021-02-23 19.05.34.png

「jpn.traneddata」をクリック。
スクリーンショット 2021-02-23 19.06.32.png

「master」ボタン>「Tags」タブ>4.0.0をクリック(4.1.0でもいいです)
スクリーンショット 2021-02-23 19.07.01.png

「Download」をクリック

スクリーンショット 2021-02-23 19.08.00.png

ダウンロードしたファイルはこちらになります。
スクリーンショット 2021-02-23 19.09.10.png

同様の手順でeng.traineddataもダウンロードしておきます

ダウンロードしたファイルは以下のディレクトリ
~/Library/Application Support/Sikulix/SikulixTesseract/tessdataの中に入れます。
ただし、ver2のデータがあるので、別フォルダを作ってしまってから移動させました。

スクリーンショット 2021-02-23 19.12.23.png

■brewでtesseractをインストール

これで動くと思ったら、、、怒られた。。。
スクリーンショット 2021-02-23 19.17.19.png

エラーメッセージに表示されたリンク先を見ると、brewでtesserctを入れとけと書いてあったので、入れます。
https://github.com/RaiMan/SikuliX1/wiki/macOS-Linux:-Support-libraries-for-Tess4J-Tesseract-4-OCR

スクリーンショット 2021-02-23 19.31.37.png

おなじみのbrewで入れます。「brew install tesseract」で一発インストール。依存関係とかも解決してくれるのでらくちんです。
スクリーンショット 2021-02-23 19.18.25.png

10.13使ってるの!と言われました。古いバージョンはサポートしないですって。
ごちゃごちゃ言われましたが、とにかくインストールしてくれます。
スクリーンショット 2021-02-23 19.20.33.png

どうやらengとかosdとかsnum以外の言語ファイルはbrewで入れろ、とありますが、今回はSikulixで使うので、brewで入れたものが動作するか分からず。それでbrewでは入れていません。

スクリーンショット 2021-02-23 19.21.44.png

一応入ったことだし、これでもう一度Sikulixを起動し直して、先ほどの範囲指定で日本語を認識させるコードを実行してみます。

認識率が非常に微妙で怪レい日本话ですが、一応"OCR"は動作してくれました。
まぁ、動いた、と。動かない高機能な環境より、低機能でも動く環境が正義。

スクリーンショット 2021-02-23 19.25.36.png

■OCRでの認識テスト

こんなファイルを作ってみました。一番下の行、10ptではなく16ptですね。

スクリーンショット 2021-02-23 19.42.48.png

8ptでもこれだけ読んでくれました。意外と頑張ってくれます。
スクリーンショット 2021-02-23 19.43.37.png

16ptの異体字を認識させてみましたが、さすがに「はしごだか」の「髙」は普通の「高」で認識しました。ま、「高」と出てきてくれればいいです。
スクリーンショット 2021-02-23 19.44.23.png


冒頭にも書きましたが、この本、
『さわって学べるSikuliX Pythonで作るRPA』がとても参考になりました。
Amazon Unlimitedなら無償で読めます(一応読めば出版社と作家さんに一定額が入ります)
https://www.amazon.co.jp/dp/B07WC9KYSB/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5