【kintone x OCR】～ZONE検索編～　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か月間）頂けます。

### 今回（ZONE検索編）の目標
②でKEYWORDを利用して値を取得する方法を記載しました。

今回は②の今後の課題であげたKEYWORDがない場合、今回の最終目標に沿えば「請求元」の値を取得したいと思います。
![請求元.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543387/eb516ad8-866b-204d-7bb6-5b1d7564393e.png)

### 具体的な取得方法
ZONE検索では対象の値の座標（ZONE）を指定することで、その範囲内の値を対象の値として取得します。（単純です）

当然ながら、何らかの理由（書類が曲がっていたり、文面の都合等で座標が変わった場合　等）で、この座標(ZONE）内に値が入らなかった場合は値をロストすることになります。

### KEYWORD検索の補完
ZONE検索のみでは値を取得出来ないことが多いですが、KEYWORD検索と組み合わせることで、KEYWORD検索のデメリットを補完出来ます。
組み合わせる場合には、ZONEを厳密には指定せずに、書類が曲がっていたり、文面の都合等で座標が変わった場合でも必ず入る範囲（大体真ん中より上 等）をZONEに指定します。そのZONE内のみでKEYWORD検索を行うことにより、文書中にKEYWORDが複数存在する場合や、KEYWORD検索の複数文字列を取得する場合に別の値も取得してしまう場合の対策になります。

# kintoneアカウントを持っていない方
ここまでの説明及び、以降の記事内容も網羅したOCRシステムが、メールアドレス登録のみでご利用いただけます。
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キーの管理には十分ご注意ください**（自己責任でお願いします）


## 今後の課題
座標を利用したKEYWORD検索+ZONE検索で、最終目標の請求番号・支払期限・振込先・請求元の値を取得することが出来るようになりました。

しかし、明細（品名・数量・・・のテーブル部分）が、一部上手く取得出来ませんでした。

![TABLE.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543387/d182410f-5014-899f-6e68-9473f9f6c841.png)

＊明細については、KEYWORD検索「下複数」+ZONE検索を応用して取得しています。

幾つか問題がありますが、まず「数量」列と「単位」列の値を取得できることを最初の課題とします。

この問題は特にテーブルで発生しやすく、「数量」列と「単位」列の座標が近接しており、ZONEの設定では上手く分離できずに、「数量」列と「単位」列を混ざって取得してしまったことが原因です。（座標を厳密に指定しすぎると座標がズレた際に困りますし、大雑把に指定しすぎると両列の値を取得してしまいます。）

次回は、この「数量」と「単位」を例に、ZONE検索では、上手く分離できない値をどのように取得するかを記載したいと思います。

## ここまでで出来たこと
![KEYWORZONE.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543387/ec3bf7a5-ffa7-bc67-3daf-841df21afda0.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)