Azureの最新AI技術、GPT-4 Turbo with Visionは、写真やドキュメントの画像からテキストを読み取り、内容を理解できる高度な画像分析機能を備えたGPT-4モデルです。
さらに、Azure AI VisionのOCR(光学文字認識)拡張機能と組み合わせることで、このモデルの能力は飛躍的に向上します。
文字が密集している画像、形状が変形した画像、数字が多用される財務文書など、複雑なビジュアル情報を含むケースでも、精度の高いテキスト解析を行うことが可能となります。 learn.microsoft.com
OpenAIから提供されるChatGPT Plusも画像分析機能を持っています。
今回は消防庁が公開している検査用資料を用いて、AzureのGPT-4 Turbo with VisionとChatGPT Plusの性能を比較しました。この比較を通じて、OCR拡張機能の組み合わせがもたらす画像解析能力の向上を検証し、その驚くべき効果を確認しました。
検証に使用した資料
今回は消防庁が公開している検査用の資料を使用しました。 www.fdma.go.jp
下記の画像を作成し、テストしました。
検証に使用したプロンプト文
下記のプロンプトを使用して、画像から必要な情報を取得できるかテストしました。
プロンプトは下記の分析を行います。
- 不良個所がある場合は200文字以内で要約する。
- 不良個所があると判断できる場合はYesと回答する。
- 参照した画像の内容を抽出する。
- 分析結果はJSON形式で出力する。
クリックすると使用したプロンプト文が表示されます。
命令書: あなたは{画像から不良箇所を特定し、その結果をJSON形式で報告する分析者}です。 画像を参照して不良箇所があるかどうかを識別し、その情報を200文字以内で要約してください。 提供された画像の内容を詳細に抽出し、指定されたJSONフォーマットで"資料の内容"に記載してください。
制約条件: •不良箇所の有無を"不良個所の有無":"Yes/No"で明示する。 •不良箇所の情報を200文字以内で要約し、"点検結果"に記載する。 •提供された画像の内容を詳細に抽出し、JSONの"資料の内容"にそのまま記載する。 •JSON形式で出力する。 •段階的、論理的に考える。 •日本語で出力する。
入力: {画像}
出力文: { "点検結果": "{画像から識別された不良箇所の情報を200文字以内で要約したもの}", "不良個所の有無": "Yes/No", "資料の内容": { "{画像の詳細な内容抽出、要約せずに記載する}" } }
プロンプトはGPTsの 深津式プロンプト変換君 で作成しました。
検証の方法
今回、以下の4つの異なるアプローチをテストしました。
GPT-4の画像分析機能のみを利用する方法、そしてAzure Document IntelligenceやOCR拡張機能を組み合わせた方法です。
- OpenAI ChatGPT Plusの画像読み取り機能のみ
- OpenAI ChatGPT Plusのファイル読み取り機能 + Azure Document Intelligenceで取得したJSONデータ
- Azure GPT-4 Turbo with Visionの画像読み取り機能のみ
- Azure GPT-4 Turbo with Vision + OCR拡張機能
検証結果
先に結論を記載します。
Azure GPT-4 Turbo with Vision + OCR拡張機能が最も期待通りの結果がでました。
点検結果には、「両方とも即日で交換・修理されています。」と記載されています。
今回テストで使用した画像からは障害物が即日で交換されたのかは判断できませんので、少し不正確な回答になっています。
一方で、不良個所の有無については正確に判定できており、資料の内容も画像から適切に抽出できています。
この資料の内容のようにJSON形式でデータを抽出できれば、GPT-3.5 Turboを活用したRAG検索など、さまざまな用途で活用できます。
同じAzure GPT-4 Turbo with Visionでも、OCR拡張機能をオフにした場合は期待した結果を得ることができませんでした。OCR拡張機能を使用する事で、画像分析能力が飛躍的に向上する事がわかります。
クリックすると出力されたJSONファイルが表示されます。
{
"点検結果": "消火器具の点検で2箇所の不良が見つかりました。1つは障害物の存在による設置場所の問題、もう1つはホースの軽度の水漏れです。両方とも即日で交換・修理されています。",
"不良個所の有無": "Yes",
"資料の内容": {
"様式番号": "別記様式第1",
"名称": "JBSビルディングの点検結果",
"防火管理者": "JBS太郎",
"所在": "東京都港区虎ノ門",
"立会者": "JBS花子",
"点検種別": "機器点検",
"点検年月日": "2024年 2月 20日~ 2024年 2月 21日",
"氏名": "JBS次郎",
"社名": "日本ビジネスシステムズ",
"TEL": "03-XXXX-XXXX",
"点検者情報": "東京都港区虎ノ門一丁目",
"点検結果詳細": {
"消火器の種別": "ABCDEF",
"設置場所": "障害物あり",
"設置間隔": "適応",
"耐震措置": "〇",
"表示・標識": "〇",
"消火器の外形": "〇",
"本体容器": "〇",
"安全栓の封印": "〇",
"使用済みの表示装置": "〇",
"押し金具・レバー等": "〇",
"キャップ": "2破損即日交換済",
"ホース": "1軽度の水漏れ",
"ノズル・ホーン・ノズル栓": "〇",
"指示圧力計": "〇",
"外圧力調整器": "〇",
"安全弁": "〇",
"保持装置": "〇",
"車輪(車載式)": "〇",
"ガス導入管(車載式)": "〇"
},
"備考": [
"1 この用紙の大きさは、日本産業規格A4とすること。",
"2 消火器の種別欄は、該当するものについて記入すること。Aは粉末消火器、Bは泡消火器、Cは強化液消火器、Dは二酸化炭素消火器、Eはハロゲン化物消火器、Fは水消火器をいう。",
"3 判定欄は、正常の場合は◎印、不良の場合は不良個数を記入し、不良内容欄にその内容を記入すること。",
"4 選択肢のある欄は、該当事項に〇印を付すこと。",
"5 措置内容欄には、点検の際措置した内容を記入すること。"
]
}
}
検証方法
OpenAI ChatGPT Plusの画像読み取り機能のみ
画像とプロンプトを添付して実行した結果は下記です。 そもそも日本語が記載された画像の読み取りには対応していないようです。
手動で画像を分析すると回答しており、どのような処理が実行されるのか不明なのですが、読み取ることはできました。 ただ、不良個所は特定されず期待した結果を得ることができませんでした。
クリックすると出力されたJSONファイルが表示されます。
{
"点検結果": "点検された消火器具に不良箇所は見られない。点検票には2024年2月20日から21日にかけての日付があり、JBSビルディングの消火器具が対象である。記入欄にはチェックが入っていないため、問題はないと考えられる。",
"不良個所の有無": "No",
"資料の内容": {
"点検票タイトル": "消火器具点検票",
"点検年月日": "2024年2月20日~2024年2月21日",
"点検対象": "JBSビルディングの点検結果",
"点検項目": {
"火災報知器": "未チェック",
"非常警報装置": "未チェック",
"避難器具": "未チェック",
"消火器": "未チェック",
"非常用照明器具": "未チェック",
"避難経路・出口": "未チェック",
"避難経路障害物": "未チェック",
"誘導標識": "未チェック",
"非常用放送設備": "未チェック",
"緊急時照明": "未チェック",
"その他": "未チェック"
},
"点検者": "伏字",
"点検者会社名": "JBSビルディングの点検結果",
"点検結果詳細": "全ての点検項目に不備なし"
}
}
OpenAI ChatGPT Plusのファイル読み取り機能 + Azure Document Intelligenceで取得したJSONデータ
JSONデータとプロンプトを添付して実行した結果は下記です。 プロンプト文で画像と記載されていた箇所をJSONに修正して実行しました。 点検結果と不良個所の有無は正確に回答してくれました。 ただ、資料の内容については期待した結果を得ることができませんでした。
クリックすると出力されたJSONファイルが表示されます。
{
"点検結果": "消火器具の点検において、キャップの破損およびホースに軽度の水漏れが見られました。キャップは即日交換済み、水漏れについても記録されています。",
"不良個所の有無": "Yes",
"資料の内容": {
"消火器の種別": "ABCDEF",
"設置状況": "障害物あり、適応性あり、耐震措置あり",
"表示·標識": "適切",
"消火器の外形": "本体容器、安全栓の封、安全栓、使用済みの表示装置、押し金具·レバー等、キャップ、ホース、ノズル·ホーン·ノズル栓、指示圧力計、圧力調整器、安全弁、車輪(車載式)、ガス導入管(車載式)",
"キャップ": "破損、即日交換済",
"ホース": "軽度の水漏れ",
"点検者": "氏名JBS次郎",
"点検者所属会社": "社名 日本ビジネスシステムズ",
"点検年月日": "2024年 2月 20日~2024年 2月 21日"
}
}
JSONデータはDocument IntelligenceのLayoutを使用して、マークダウン形式で出力させました。
今回、Document Intelligenceで出力させたJSONファイルは17724行でした。
画像の内容を正確に取得はしてくれるのですが、出力結果が細かすぎるので、今回のような使用方法をする場合は自作のスクリプト等でJSONファイルの内容を編集した方がよいと思います。
Azure GPT-4 Turbo with Visionの画像読み取り機能のみ
画像とプロンプトを添付して実行した結果は下記です。 日本語のOCR読取には対応していますが、不良個所は特定されず期待した結果を得ることができませんでした。
クリックすると出力されたJSONファイルが表示されます。
{
"点検結果": "点検表に基づき、全ての項目が「○」もしくは「/」で印されており、不良箇所は識別されませんでした。",
"不良個所の有無": "No",
"資料の内容": {
"タイトル": "別記様式第1号",
"項目": {
"会社名": "JBSエンタテインメントの点検結果",
"点検者": "JBS太郎",
"所属": "東京都渋谷区××町",
"点検期間": "2024年 2月 20日〜2024年 2月 21日",
"点検対象": "長者JBS太郎",
"点検者連絡先": "日本ビジネスシステムズ TEL 03-XXXX-XXXX",
"点検項目": {
"設備状況": "○",
"機械設備": "○",
"電気設備": "○",
"建物構造": "○",
"火災警報設備": "○",
"防犯設備": "○",
"非常灯": "○",
"避難器具": "○",
"消火器": "○",
"換気設備": "○",
"ガス設備": "○",
"水道設備": "○",
"排水設備": "○",
"トイレ": "○",
"ノズル・ホース・バルブ類": "○",
"排煙設備": "○",
"昇降機": "○",
"ガス漏れ検知器": "○",
"ガス遮断弁(自動式)": "○"
},
"備考": [
"この点検表のもとに、日本安全健康法人より安全と認定。",
"点検表に基づき、全ての項目が「○」もしくは「/」で印されており、不良箇所は識別されませんでした。",
"詳細は、添付の点検表の資料、不良箇所は以下資料を参照してください。",
"機械設備の点検時、点検箇所に○の印を付ける。",
"消防署に提出し、点検の結果を上げた内容を記入すること。"
]
}
}
}
また、何故かJBSエンタテインメントや東京都渋谷区という住所、長者JBS太郎というテストで使用した画像データには記載されていない名称が出力されており、ハルシネーションが発生しています。
まとめ
今回の検証では、消防庁が公開している検査用資料を用いた比較分析で、Azure GPT-4 Turbo with VisionとOCR拡張機能の組み合わせが、画像解析能力の面で最も優れた結果がでました。
Azureの最新AI技術、GPT-4 Turbo with VisionとそのOCR(光学文字認識)拡張機能を利用することで、複雑なビジュアル情報を含む文書からの高精度テキスト解析が可能であることがわかりました。
この検証結果から、AzureのGPT-4 Turbo with VisionとOCR機能の組み合わせが、私たちの仕事にどれだけ役立つかが見えてきます。
複雑な文書や画像からの情報抽出がこれほど簡単に、そして正確に行えるようになると、作業の効率は大幅に向上します。文書管理の自動化はもちろん、日々の業務がスムーズに進むようになり、より重要なタスクに集中できるようになるでしょう。
この技術の進歩は、ビジネスプロセスの効率化に大きな影響を与え、私たちの働き方をより良い方向へと導いてくれます。今後もこのような技術の発展を注視し、新たな可能性を追求していくことが重要ですね。