【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か月間）頂けます。

### 今回（マスター置換編）の目標
前回（⑤）の最後で今後の課題とした、「品名」列の値を取得したいと思います。
![KEYWORZONE正規表現文字置換.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543387/5cfccd47-abb2-d7df-d10c-bee0ced86212.png)
一般的に品名や商品名等はその一覧（マスター）を作成しているケースが多いかと思います。今回も「品名」列にはマスターに記載された商品名しか記載されないという仮定のもと、このマスターを利用した置換を行い、値を取得したいと思います。

### 具体的な取得方法
まず、csv形式のマスターを準備します。今回は下記の品名マスターがあると仮定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543387/cb8b8336-97cf-4a90-74bd-de6e1c6e8049.png)
その上で、取得した値をマスターと付け合わせ、最も近い品名に置換することで、正しい値を取得することが出来ました。
1電子部品A → 電子部品A
2|工作機械 → 工作機械
4運送機器 → 運送機器

また、実務上よくあるパターンとして、文書には品名が記載されているが、後続処理では品名に紐づく品名コードが必要な場合も多々あるかと思います。そういったパターンに対応するため、品名と併せて品名コードを記載した場合には、OCR結果→品名→品名コードと変換することで、OCR結果から品名コードに変換した値を取得することができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543387/0484ad6b-e93a-77a9-dfc9-25d03c75ceb5.png)
マスターを上記にした場合、下記のように値を取得します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543387/acea7b85-fbd0-6862-0127-0e598b850025.png)
＊マスターに品名コードが記載されている場合（電子部品Aと工作機械）は、品名コードに変換されます。

### プラグイン（テンプレート）のダウンロード
ここまでの説明及び、以降の記事内容も網羅した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キーの管理には十分ご注意ください**（自己責任でお願いします）


## 今後の課題
晴れて、最終目標である請求番号・支払期限・振込先・請求元・明細（品名・数量・・・のテーブル部分）の値を全て取得することが出来ました！

取り組みを始めた当初はここまで上手く取得できるとは思ってもみませんでした。

ただし、OCRの認識精度は100%ではありません。Cloud Visionの認識精度は非常に高い（恐らく世界一）ですが、文書の状態（汚れ・歪み等）によっては、誤認識してしまいます。

そこで、実務上ではOCRで取得した値を人がチェックするという工程が必須になります。次回はこのチェック機能を考えたいと思います。

## ここまでで出来たこと
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543387/64909b6d-3013-aaee-6b65-533c3909c629.png)
＊KEYWORD検索（請求番号・支払期限・振込先）、ZONE検索（請求元）、正規表現検索（明細（数量・単位・金額））文字列置換（単価）に加え、マスター置換を利用することで品名（品名コード）を含めた、すべての値を取得出来ました！

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