1.おおまかな要件
① ローカルのPDFファイルをGoogle Cloud Storageに連携
② 連携したPDFファイルをGCP VisionAIでOCR処理し、JSONファイルに出力
↑ここまでが(その1)の範囲
③ ②で作成したJSONファイルをGCP-4のAPIを使用し、予め用意した構造化モデル(大げさ)設定ファイルを基に解析
④ ③で解析した結果をCSVファイルで出力
↑ここまでが(その2)の範囲
2.ツールのイメージ図(再掲)
3.事前準備
・OpenAIアカウントの作成
参考URL:OpenAIのアカウント作成方法を画像付きでわかりやすく解説!
・GPT Keyの発行
参考URL:GPT-4o対応【24年5月最新】API Key 発行手順と課金方法
4.プログラム
GitHub:OpenAI-JSON-Anarysis.py
GitHub:json_config
(1)OpenAI Keyの実装
OpenAIアカウントで発行したキーの格納場所(環境変数)を設定し、GPT-APIを使用できるようにする。
import os
from openai import OpenAI
import json
import base64
#端末に格納したAPI Keyの環境変数を設定
OpenAI.api_key = os.environ['OPENAI_API_KEY']
client = OpenAI()
(2)構造化モデルの設定
今回のツールでは読み取ったPDFが試算表であることを想定して構造化モデルをJSONで作成。
{
"現金(貸方残高)": "number | null",
"現金(貸方合計)": "number | null",
"現金(借方残高)": "number | null",
"現金(借方合計)": "number | null",
"普通預金(貸方残高)": "number | null",
"普通預金(貸方合計)": "number | null",
"普通預金(借方残高)": "number | null",
"普通預金(借方合計)": "number | null",
・・・
}
(その1)でOCR処理した内容を記載したテキストファイルを準備する。
また、上段で用意した構造化モデル(試算表)のJSONファイルを準備する。
# 一時的な読込措置(その1でOCR処理結果を格納したファイル)
path = 'D:\\work\\tool\\ocr_csv_create_tool\\text\\test_w.txt'
with open(path) as f:
string = f.read()
# JSONファイル(試算表のスキーマ)を読み込む
path_json = 'D:\\work\\tool\\ocr_csv_create_tool\\json_config\\balancesheet_config.json'
with open(path_json, 'r', encoding='utf-8') as f:
schema = json.load(f)
(3)JSON形式での出力
上段で準備したテキストファイル(OCR結果)とJSONファイル(構造化モデル)を基にGPT-APIを使って解析依頼を行う。
行った結果についてはJSONオブジェクトとして出力する。
# OCR処理したテキストファイルを指定したスキーマの形式にGPTで整理
response = client.chat.completions.create(
model="gpt-4-turbo-preview",
response_format={ "type": "json_object" },
messages=[
{"role": "system", "content": f"次の文字列から試算表の勘定科目毎の貸方残高・貸方合計・借方残高・借方合計を抜き出して、JSON形式で出力してください。JSONのスキーマは次の通りです:{schema}"},
{"role": "user", "content": string}
]
)
# GPTで整理した結果をJSONオブジェクトに変換
response_json = json.loads(response.choices[0].message.content)
# JSONオブジェクトを文字列に変換
json_str = json.dumps(response_json)
5.今後の課題
ここで作成したものはあくまでベースとして、PDFをOCR処理してJSONオブジェクト化するところのコアの部分になる為、これを誰でも使えるインターフェースや、今回準備した試算表以外にもJSONファイルを用意し、多種多様なPDFを手軽にCSV化できるようアプリケーション構築を進めていきたい。