AIRead連携 (AI OCR)

最終更新日: 2021年9月27日

サンプルアプリケーション「注文書」

アライズイノベーション株式会社が提供する「AIRead on Cloud」APIを活用した、注文伝票のOCR自動読み取りサンプルを用意しています。アドオンギャラリーから「AIOCRデモ」を選択し、インストールすることですぐに試すことができます。

インストール方法の詳細は、アドオンギャラリーの説明ページをお読みください。

AIOCRデモ

インストールすると、次のようなモデルが含まれます。

AIOCRデモ モデル定義

フルビルドします。

機能概要

FAXで送付されてきた注文書画像を AI OCR で読み取り、入力欄に自動設定します。

構成図

今回、利用する注文伝票のサンプル画像です。この画像を読み込みます。

サンプル画像

アプリケーションの画面イメージです。上の画像を読み込んで、値を自動設定します。

画面イメージ

AIReadの準備

評価用キーの入手

お試しには別途、AIRead on Cloud の評価用キーが必要です。この入手方法は、アライズイノベーション株式会社へお問い合わせください。

同社から「ユーザID」と「トークン」を入手します。

環境タブのアプリケーション設定で、AIReadの「ユーザID」と「トークン」を設定し、保存ボタンをクリックします。

ユーザIDとトークンの設定

定義ID "order" の作成

図2のサンプル画像(注文書)を読み取るための AIRead の設定を行います。この設定はアライズイノベーションよりサンプル定義が用意されていますので、こちらを使うものとします。保存する定義IDは "order" とします。(後述するスクリプトの設定で、この定義ID名を使います。)

メニュー

インストールしたアドオンは、アプリケーションの「Add-on」タブ内にメニューが表示されます。

アドオンメニューを開く

(準備)顧客と商品の登録

AI OCR を試す前に、あらかじめ読み込まれる顧客マスタと商品マスタを登録しておきます。

顧客

顧客コード "100" とします。注文書のFAX画像に含まれる得意先コードに合わせます。

顧客デモデータ(1)
顧客デモデータ(2)

商品

商品コード "123", "234", "543", "678" を用意します。注文書のFAX画像に含まれる商品コードに合わせます。

商品デモデータ(1)
商品デモデータ(2)

注文書の新規登録

注文書の新規登録を行います。新規登録画面を開いた直後は、右側の入力欄は空白となっています。

注文書の新規登録(1)

用意されたサンプル画像をアップロードします。

注文書の新規登録(2)

新規登録のタイミングでスクリプトが実行されます。詳細画面へ遷移後、画像の値が読み込まれていることがわかります。

注文書の新規登録(3)

注文書の明細部も値がセットされていることがわかります。

注文書の新規登録(4)

読み込まれた値を修正したい場合は、更新画面を開いて編集してください。
(上の例では「包装方法」で読み込んだ値が正しくありません。このようなデータを手動で修正します。)

スクリプトの詳細

読み込み方針

今回のデモで用いた注文書の読み込み方針を示します。

  • 「得意先コード」を読み取り対象とする。得意先名などはルックアップで埋める。
  • 「電話番号」を読み取り対象とする。
  • 「ご希望納期」は月と日をそれぞれ読み取り、今年として計算式で(文字列を)日付に変換して扱う。
  • 「配達指定」「時間指定」を選択肢モデルとして用意し、数値読み取りから自動設定させる。
  • 親子モデルの子として用意し、明細として扱わせる。
  • 商品マスタを用意し、「商品コード」を読み取って商品名をルックアップさせる。
  • 「注文数」「包装方法」はそれぞれ数値として読み取る。
読み込み方針

注文書モデルの新規登録スクリプト

注文書モデルの新規登録のタイミングで、次のスクリプトを実行します。

スクリプト

ここで「AIReadの定義 "order" で項目 "画像" を読み取る」ブロックを実行すると、AIRead on Cloud の API に(注文書の)画像項目のファイルを送ります。その結果、例えば次のような JSON 文字列が返戻されます。

{
tok_cd=1 00, 
haikb=1, 
Month=1 0, 
timekb=3, 
Tel=03 - 2345 - 6789, 
id=order, 
detail=[
	{Amount=30, Itemcd=123, Wrapping=20}, 
	{Amount=150, Itemcd=678, Wrapping=クo}, 
	{Amount=80, Itemcd=543, Wrapping=ノ00}, 
	{Amount=95, Itemcd=234, Wrapping=3o}, 
	], 
Day=3 1
}

Wagbyが用意した「AIRead読み取り」ブロックは、このJSON文字列を連想配列に変換します。そのため、スクリプト内では "order.tok_cd" のように「変数名 + "." + AIReadで定義した名前」で値を参照することができるようになっています。

値に空白が含まれている場合の対応

ここで、いくつかの値に空白が混ざっていることに注意してください。例えば tok_cd (得意先コード) は "1 00" と、途中に空白が含まれています。

AIRead は学習によって読み取り精度が改善されますが、未学習の状態ではこのように空白が含まれることがあります。スクリプトではこの対応として、SUBSTITUTE 関数を使って空白1文字を空文字に置換しています。