3
1

GPTsで貸借対照表PDFを表形式に変換してみた。

Posted at

経緯

アサインされたプロジェクトの一環でPDFの決算書を自動でデータ化する必要性が出てきた。 本来であればAI-OCR、もしくはIDPのようなSaaSを利用してどうこうすればとりあえずはどうにかなる話ではあった。 しかし、クライアントの意向を深ぼって行く内に、「安く簡単になんとかならないか、そしてAIをうまく活用した事例として外部にPRしたい。」といった内なる要望にたどり着き、GPTを使って何とかしてみようとプロジェクト内で決定し、GPTを利用したPDFのデータ化に取り組み始めた。

結論

結果として現状テキストPDFの表形式変換GPTsを作成することができた。 現GPTには画像を日本語OCRすることはできず、PDFにテキスト情報があるもののみ変換を行えた。
参考文献:OpenAIのAPIを使って任意の画像やPDFからいい感じに情報抽出する方法

成果物

BS表出力 テキスト形式の貸借対照表PDFを添付し、説明にあるプロンプトを入力すると、科目と金額のみを抽出することができる。 複数年度表を読み込ませた場合は科目で結合し年度分の金額が横並びになり比較できるようにする出力としている。

苦労した点

読み取り精度が安定しない

一般的な貸借対照表の形式はシンプルな表形式ではなく、左に資産、右に負債と純心さんといったように会計的な観点での表形式になっており
そのまま読み込ませても科目と金額が一致したり、しなかったりと安定性に欠けていた。
何度か試し、エラーを確認していく内にわかったのだが
  • GPT内でのPDFの扱い方はLLM的な観点で読み込む。
  • pythonのPDFライブラリを使って読み込む、
2種類の読み込み形式があるようで、かつ、pythonの場合ライブラリの選択が何通りかあるようだった。 貸借対照表の読み込みの場合は、ライブラリのcamelotを利用して、PDFを読み込み、その読み込みデータをGPTに理解させるやり方が一番安定していたので、その旨をcustom introductionに記載した。

表を結合させる時、エラーでタイムアウトしてしまう。

データの結合において、GPTはpythonのpandasを使って結合したがるが、GPTで扱えるセッションデータ量には限りがある。 今回表データの結合では3つ以上の表を結合する必要があり、セッションタイムアウトが頻発していた。 しかし実はpythonを使わず、LLMの処理で結合させることができ、「pythonは使わず、手動で」といつプロンプトを加えることで解決した。

複雑なプロンプトを一度に行うと、指示の無視が頻繁に発生する。

はじめ、複数年度分の貸借対照表PDFを一度に添付し、結合までのプロンプトを全て記載し一気に処理をさせようとした
すると、指定ライブラリの指示や結合の指示、データの抽出などにおいて一気に不安定になってしまった。
単年度分のPDFを順に処理をさせ、chat上に出力された表を結合させることで出力の安定化を図ることができた。

今後の展望

最終的には画像形式、テキスト形式問わず、貸借対照表のPDFは指定の表形式にすることを目標としている。 画像形式のPDFは外部OCRで出力させたデータをGPTで構造化が可能ではと思っている。 全体の自動化にはIPaasのmakeを利用するか GPTのAPIを使ったアーキテクチャを検討している。 参考文献:GPTが人知れず既存の名刺管理アプリを抹殺していた話
3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1