【kintone x OCR】～正規表現検索編～　kintoneのOCRプラグインを開発する④【GCP】

# 無償で試してみる
下記に「アカウント申請」という件名（本文なし）でメールを送付頂ければ、数分程度でアカウント情報を返信します。
ocr.lastonemile@gmail.com
* 利用規約に同意の上、ご利用ください。　https://tanoshimane.stores.jp/news/603313afc19c4527490eb72e
* kintoneというクラウドアプリ上に構築しており、そのゲストIDを発行します。
* 30日間又は100ページまで（kintoneの利用料含めて）無償で利用可能です。

詳細：https://qiita.com/Lastonemile/items/65b9102c868e09b3248e

# プラグインのダウンロード
kintone用OCRプラグイン及びテンプレートが、下記よりダウンロード（無償で購入）可能です。

利用（設定）方法

* **IEではご利用いただけません**（Chrome,edgeは動作確認済、その他ブラウザは未検証です）
* 初回利用時から1か月間無償でご利用いただけます。
* ご利用にあたり、ご利用者のドメイン情報を取得します（ドメイン毎に利用期間を管理しています）。
* 利用にあたり、別途Google Cloud Vision のAPIキーを取得頂く必要がございます。（取得代行も行っています）
Cloud Visionの詳細：https://cloud.google.com/vision/docs?hl=ja
APIキー取得方法：https://syncer.jp/cloud-vision-api
**APIキーの管理には十分ご注意ください**

# 最終目標
kintone上でこの↓画像（請求書）をOCR処理し、請求番号・支払期限・振込先・請求元・明細（品名・数量・・・のテーブル部分）の値を取得することを最終目標とします。
![請求書サンプル.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543387/13655cba-1ef7-40ba-748c-135bc5af3280.jpeg)


尚、説明は後回しで「まず試したい」という方は、[プラグイン（テンプレート）のダウンロード](#プラグインテンプレートのダウンロード)からkintone用のプラグインとテンプレートを試用（1か月間）頂けます。

### 今回（正規表現検索編）の目標
前回（③）で今後の課題とした、近接した値を取得するために、正規表現を利用した値の取得を行いたいと思います。＊ここ↓から「数量」と「単位」の値を上手く取得したいと思います。
![TABLE.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543387/d182410f-5014-899f-6e68-9473f9f6c841.png)
正規表現の詳細：https://ja.wikipedia.org/wiki/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE

### 具体的な取得方法
今回の文書では、数量の列には数字のみ（今回であれば1,3,5）しか記載されません。逆にに単位の列には数字以外しか記載されません。このように対象文字列のパターンを利用して値を取得する方法を正規表現検索と定義します。

KEYWORD検索+ZONE検索で取得した値の中から、予め定めた「正規表現」に一致しない値については、対象から除外します。具体的には、「数量」は数字のみなので正規表現に従い[0-9]とし、「単位」列は正規表現に従い[^0-9]と定めます。

```
//seiki→[0-9]や[^0-9]
//seiki.test()で正規表現（seiki）に合致しているか判定
let seiki;
for(let i = 0; i < list.length; i++){
   if(seiki && seiki.test(list[i].String)){
      result.push(list[i]);
   }
}
```
そうすることで、「数量」列と「単位」列の値を上手く取得（分離）出来ました。

# kintoneアカウントを持っていない方
下記より、メールアドレス登録のみでご利用いただけます。
OCRシステム　ユーザー登録: https://qiita.com/Lastonemile/items/65b9102c868e09b3248e


# kintoneアカウントを持っている方
### プラグイン（テンプレート）のダウンロード
ここまでの説明及び、以降の記事内容も網羅したkintone用OCRプラグイン及びテンプレートが、下記よりダウンロード（無償で購入）可能です。

利用方法：https://qiita.com/Lastonemile/items/c40cdd8543f14496c0c4

＊**IEではご利用いただけません**（Chrome,edgeは動作確認済、その他ブラウザは未検証です）
＊初回利用時から1か月間無償でご利用いただけます。
＊ご利用にあたり、ご利用者のドメイン情報を取得します（ドメイン毎に利用期間を管理しています）。
＊利用にあたり、別途Google Cloud Vision のAPIキーを取得頂く必要がございます。（取得代行も行っています）
Cloud Visionの詳細：https://cloud.google.com/vision/docs?hl=ja
＊利用時にCloud Visionの利用料金が発生する可能性があります。（2020/12/24現在 月間1000ユニットまで無料で利用可能です。）
Cloud Vision API料金：https://cloud.google.com/vision/pricing?hl=ja
APIキー取得方法：https://tanoshimane.stores.jp/news/602220196728be15433783e4
**APIキーの管理には十分ご注意ください**（自己責任でお願いします）


## 今後の課題
「単価」列の結果を見ると、5行目で実際は100が正しいのですが、10D（最後がアルファベットのD）になっています。＊実は元文書も10Dなのですが、100を10Dと認識違いしたと仮定してください。

この場合、「正規表現検索」で数字のみと指定してしまうと、文字列自体を除外してしまい、値をロストします。そのため、次回は文字単位での認識違いへの対策を記載したいと思います。

## ここまでで出来たこと
![KEYWORZONE正規表現.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543387/4e6ed139-5aba-43be-739f-1a03576a31bb.png)
＊KEYWORD検索（請求番号・支払期限・振込先）、ZONE検索（請求元）に加え、正規表現検索を補完することで明細（数量・単位・金額）まで取得出来ました。

## 筆者の紹介
群馬県の渋川市・高崎市を中心に群馬県内でkintoneを利用したDX化支援を行っています。ご興味ある方はぜひご連絡ください。
https://ks-kiki.hp.peraichi.com/

## 関連記事
[kintone OCRプラグイン　Vision API arr.by LOM 利用方法](https://qiita.com/Lastonemile/items/a4b3888600cfa2bd37d2)
[kintone OCRプラグイン　文書テンプレート作成方法](https://qiita.com/Lastonemile/items/c40cdd8543f14496c0c4)
[kintoneのOCRプラグインを開発する①](https://qiita.com/Lastonemile/items/55e6a159a4c2bcc9dab4)
[kintoneのOCRプラグインを開発する②](https://qiita.com/Lastonemile/items/cfc2df8005711a145d20)
[kintoneのOCRプラグインを開発する③](https://qiita.com/Lastonemile/items/40e930e28f006fa50aa5)