フォーム読み込み中
先日[レッツトライAppSheet]10分でできる!名刺管理アプリを作ってみようという記事でOCRを使った名刺管理アプリの作成方法を紹介しました。
今回はその応用編ということで、定型フォーマット(請求書など)のデータ化を半自動化する方法を紹介します。前回の名刺はOCRで読み込んで丸ごとテキスト化するところまででした。このままではデータとして使うには難があります。今回は、AI OCRという機能を使って請求書をテキスト化した後に、項目ごとに整理して保存するところまでやってしまいます。
AI OCR機能は、まだベータ版の機能の機能ではありますが、GoogleのAIを使った機能になります。なおアプリを作成するための基本的な作業の流れは前回と同じですので、一部の手順は割愛しております。不明点がある場合は前回の記事を適宜参照いただければと思います。
今回もなるべく簡単にできるようにしておりますので、ぜひ試してみて欲しいです。まずは動くものを作るという点を主眼に置いているため、細かな解説や一般的な実装における機能(権限管理等)は割愛しています。触っているうちに理解が進んできたり様々な改良のアイデアが浮かんでくると思います。こちらをスタートとして育てていただけると嬉しいです。
注)データベースにGoogleスプレッドシートを使用しているためGoogleアカウントを前提にしております。
OCR(Optical Character Recognition)は、画像や文書に含まれる文字やテキストを自動的に認識し、デジタルデータとして抽出する技術です。OCRは、光学的な方法を使用して文字を読み取ります。
一方、AI OCR(Artificial Intelligence Optical Character Recognition)は、OCRの進化したバージョンで、人工知能(AI)のアルゴリズムや機械学習を組み合わせて文字認識を行います。AI OCRは、パターン認識や文脈理解などの高度な機能を持ち、より高い精度と柔軟性を持っています。つまり、OCRは基本的な文字認識技術で、AI OCRはより高度な人工知能技術を組み合わせた進化したバージョンと言えます。
AI OCRの利点は、より幅広い応用範囲や高い精度、多言語対応などが挙げられますがAI OCRも万能ではありません。AI OCRに向いているものとして、電気、ガス、水道の料金のお知らせのように同じレイアウトのドキュメントが挙げられます。従って、標準の紙のフォームや配送ラベル、請求書などがAI OCRに向いています。これらであれば、印刷された文字や手書きの文字が含まれている画像でも使うことができます。
言い方を変えると、レイアウトが固定でないドキュメントはAI OCR向きではありません。例えば、名刺などフォーマットが一律でなくフィールド位置が固定されていないものは現状不向きです。場所に関係なく内容から住所っぽいとか、名前っぽいという判定は現時点では対応していません。
今回はサンプル用に作成した請求書を使っていますが、定型フォーマットであれば応用可能です。毎月何かを目視しながら手入力されている方は相当な効率化が期待できると思います。
今回のゴールは以下の通りとします
制約事項は以下の通りとします
請求書のレイアウトをもとにデータベース設計を行います。今回は請求書に含まれるデータ化したい項目+請求書画像+請求書画像全てのテキストデータ+その他情報という構造としました。
# | 項目名 | 補足 |
|---|---|---|
1 | 請求日 | 請求書に含まれる項目(#1-10まで) |
2 | 請求番号 | |
3 | お客様名 | |
4 | 件名 | |
5 | お支払い期限 | |
6 | お振込先 | |
7 | お振込先名 | |
8 | 請求金額 | |
9 | 小計 | |
10 | 消費税 | |
11 | 画像 | OCRで読み込む画像の保存用 |
12 | 画像テキストデータ | 11で読み込んだテキスト化の出力フィールド |
13 | 備考 | メモ欄 |
14 | 原本ファイル | (任意)元データ(PDF)を添付 |
項目の準備ができたらGoogleスプレッドシートのメニューより拡張機能→AppSheet→アプリを作成 と進みます。
ここでは
AppSheetがスプレッドシートの設定をもとに画面構成情報を自動生成してくれます。これで半分程度は完成です。「Customize your app」ボタンを押し自動生成された結果を望ましい形に修正していきます。
TYPEがデータ型、 INITIAL VALUEが初期登録時の処理になります。
各列の各項目を下表の通りに変更します。INITIAL VALUEは中央ペインを右にスクロールすると出現します。今回、請求書に含まれている内容を丸ごとテキスト化したかったのでINITIAL VALUEにOCRTEXT([画像])を設定しました。必須の項目では無いのですが、OCRの誤読等に起因する修正が必要となった場合手入力ではなくコピペで対応できるようにするため項目として持たせています。
各項目の型は以下のように変更してください
# | 項目名 | 型 | INITIAL VALUE | 補足 |
|---|---|---|---|---|
1 | 請求日 | Date | ||
2 | 請求番号 | Text | ||
3 | お客様名 | Text | ||
4 | 件名 | Text | ||
5 | お支払い期限 | Date | ||
6 | お振込先 | Text | ||
7 | お振込先名 | Text | ||
8 | 請求金額 | Number | ||
9 | 小計 | Number | ||
10 | 消費税 | Number | ||
11 | 画像 | Image | ||
12 | 画像テキストデータ | LongText | OCRTEXT([画像]) | 取り込んだ画像をテキスト化する関数 |
13 | 備考 | LongText | ||
14 | 原本ファイル | File |
今回の肝となる部分です。
AI OCRにどの項目がどの属性にマッピングするかを学習させます。この作業を行うことで、以後読み取らせた請求書画像は設定されたフィールドへ値が自動セットされるようになります。
※ 本ブログ公開日現在 AppSheet の OCR 機能は現在ベータ版です
AppSheetで AI OCR を使用するためには、前準備としてトレーニング(OCRで取得した画像テキストをどの項目にリンクさせるか?を教える)が必要があります。OCR側は文字は読み取ることができますが、どのフィールドへ値を設定したら良いかがわかりません。そこで、人間が実際にデータ登録作業を実施してAI OCRに学習用データを提供する必要があります。AI OCRはこの入力結果を見て画像のどの位置にある文字がどのフィールドにマップするべきかを学習します。
学習用データは、少なくとも4 つのサンプル画像とそこから抽出される値を含む完全なデータが必要です。
ここで一々画像や請求書原本を見ながら手入力はしたくないですよね? そこで3章で用意した OCRTEXT関数の出力結果(画像テキストデータ)を使用すると、項目別では無いですが内容をデータ化できますので手入力の負担を軽減することができます。
それではトレーニング設定をはじめましょう。
AppSheet エディタの左メニューより [Intelligence] > [OCR MODELS (BETA)] と進み”+”を押して新しいモデルを作成します。
データベースより抽出項目が自動生成されます。先に注意点だけ申し上げると、不要な項目/誤検出の多い項目を除去すると言ったチューニングが必要となります。詳細はこの後の項番4.3にてご説明いたします。
saveボタンを押すと登録済みデータをもとに学習がはじまります。
実際に画像を読み込ませて、各属性に値をセットしAI OCR側でどの属性に何をセットするかを学習させます。
実際にデータを読み込みさせると警告などが表示される場合があります。今回のケースでは日付の読み取りが期待通りになりませんでした。今回の請求書における日付の書式は YYYY年MM月DD日 という形式なのですが期待通りの結果となりませんでした。
このように、文字の内容が期待通りにマッピングできない場合もあります。その場合は取得項目から削除して対象外とする、AppSheetが識別できるようにフォーマットを合わせるといったチューニングを行います。
警告内容を確認しながらチューニングした結果が下記の内容となります。読み取りが期待通りにいかない請求書日付、AI OCRが処理する対象外である請求書原本にない項目などを除外しました。
作成したアプリの動作確認を行います。アプリから請求書データを読み込ませると自動的に内容と入力箇所を判定し自動入力してくれます。画像の解析から値セットまで1秒程度で完了します。請求日は除外したため値の入力はされていません。請求金額等3桁カンマを含む項目はそのまま文字にされてしまうため、本登録時にカンマの除去といった修正が必要となります。しかしながらゼロから入力することを考えると登録作業のスピードアップは期待できるのではと思いました。フォーマット自体を工夫することで読み取り精度は改善できそうです。
今回はAppSheetのAI OCR(OCRモデル)機能について紹介しました。
今はまだベータ版ですので、一部で文字の検出誤り、年月日は読み取りができないなど期待通りとならかったり設定上の工夫が必要となる場合もありますが、標準機能でここまでできてしまいます。
毎月データの手入力でお困りの方はまずはできるところだけ自動入力とし、誤りが多いところはモデルから除外して手入力で始められてはいかがでしょうか?AppSheetのOCR機能を使えば、データ入力作業を効率化をするなどビジネスのDXを簡単に始めることができます。
最後まで読んでいただきありがとうございました。
◆AppSheetに関することは、ぜひソフトバンク窓口又は担当営業までご相談下さい。
Google Workspaceに関することも、ご相談お待ちしております!
チームをつくり、つながり、協力を広げる
Google Workspace は、あらゆる業務に合わせて、すべてのビジネス機能をそろえた統合ワークスペースです。
お客さまのご利用に合わせたサポートとオプションをご用意しています。あらゆる働き方に対応する業務効率化を実現します。。
ノーコードのアプリケーション開発プラットフォームサービスです。Google Workspace をはじめとする、さまざまなデータソースと接続し、コーディング不要で迅速なアプリケーション開発を可能にします。
IDaas(Identity as a Service)サービスであり、企業向けデバイス管理(EMM)サービスです。Cloud Identity を利用することで、管理者は Google 管理コンソールからユーザ、アプリケーション、デバイスを一元管理することができます。
条件に該当するページがございません