見出し画像

【解説】ChatGPTがPDFやExcelファイルを読み込む仕組みを図解する

こんにちは、IZAIエンジニアチームです。
今回はOpenAIからChatGPTのファイルアップロード機能の詳細が公開されているので図解します。

(注意)記事執筆時点の情報です。最新の情報はOpenAI公式ドキュメントを参考ください。


File Uploadとは?


ファイルアップロード機能とは2024年3月降、順次公開されているOpenAIのChatGPT上でPDFや画像ファイル、Excelファイルなどを扱える機能で複数ページPDFの要約やExcelファイルのデータ整理、画像の解析などに広く使用されています。

従来のテキストのみに対応したChatGPTの場合、ファイルの中身について尋ねるには、中身を全選択してコピーして貼り付ける必要がありました。ファイルアップロード機能によりLLMの対応コンテクスト長さを超えるトークン長のファイルや数万行に及ぶExcelファイルを入力として対応できるようになりました

今回は、本機能の裏側でどのような処理を行っているかをエンジニア向けに解説をします。1つ1つ分解すると実は比較的単純な分岐の連鎖となっています。ChatGPT搭載サービス等の開発者にとって再現しやすい仕組みかと思いますので、ぜひ参考にしてみてください。より詳細については知りたい方は公式FAQがありますので、そちらご覧ください。

ChatGPT ファイルアップロード機能の仕組み



↓実際のフローチャート

ChatGPT ファイルアップロード機能の仕組み

Step.1 ファイル形式に応じて分岐

まず、ファイル形式に応じて3つに分類されます

  • テキスト抽出

  • コードインタープリター

  • 画像解析

Step.2 テキスト抽出の場合

対応形式:pdf, pptx, docx, txt, md, json, xml

原則、ファイルに埋め込まれたテキストを、ChatGPTのプロンプトに入力します。

テキスト長によって以下さらに分岐します

  • 11万トークン以内:全文をプロンプトに挿入。

  • 11万トークン超過:最大55,000トークンごとに均等にチャンク分割し、ユーザー入力に応じて該当部分のみを抽出してプロンプトに挿入。

Step.2 コードインタープリターの場合

対応形式:csv, xls, xlsx

表形式データを処理するためのPythonコードを生成して実行します。
この時、ファイルサイズが大きいと冒頭のヘッダーと値のサンプルだけを切り取って判断するため、コンテクスト長を超えるファイルでもアップロードすることができます。

Step.2 画像解析の場合

対応形式:jpg, png

Visionモデルを使用して画像処理します。細かい文字などOCRが必要な場合はPythonのOCRモジュールでテキストに変換してから処理しますが、2024年12月時点で日本語には対応していません


※なお、分岐はファイル形式だけに依存せず、明示的にプロンプトで指示することでファイル形式に関わらず分岐を操作することができまます。
「例:画像ファイルをPythonでOCRして→コードインタープリターを起動」


ファイルアップロード機能でできないこと


これまでの仕組みから、上記のことはChatGPTのファイルアップロード機能ではできません。

Q&A


Q. テキスト埋め込みされていないPDFを読めるか?

No. 読み取れない

Q. PDF中の画像、イラストは認識されるのか?

No. 認識されない

ドキュメント/プレゼンテーションに埋め込まれた画像 (スライド デッキのスライド内の画像など) はまだサポートされていません。将来的にはこれに対するサポートを追加する予定です。

https://help.openai.com/en/articles/8555545-file-uploads-faq(2024.11.17閲覧)


Q. 複数枚のPDFも中のテキストをチャンクに分けているのか?その場合のチャンクサイズは?

Yes. チャンクに分けている。最大チャンクサイズは55,000トークン


以上、ChatGPTファイルアップロードの仕組みでした。


最後に


IZAIでは自然な音声インターフェースの社会実装を目指して、コールセンター自動化に取り組んでいます。興味をお持ちいただいた方はぜひ以下からお問い合わせください!

参考になった方、興味のある方はぜひ「いいね」をよろしくお願いします。ではまた!


いいなと思ったら応援しよう!