【IQ Bot】誤り検知の方法：パターンによる検証

IQ Bot の[誤り検知](https://qiita.com/IQ_Bocchi/items/4e220a9bd6e337de4508)の中の、パターンによる検証について説明します。

ベンダーの公式サイト（下記）にも情報が載っていますが、もう少し詳しく＆わかりやすく説明してみます。

ベンダー公式サイト
https://docs.automationanywhere.com/bundle/iq-bot-v6.5/page/iq-bot/topics/iq-bot/user/bot-training-validation.html

#何ができるの？

パターンによる検証では、以下の条件で誤りが検知できます。

|パターン|型|できること|こんな項目に最適|
|:----------|:---------------:|:------------------------|:------------------------|
|Start with|すべての型で利用可能|「株式会社ｘｘ」であれば「株式会社」のように、開始の文字列を指定します。<br>読み取った値が指定した文字列以外で始まっている場合は、誤りとして検知します。![03.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587845/202f4fb2-91ff-731d-6657-d4946a2054fc.jpeg)<br>正規表現による指定はできず、固定の文字列のみ指定可能です。|ぶっちゃけあまり使わない……|
|End with|すべての型で利用可能|「●●様」であれば「様」のように、終了の文字列を指定します。<br>読み取った値が指定した文字列以外で終わっている場合は、誤りとして検知します。![04.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587845/a7e89250-8791-3cb4-18f6-87aeb0fd0bbf.jpeg)<br>正規表現による指定はできず、固定の文字列のみ指定可能です。|ぶっちゃけあまり使わない……|
|Pattern|すべての型で利用可能|読み取った値の形式を正規表現によりチェックし、その正規表現に合致していない場合は誤りとして検知します。<br><br>使用例１：A123456／B7654321など、英字1文字後に数値6～7桁が続く型番の場合<br>![05-1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587845/3d96fd86-a041-ce72-06e1-1632f0ea6dfb.jpeg)<br>使用例２：ハイフン区切りの電話番号<br>![05-2.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587845/0ddc2f33-5f5b-148d-3f47-238b238396c5.jpeg)|電話番号、メールアドレス、製品の型番などの形式が決まっているもの。<br><br>ベンダーの公式ドキュメントサイトにも、正規表現の記述例が掲載されています。<br>https://docs.automationanywhere.com/bundle/iq-bot-v6.5/page/iq-bot/topics/iq-bot/user/bot-training-validation-text.html|
|List|text型のみ|正解となり得る選択肢を事前に指定しておき、そのいずれかと完全一致しなければ誤りとして検知します。<br><br>下記の例であれば、読み取り結果が「銀行振込」「クレジット」「代引」のいずれかと完全一致していなければ誤りとして検知します。![06.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587845/f5e9c0a9-6ec0-e14f-5a10-b04c43b15189.jpeg)|国名、部署名、都道府県名など、正解となる選択肢が決まっている場合に有効です。|
|Formula|number型のみ|「税抜価格＋消費税＝税込価格」や「数量×単価＝金額」といった数式を使って検算を行い、読み取り結果が検算のとおりになっていなかったら誤りとして検知します。<br><br>使用例１：数量×単価が金額になっているかどうかをチェックする![07-1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587845/12e30fd8-0a57-9cbe-af90-1aece492be0a.jpeg)<br>使用例２：明細行の金額の合計が合計欄の金額と合っていることをチェックする![07-2.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587845/5503562b-4b0b-74e2-d878-de42b4765beb.jpeg)|金額や数量などの数値項目で、左記のように他の項目との関係によって正当性がチェックできる項目に対して有効です。<br><br>ベンダーの公式ドキュメントサイトに、数式の詳細な記述方法が載っています。<br>https://docs.automationanywhere.com/bundle/iq-bot-v6.5/page/iq-bot/topics/iq-bot/user/iq-bot-formula-validation.html|

数式による誤り検知（Formula）は奥が深いので、そのうち別のページに切り出して詳細な解説を書くかもしれません。
それまでは、以下の箇条書きを参考にしてください。

- 数式の途中には改行が入っていても大丈夫
- 数式の文法が誤っている場合は、全データが誤りと判定される
- 数式に指定する項目名は、フィールド名（テーブル項目の場合はカラム名）で、スペースはアンスコ(_)に置き換える
- テーブル項目に対する検算は、同じ行のデータに対してのみ行える
- COLSUMなど、テーブル項目の集計を行う検算の場合は、テーブル名と項目名をそれぞれ指定する必要がある
- テーブル名は、Table/Section Settingsで指定できる（デフォルトは「Table-repeated-section-1」）

#どこで指定できるの？

上記のとおり、とても便利なパターン検証ですが、初めて使う人には条件を指定する入力欄が見つけづらいようです。

こちら↓にあります。
![01.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587845/c59c9b7b-3bc5-5ec8-736b-09ebfc507d41.jpeg)

すると……ジャン！
![02.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587845/1bc97a37-1db0-b032-b0de-5748450e1efa.jpeg)

#パターンによる誤り検知を活用しよう！

数式や正規表現などで誤りの検知ができることは、IQ Botの最大の強みのひとつです。
ぜひ、適切に誤り検知の条件を設定して、効率性とデータの正確性を両立させましょう。