【GPT-4v vs Claude3】AIは図表だらけの設計書を認識できるか？！　システム構成図（機能配置図）の画像認識精度を比較してみた

# はじめに

#### 画像認識可能な最強のAIモデルClaude3登場！？
#### 業務を自動化したい衝動！？
#### やってみよう検証！

ということで、情シスのラップ担当のkenjoyです。

見出しが重要らしいのでラップ風にしてみましたが、
遂に3/4にGPT-4を超えると言われている**画像認識可能なマルチモーダルAI Claude3**が公開されましたね。

情シス界隈の一部ではその精度の高さに **「遂に俺たちの仕事が全てAIに置き換わる時代が来た！？」** だの言われておりますが、実際どうなんでしょうか。気になりますよね！？

**AIがテキストも画像も高精度で認識できるなら、我々情シスが扱う画像込みドキュメントもAIは理解できるはずだ！**

ということで、本記事では、私の業務の１つである
<font color="Red">**「システム設計書やシステム要求定義書を読んでチェックする」**</font> 
をAIにやってもらうことを目的に、AIにテキスト、図表混合のドキュメントを読むことが出来るのかを検証してみます。

設計書や要求定義の品質チェック作業や、ベンダーから上がってきた設計書をレビューしたりとかしている人達にとっては気になる話だと思うので是非読んでください。

※検証の具体的な手順や各種用語の解説は省略しますので気になる方はggr。


# 問題設定

最終的な目標は、
 
 **「AIにシステム設計書やシステム要求定義書を読んで中身をチェックしてもらう」**

 なのですが、今回の検証はその前段として、

<font color="Red">**「AIはシステム要求定義書内のシステム構成図を理解できるか？」**</font> 
 
 を検証していきたいと思います。

 つまり、
 **「いろんな色の図形と矢印で構成されたシステムの構成っぽい図」** 
 をAIで認識できるかを検証します。
 
今回は、システム関係者であれば誰もが一度は見たことあるはずの下記のような図（以下、機能配置図）を使ってAIの画像認識精度について検証します。

![kinouhaichi_mask.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953228/03c9a68e-8135-25d7-77eb-93c921a32752.png)


※ある新規案件のシステム要件書の機能配置図を書き換えたものです。

この図を情シスの人間が見ると、ぱっと見でだいたい下記の理解になると思います。

　①凡例を読むとグレーのボックスで表されているUSAGI、KUMA、NEKO etcはシステムで、複数のシステムの機能間のデータ連携を表した図
　②今回の案件で、オレンジの四角のボックスが新規機能として追加される。
　③KUMAシステムに新規機能が2つ追加、NEKOシステムに新規機能が2つ追加される
　④赤い実線の矢印が新規のオンラインデータ連携で図中には3本ある
　⑤赤い点線の矢印が新規のバッチデータ連携で図中には2本ある
　⑥青い線は既存のデータ連携で、今回追加される機能と関連する処理だな。

ちょっと複雑ですが、AIにシステム要求書読ませるならこれくらい理解してほしいな・・・というレベルの図にしております。
上記の理解と、AIの回答が一致してるか？を見ていきたいと思います。

# 検証に使うモデル
今回使うAIモデルは下記です。（環境の都合上Azure、AWS上で利用できるものを使ってます）

### １．GPT-4 vision（＋OCR(光学的文字認識)）
Claude3への対向馬として、Azure OpenAI上で利用できるGPT-4 visonと、Azure Computer Vision(OCR)を組み合わせたものを使います。
GPT-4 visonのみだと、日本語文字の認識精度があまりにも低くて話にならなかったので、OCRの機能を備えたComputerVisonを組み合わせて使います。

OCR機能込みでのGPT-4vは下記の流れでAzureの画面上から利用可能です。

***1. Azure OpenAIで、gpt-4のvision-previewモデルをデプロイ
2. Computer Visonのリソースを作成（価格レベルはS1、リージョンはOpenAIでデプロイしたリージョンと同じものにする。）
3. Azure OpenAI Studioのチャットから、デプロイしたGPT-4vのモデルを選択し、下記の赤丸の部分でビジョン機能（OCR）をオンにし、2で作成したリソースを選択する。*** 

![azureopenai_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953228/d71c8e3f-58a7-91fe-4462-53f6a0ca30e7.png)

ちなみに、Computer Visonを使わずにやろうとするとこうなります。

![gpt4_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953228/bc88ba8b-f2e7-d51a-37aa-4d4a2c4c472c.png)

何も認識できてないですね！AzureのGPT-4vのモデル単体だと日本語の文字認識精度がかなり低いです。

ちなみにComputer Visonで、どのように文字を認識するかは、Computer VisonのVision Studioでデモとして見ることができます。


![gpt4_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953228/5956c1e4-431c-a5b1-7a2f-5f0b08c57645.png)

いろいろデモが出来ますが画像から文字の認識なので「Extract text from images」を選択
![gpt4_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953228/0b810808-724b-2856-2d72-007c63f2ce6e.png)
![gpt4_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953228/1612c2e9-8c71-637e-d918-a6089480ff17.png)

↑こう見ると、日本語の文字情報はほぼ正しく認識できてますね。（点線を1とかハイフンで認識してるとこもありますが・・）
これを付加情報としてGPT-4vに食わせると日本語文字と位置を認識した上での検証が出来そうです。


### ２．Claude3 Sonnet
Claude3にはHaiku、Sonnet、Opusの3種類があり、Opusが最高性能みたいなのですが、2024年3月7日時点でAWSのBedrockから利用可能なClaude3 Sonnetを使います

