"受取請求書"からの取引登録の暫定ベストプラクティス
これまで、「freeeファイルボックスの証憑管理を自動化しよう!」シリーズとして主としてAI(LLM)を使ったアプローチを紹介してきました。
これらは以下のマガジンにまとまっています。
今回は、現時点でのベストプラクティスを紹介したいと思います。
GPT-4oとDrive APIによるOCRを組み合わせる
これまで散々やってきた証憑からの取引作成のための情報抽出ですが、2024年7月現在、GPT-4oとGoogle Drive APIによるOCRを組み合わせるアプローチに落ち着きました。
受取請求書をGoogleドライブの指定フォルダに格納する
Drive APIでテキストをOCRで抽出
Drive APIのOCRテキストをプロンプトに含めてGPT-4oでも画像解析
出力をJSON形式に制限
freeeに取引を仮登録
という流れです。GPT-4oモデルによる画像解析だけでなくDrive APIのOCRテキストをプロンプトに含めることで精度アップを狙いました。
尚、GPT-4oは、API経由でのPDFファイルの解析に現時点で対応していませんので、PDFファイルの場合は、条件分岐を行い、Drive APIによるOCR処理のみを行い、抽出したテキストをGPT-4oに解析させています。
このため、証憑の推奨保存形式をPDFからJPEG等の画像ファイルに変更しました。
部門と勘定科目はフォルダツリー構造で指定
個別の証憑をどのように部門付けするかは、かなりハイコンテクストな処理となるので、AIに期待するのは酷です。
また勘定科目の付与も過去のパターンを学習させて…などアプローチはありますが、AIに渡す情報が多くなればなるほどコストがかかることもあり、人間の判断のほうが早くて効率的です。
ということで、”部門名/勘定科目名/ファイル”というフォルダツリーの構造に従ってファイルを保存し、登録時にはカレントフォルダと親フォルダの名前から部門・勘定科目を付与するようにしました。
振込先口座情報を持つ取引先を支払先と仮定
受取請求書に含まれる情報から、すでに登録のある取引先くらいは抽出してほしいものです。
そこで、一旦スプレッドシートに取引先の一覧情報を取得し、その一覧から振込先の銀行口座情報を持つ取引先を別シートにQUERY関数で絞り込みを行いました。
振込先口座情報を持つ = 支払先
という認識ですね。
この支払先一覧をAIへのプロンプトに与えて、取引先を選択させています。
実装してみての感想
勘定科目や部門はヒューマンエラーさえなければ(当たり前ですが)完璧ですし、取引先の選択も支払総額の抽出も実用レベルだと思います。
懸念の複数の税率が含まれる複合仕訳に関しても、証憑のレイアウトによりますが、6-7割の確率(体感値)で正しい数字が反映されます。
最終的には、仮登録のメモタグを付与して、取引ごとに確認作業を行うので、100点満点を目指す必要はないかなと思いますし、6-7割でも十分に作業が軽減されていると感じます。
AIのほうもこれからどんどんと進化していくことを期待すれば、精度はさらに上がっていくのかなと思います。
MAS(マルチ・エージェント・システム)から着想
今回の実装のアイデアはLLMのMAS(マルチ・エージェント・システム)です。
MAS(マルチ・エージェント・システム)は、複数のAIエージェントが協力して複雑なタスクを解決するシステムで、各エージェントが大規模言語モデル(LLM)を基盤として動作し、それぞれ特定の役割を持ちながら相互に通信し協力し、ユーザーからの指示に応えます。
AI同士を会話させるイメージですね。
Drive APIによるOCRもGPT-4oによる画像解析も、それぞれに一長一短があったので、このMASの発想を拝借して、より情報を多く与えられるように、それぞれを組み合わせることを試してみました。
この記事が気に入ったらチップで応援してみませんか?