【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プラグイン及びテンプレートが、下記よりダウンロード(無償で購入)可能です。

利用(設定)方法

最終目標

https://ks-kiki.hp.peraichi.com/最終目標 kintone上でこの↓画像(請求書)をOCR処理し、請求番号・支払期限・振込先・請求元・明細(品名・数量・・・のテーブル部分)の値を取得することを最終目標とします。 請求書サンプル.jpg

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

今回(正規表現検索編)の目標

前回(③)で今後の課題とした、近接した値を取得するために、正規表現を利用した値の取得を行いたいと思います。*ここ↓から「数量」と「単位」の値を上手く取得したいと思います。 TABLE.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 VisionAPIキーを取得頂く必要がございます。(取得代行も行っています) 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 *KEYWORD検索(請求番号・支払期限・振込先)、ZONE検索(請求元)に加え、正規表現検索を補完することで明細(数量・単位・金額)まで取得出来ました。

筆者の紹介

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

関連記事

kintone OCRプラグイン Vision API arr.by LOM 利用方法 kintone OCRプラグイン 文書テンプレート作成方法 kintoneのOCRプラグインを開発する① kintoneのOCRプラグインを開発する② kintoneのOCRプラグインを開発する③