Claude3 SonnetについてはOCRなしで、文字情報の認識ができたのでそのまま使います。
※なお、現時点ではClaude3はオレゴンリージョンしか利用不可


# いざ検証！
基本的には凡例に書かれている内容を認識して、図を理解しているかを見ていきたいので下記4つのポイントで聞いていきたいと思います。
1. システム名の認識
1. 新規、既存機能とデータの認識
1. 矢印の色と本数
1. 矢印の始端と終端

### 1. システム名の認識
まずは、機能配置図に記載されている **6つのシステム名** を全て認識出来ているか確認してみます。
#### GPT-4v：〇
![kensyo1_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953228/b3d9daf7-0e22-a5ba-664a-855db8780cca.png)
完璧ですね

#### Claude3：△
![kensyo1_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953228/5ec4136b-adc6-5662-8a71-6680eecef8ac.png)
どうやら、凡例に書かれているグレーのボックスもシステムの1つとして認識してしまったようです・・。

### 2. 新規、既存機能とデータの認識
#### GPT-4v：〇
![kensyo2_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953228/7fe78e12-2395-9223-640e-8c6bd708ed9d.png)
最初の質問だけちょっと聞き方が悪く、4つの新規機能を全て列挙してくれませんでしたが、新規機能と機能が所属しているシステムは認識できているようですね。
KITSUNEシステムに新規機能がないことも正しく認識出来ています。


![kensyo2_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953228/266989db-0b5f-d245-734a-d1776eb8ae0c.png)
レプリカデータや既存機能についても正しく認識できています。素晴らしい！

#### Claude3：×
![kensyo2_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953228/b4fea2f9-5e54-3a90-0be8-a368268102f6.png)
新規機能という問いに対して、新規〇〇というワードを認識してしまったようです。
凡例を理解できていないのかもしれません。
ちょっと聞き方を変えてみます。

![kensyo2_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953228/82d70110-0bcd-3103-ad04-1fb495da425b.png)
NEKOシステムの新規機能は2つですが、新規機能は見当たらないと言っています。
やはり凡例からオレンジ色のボックスが新規機能だという理解が出来ずに「新規」というワードを探しているようです。
既存機能としてレプリカデータも上げており、ちょっと厳しい精度ですね。

![kensyo2_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953228/b8f73b51-4326-3256-797f-2e118ba12b44.png)
新規機能と聞かずに、オレンジ色のボックスについて聞いてみましたが、図の中に存在しない照会〇〇という機能を列挙してきましたね。

Claude3だと、凡例をもとに、機能配置図を理解するということが出来なさそうです。
かつ、機能のボックスとデータのボックスも混同しているようです。


### 3. 矢印の色と本数 4. 矢印の始端と終端
ここまで、GPT-4vは凡例を認識して、各ボックスの意味を理解できてそう、Claude3は凡例を認識できていないので、その前提で質問していこうと思います。


#### GPT-4v：×
![kensyo3_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953228/b0eebf54-9a98-3608-40b4-f5a017748254.png)


![kensyo3_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953228/df2692cb-a2f1-bdf1-96ca-eb8b0909d5d5.png)


>　④赤い実線の矢印が新規のオンラインデータ連携で図中には3本ある
>　⑤赤い点線の矢印が新規のバッチデータ連携で図中には2本ある
>　⑥青い線は既存のデータ連携で、今回追加される機能と関連する処理だな。

正しい情報と見比べてみると、よくわかりますが、赤い実線の矢印（オンライン連携）は3本ありますが、聞き方によって2本だったり1本だったり・・・始端と終端も間違っていますね。

一方で図全体で見た時の矢印の本数は6本、点線は2本であっていますが、始端、終端や色は8割程度の正答率というところでしょうか？

どちらにしろ、今回は ***品質チェック*** を目的とした画像認識ですので、間違った回答は許容できません。

#### Claude3：×
![kensyo3_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953228/b96bd89d-3144-e6dd-f404-a3d58c9b74fa.png)

![kensyo3_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953228/a9882f50-e405-0228-000b-7c594a022af0.png)
はぁ？

Claude3によると赤い矢印は1本、矢印は合計で11本見えるそうです。
色も本数も始端終端の認識も出来てなさそうですね。

## 検証結果まとめ

今回は、<font color="Red">**「システム設計書やシステム要求定義書を読んでチェックする」**</font> 業務をAIにやってもらうことを目的に、

**「いろんな色の図形と矢印で構成されたシステムの構成っぽい図」** をAIは正しく認識できるのかを検証しました。

結果は下記の通り！

![kekka_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953228/757234b2-3089-90d8-0c97-dc12e4e546a1.png)


現時点のAIモデルでは、今回の図のようなよくある構成図を正確に認識することは出来ませんでした。
もう少し単純な図であれば可能かもしれませんが・・・。

また、GPT-4vとClaude3の精度比較は目的ではありませんでしたが、今回扱った図では、***Claude3よりGPT-4v+OCRの方が画像認識精度は高そう*** ということがわかりました。

Claude3 Opusだと精度上がるかもしれませんが、AWSで使えるようになったら追加で検証してみたいと思います。

ただ、AIの進化は著しいので、GPT-5や数か月後には、今回扱ったような図も理解できるようになるかも！？　楽しみですね！！！！！！


余談ですが、プロンプトに詳細な図の情報を与えることで精度が上がるかどうかも、別途検証していますが、いろんなプロンプトのパターンで試してみたものの、やはり上記の結果から変わらず、矢印の認識は正しくできませんでした。

## 結論
**俺たち情シスおじさんがやってる仕事はまだAIには出来ない！！**

ここまで読んでくださった方ありがとうございます！！