【IQ Bot】稼働確認のしかた（参考）

オンプレでIQ Botをインストールしたあと、稼働確認をする手順をまとめます。

もちろん、「必ずこの手順を踏まなければならない」というわけではありません。

筆者が何度もIQ Botのインストールを実施した中で辿り着いた、インストールがらみのミスが起こりやすいポイントを効率的に確認する手順です。

「IQ Botをインストールしてみたけど、正しくインストールされているかはどうやって確認すればいいの？」と迷う人が多いようなので記事にしてみました。

#Step1：IQ Bot自体のインストール確認＆ABBYYの確認

##このステップで確認すること

- IQ Bot自体が正しくインストールされていること
- OCRエンジンとの疎通がうまくいっていること
    - ABBYYのSDKは手で設定するためインストールミスが起こりやすく、確認しておくのがオススメ
    - Tegakiを利用する場合も、疎通確認をしておくのがオススメ
    - Googleを利用する場合も本来は疎通確認をしておくべきなのかもしれないが、こちらはインターネットさえつながっていれば基本的には利用できる（インストールで設定することがないのでミスの起こりようがない）ので任意

##確認手順

以下の確認手順を、疎通を確認したいOCRの分実施します。

以下の帳票をダウンロードして、IQ Botを作ってみます。

[【外部リンク】稼働確認用のサンプル帳票](https://automationanywhere.box.com/s/xuujnxvespiihkkdepvnq35di7xkphzi)

IQ Botの作り方がそもそもわからないという人は、以下のリンクを見ながら、入力項目は下記の表のとおりにしてみてください。

[【リンク】はじめての IQ Bot：IQ Botを作ってみよう！](https://qiita.com/IQ_Bocchi/items/26c4a7065e4c8e64a427)

###参考：稼働確認時の入力項目

|リンク先の番号|項目|入力内容|
|:-----------------|:------------------|:------------------|
|一般情報-①|インスタンス名|何でもいいので文字を入力（「稼働確認＋日付」など）|
|一般情報-②|ドキュメントタイプ|「その他」を選択|
|一般情報-③|ドキュメントの主要言語|「Japanese」を選択|
|一般情報-④|カスタムドキュメントタイプ|何でもいいので文字を入力（「ｘ」など）|
|抽出したいフィールド名の入力-①|フォームフィールド|「お客様名」を入力|
|抽出したいフィールド名の入力-②|テーブルフィールド|「商品番号」「品名」を入力|
|OCRエンジンの選択|OCRエンジン|ABBYYとの疎通確認時はABBYYを選択<br>Tegakiとの疎通確認時はTegakiAPIを選択|

##想定結果

「インスタンスを作成して分析」ボタンを押した後で、下記のようなマッピング学習画面が表示されれば、IQ BotのインストールおよびOCRとの疎通はうまくいっています。

![06_分類の結果を待つ.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587845/92bbd334-554b-8483-18b3-27078673e5c8.jpeg)

##結果が想定どおりにならなかったら

|#|結果|原因・対処|
|:-----------------|:------------------|:------------------|
|①|「インスタンスを作成して分析」は押せたが、マッピング学習の画面に遷移しない。分類の結果がUnclassifiedになっている。|OCRとの疎通がうまくいっていない可能性があります。<br><br>ABBYYの場合は、下記リンクの注意点を確認しましょう。<br>[【リンク】ABBYY設定時の注意点](https://qiita.com/IQ_Bocchi/items/e8e9ae41b398209186ed#%E6%B3%A8%E6%84%8F%E7%82%B9)<br><br>Tegakiの場合は、以下を確認しましょう。<br>- TegakiOCREngine.jsonの設定内容やjson文法が誤っていないか<br>- Tegakiのエラーログ|
|②|そもそもインスタンスを作成する画面に行けない。<br>途中で画面が固まってしまう。|DBとの接続がうまく行っていない可能性があります。<br>以下の対処を試して、それでもだめだったら、DBのインストールからやり直しとなる可能性も。。。（その前に最新情報をA-peopleなどで確認してください）<br>[【リンク】RabbitMQの再起動](https://qiita.com/IQ_Bocchi/items/01d95043d11878ee2377)|

#Step2：カスタムロジックの確認

##このステップで確認すること

- フィールドおよびテーブル項目に対するカスタムロジック(python)が正しく動作すること
- よく使うライブラリがインポートされていること
- カスタムロジックで日本語を正しく処理できること

##確認手順

###①フィールドロジックの確認

まず、フィールドロジックの入力欄に以下のサンプルコードを入力します。
（入力欄がどこにあるかは図を参照）

```python:稼働確認用のサンプルコード（フィールド）
import re
field_value = "こんにちは"
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587845/c0f8306c-b7e4-d091-95c5-730090f796c6.png)

###①フィールドロジックの想定結果

「テスト実行」をクリックし、以下のような結果になっていればOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587845/496b1a1b-93e2-f36c-012d-9e1d7b47a6d4.png)

エラーメッセージが出たり、「こんにちは」が文字化けしたりした場合は、A-peopleなどで質問してみてください。
TwitterでIQぼっちにリプいただく形でもかまいません。（DMでの質問は受け付けていませんのでご了承ください）

###②テーブルロジックの確認

続いて、テーブルロジックの稼働確認です。

まず、以下の要領でテーブルロジックの入力欄を開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587845/0e89f804-f0c7-e4c4-141f-e9739a64e7ad.png)

入力欄に、以下のコードをコピペします。

```python:稼働確認用のサンプルコード（テーブル）
import pandas as pd
df = pd.DataFrame(table_values)

i = "品名"
df[i] = df[i].str.replace("ン","★")

table_values = df.to_dict()
```

参考までに、上記のロジックは品名欄のカタカナの「ン」を「★」に置き換えるロジックです。
より詳しく知りたい方は、以下のリンクを参考にしてください。

[【リンク】IQ Botのテーブル項目に対するおまじないコードを詳しく解説](https://qiita.com/IQ_Bocchi/items/68d3260c8afed7d27902)
[【リンク】テーブル項目に対する置換処理](https://qiita.com/IQ_Bocchi/items/b1e7a75439fede2171e6#%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E9%A0%85%E7%9B%AE%E3%81%AB%E5%AF%BE%E3%81%99%E3%82%8B%E7%BD%AE%E6%8F%9B%E5%87%A6%E7%90%86)

コピペができたら、「テスト実行」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587845/47298a01-ab59-79fd-e491-f60d587e2c63.png)

###②テーブルロジックの想定結果

エラーメッセージなどが出ず、「Processed Table Value」のところに「ン」が「★」に置き換わった品名欄の値が出力されていればOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587845/62f19b41-188c-9525-af72-4e93c1399a5d.png)

エラーメッセージが出たり、日本語が文字化けしたりした場合は、A-peopleなどで質問してみてください。
TwitterでIQぼっちにリプいただく形でもかまいません。（DMでの質問は受け付けていませんのでご了承ください）

#Step3：RPAとの疎通確認

##このステップで確認すること

- RPAと連携してIQ Botが正しく動作すること

##確認手順

作成したIQ Botを保存し、プロダクション化します。
プロダクション化のやり方がわからない人は、以下のリンクを参考にしてください。

[IQ Bot：作成したIQ Botをプロダクション化しよう](https://qiita.com/IQ_Bocchi/items/770dfcd569bcd5e4cad3)

プロダクション化ができたら、RPAからIQ Botを呼び出して、学習に使ったサンプル帳票をRPA経由で処理させます。
RPAの作り方は、以下のリンクを参考にしてください。

[【リンク】IQ Botを動かすRPAの作り方：A2019編](https://qiita.com/IQ_Bocchi/items/5b0cc3bb7e4ddcbc43bd)

##想定結果

- RPAが正常終了する
- RPAの処理後、Outputフォルダ配下に当該インスタンス名のフォルダが作成される（処理終了から数十秒～1分程度経過後）
- 上記フォルダ内にSuccessフォルダが存在し、その配下にCSVファイルが出力されている

なお、Outputフォルダのありかがわからない人は以下のリンクを参考にしてください。

[【リンク】オンプレのIQ Botでよくアクセスするフォルダ](https://qiita.com/IQ_Bocchi/items/8b8ec0963e3bed70f8b7#1-%E3%82%88%E3%81%8F%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%99%E3%82%8B%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%81%B8%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E4%B8%8A%E3%81%AB%E4%BD%9C%E3%81%A3%E3%81%A6%E3%81%8A%E3%81%8F)

##結果が想定どおりにならなかったら

こちらの結果が想定どおりにならない原因は多種多様なので、A-peopleなどで質問してみてください。
TwitterでIQぼっちにリプいただく形でもかまいません。（DMでの質問は受け付けていませんのでご了承ください）

#以上！

以上が、筆者がふだんIQ Botの稼働確認時に実施している手順です。

IQ Bot自体の稼働（基本）、ABBYYとの疎通（インストール時にミスしやすい）、カスタムロジック（もともとPythonが入っていたマシンにインストールすると疎通不備が起こりやすい）など、インストール時に確認しておくべきポイントをなるべく省エネで網羅できる手順にしているつもりですが、「もっとこうした方がよいのでは？」などのご意見ある方は、ぜひこの記事やTwitterなどでコメントをお寄せください！

では！