CodexでPDFを読む方法|文字抽出・図表確認・CLIとAPIの違い
CodexでPDFを読む方法を探すと、「PDFをそのまま渡せるか」と「中身をコードの判断材料にできるか」が同じではない点で迷います。2026年9月6日には、Codex CLIのPDF処理をめぐる機能要望も公開されました。本記事では、CLIでの文字抽出と図表確認の手順、OpenAI APIでPDFを直接入力する場合との違いを整理します。
Codex CLIでPDFを読むときは、まず文字をテキストへ、図表をPNGやJPEGへ分けて渡すと考えると迷いにくくなります。公式のCodexドキュメントがCLI向けに案内している画像入力は、`-i` または `--image` によるPNG・JPEGなどの画像です。PDFそのものをCLIの専用入力として扱う説明とは分けて読み、文字抽出後のファイルと必要ページの画像を同じ作業フォルダで参照させます(出典: https://learn.chatgpt.com/docs/image-inputs )。
2026年9月6日、OpenAIのCodexリポジトリには、PDFをローカルで扱う検証済みの経路を求めるIssueが公開されました。これは新機能の提供開始を告げる発表ではなく、現在のCLIでPDFを扱う際に、変換・確認・表示の手順が利用者ごとに分かれやすいことを示す機能要望です。CodexアプリやChatGPT WorkでPDFをプレビューできることも、CLIが同じようにPDFを直接読むことを意味しません(出典: https://github.com/openai/codex/issues/43204 、https://learn.chatgpt.com/docs/artifacts-viewer )。
PDFの文字とページ画像を一度に扱いたいなら、OpenAI APIのファイル入力が明確な選択肢です。Responses APIの`input_file`はPDFを受け付け、対応する視覚モデルでは抽出テキストと各ページの画像をモデルへ渡します。`detail`を`low`・`auto`・`high`から選べるため、文字中心か図表中心かで負荷を調整できます。ただし、これはAPIの仕様であり、Codex CLIのPDF直接入力が提供されたという意味ではありません(出典: https://developers.openai.com/api/docs/guides/file-inputs )。
目次 (23)
- CodexでPDFを読む前に知っておきたい結論
- なぜ今Codex PDFを確認するのか
- CLI・アプリ・APIでPDFの扱いはどう違うか
- CLIでPDFの文字を参照させる手順
- Step 1: PDFの種類と目的を確認する
- Step 2: 文字をレイアウト付きで抽出する
- Step 3: 抽出テキストを作業フォルダへ置く
- Step 4: ページ範囲と完了条件を伝える
- 図表を含むPDFを確認する手順
- Step 1: 必要なページだけ画像へ変換する
- Step 2: Codexへ画像と質問を一緒に渡す
- Step 3: テキストと画像の結果を突き合わせる
- OpenAI APIでPDFを直接入力する方法
- detailは図表の密度で選ぶ
- APIのファイル制限と確認項目
- CodexでPDFを読めないときの切り分け
- 文字が空になる、順番が崩れる場合
- 図表の説明が本文と食い違う場合
- PDFの表示位置が戻る場合
- 回答が長くなりすぎる場合
- PDFをコード作業へつなぐ依頼文の作り方
- Codex PDFの読み取りで守りたい確認ポイント
- まとめ:CodexでPDFを読む最適な入口
CodexでPDFを読む前に知っておきたい結論
「PDFを読めるか」という質問には、利用する入口と、読みたい情報の種類を分けて答える必要があります。Codex CLIは作業フォルダのファイルを読み書きでき、画像入力ではPNGやJPEGを指定できます。一方、公式のCLI向け画像入力ページにはPDFを直接指定する例はありません。したがって、CLIで仕様書や論文を参照させる場合は、PDFの文字をテキストへ変換し、図や表が重要なページだけ画像にして、両方を照合させる進め方が現時点では安定します。これは「PDFが読めない」と断定する話ではなく、公式に確認できる入力方法と、手元で再現しやすい準備を分けるという判断です。
PDFを扱う作業には、本文の検索、表の数値の確認、図の意味の把握、ページ単位の引用という異なる目的があります。テキスト抽出だけで済む契約条件やAPI仕様もあれば、画像だけでは拾いにくい脚注や見出しがあります。逆に、図表を文章化した結果だけに頼ると、軸の単位、凡例、配置の意味を取り違える可能性があります。最初に「どのページの何を、コードのどの判断に使うのか」を決めておくと、必要な変換量と確認範囲を抑えられます(出典: https://learn.chatgpt.com/docs/image-inputs )。
なぜ今Codex PDFを確認するのか
PDF対応をいま整理する価値は、Codexの利用範囲が広がる一方で、入口ごとのファイル処理が同じではないからです。2026年9月9日にはCodex CLI 0.154.0、9月10日には対応するPython SDK 0.154.0が公式チェンジログに掲載されましたが、該当する更新欄からPDFの直接入力が追加されたとは読めません。版番号が新しくなったことだけを根拠に、CLIへPDFを渡せると判断しないことが大切です(出典: https://learn.chatgpt.com/docs/changelog )。
もう一つの理由は、Codexの公式リポジトリでPDF処理に関する要望や不具合報告が具体化していることです。9月6日公開のIssue #43204は、PDF生成のためのローカルな代替経路を検証しやすくしてほしいという要望で、Codex CLI 0.153.4とGPT-6 Astraを使った経験を背景にしています。Issueの内容は「すべてのPDF作業が失敗する」という報告ではなく、PDFを作成・確認するための道筋を、前提条件や検証項目込みで整理してほしいという提案です。こうした一次情報を読めば、実装済みの機能と利用者からの要望を混同せずに済みます(出典: https://github.com/openai/codex/issues/43204 )。
さらに、CodexアプリのPDF表示に関するIssue #34250では、別のタブへ移動して戻ると閲覧位置が先頭へ戻るという報告が2026年7月20日に公開されています。ここから分かるのは、PDFを表示できる画面があっても、閲覧状態の保持やCLIからの入力方法まで自動的に保証されるわけではないということです。表示、内容の抽出、コード作業への参照は別の確認項目として扱います(出典: https://github.com/openai/codex/issues/34250 )。
CLI・アプリ・APIでPDFの扱いはどう違うか
同じ「Codex」と呼ばれる環境でも、PDFをどこで見るかによって利用できる機能が違います。次の表は、2026年9月11日時点で公式ページから確認できる範囲を、直接入力、画像確認、プレビューという三つの観点で整理したものです。表の「明記なし」は、使えないと断定する表現ではなく、対象の公式ページで専用の方法を確認できなかったという意味で使っています。
| 入口 | PDFの直接入力 | 図表の確認 | 向いている使い方 |
|---|---|---|---|
| Codex CLI | 公式の専用例は確認できない | PNG・JPEGを-i / --imageで渡す |
変換したテキストやページ画像をコード作業と照合する |
| Codexアプリ / ChatGPT Work | PDFの表示・添付は画面の機能として案内 | PDFプレビューや対応ビューアーで確認 | 作成した資料や添付資料を人が目で確認する |
| OpenAI Responses API | input_fileでPDFを直接入力 |
テキストとページ画像をモデルへ渡す | PDFの内容をモデルへ直接渡して要約・抽出する |
Codex CLIについては、公式の画像入力ページに、画像をプロンプトへ貼り付ける方法と、codex -i screenshot.png、codex --image before.png,after.pngの例があります。PDFをPNGへ変換してからこの形へ寄せると、どのページを見せたかをファイル名で追跡できます。CodexアプリやChatGPT Workについては、公式の「Work with files」ページがPDFの作成・プレビュー・確認を案内していますが、CLIには視覚的なプレビューや注釈画面がないと説明されています(出典: https://learn.chatgpt.com/docs/image-inputs 、https://learn.chatgpt.com/docs/artifacts-viewer )。
APIは処理の層が異なります。OpenAIのファイル入力ガイドでは、Responses APIにPDFをinput_fileとして送ると、視覚機能を持つモデルでは抽出テキストとページ画像の両方が文脈に入ると説明されています。この仕様を使えば図表の読み取りまでモデルに依頼できますが、ファイルサイズ、入力トークン、モデルの対応範囲を別途確認する必要があります。CLIの利用者がAPIの例をそのまま貼り付ければ動く、という関係ではない点を押さえてください(出典: https://developers.openai.com/api/docs/guides/file-inputs )。
CLIでPDFの文字を参照させる手順
文章中心のPDFなら、ページ画像を大量に用意するより、レイアウトをある程度保ったテキストを作り、ページ番号を残して参照させるほうが扱いやすいです。ここでは、ローカルのPDFを読み取り、Codex CLIからコードや仕様へ結び付けるための基本手順を示します。変換後のファイルは元PDFと同じ作業フォルダに置き、原本を消さずに比較できる状態を保ちます。
Step 1: PDFの種類と目的を確認する
最初に、そのPDFが文字を選択できる文書なのか、スキャン画像だけで構成された文書なのかを確認します。文字選択ができるならテキスト抽出から始め、表や図の確認が主目的なら対象ページを先に絞ります。スキャンPDFでは文字抽出結果が空になったり、列の順番が崩れたりするため、最初から画像化やOCRの確認が必要です。読みたい章、必要なページ、最終的に変更するコードをメモしておくと、Codexへ渡す情報を小さくできます。
Step 2: 文字をレイアウト付きで抽出する
Popplerなどの環境がある場合は、pdftotext -layout input.pdf input.txtのようにレイアウトを保って抽出します。-layoutを付けても表が完全に再現されるわけではありませんが、見出し、列、空白の関係を通常の抽出より残しやすくなります。抽出後は先頭、途中、末尾を自分で開き、文字化け、欠落、ページ区切りの崩れを確認します。重要な引用には、抽出テキスト内へ[PDF p.12]のようなページ印を補うと、後で原本と照合しやすくなります。
pdftotext -layout input.pdf input.txt
Windowsでこのコマンドを使えない場合は、手元のPDFビューアーや文書変換ツールでテキストとして書き出しても構いません。大切なのはツール名ではなく、出力された文章が原本のどのページに対応するかを残すことです。ページ番号を失ったまま長い文章だけを渡すと、Codexが正しい箇所を見つけても、読者へ根拠を示す作業が難しくなります。
Step 3: 抽出テキストを作業フォルダへ置く
input.txtをそのまま渡すのではなく、用途と出典が分かる名前にします。たとえばdocs/spec-pdf-text.mdへ変換し、冒頭に元ファイル名、確認日、ページ番号の扱いを短く書きます。PDFが長い場合は章ごとに分け、docs/spec-p01-20.mdのように範囲を名前へ含めます。これでCodexは、コードの変更対象と参照資料を区別しやすくなり、関係のないページまで読み込んで判断がぼやけるのを防げます。
Step 4: ページ範囲と完了条件を伝える
依頼文では、どのファイルを読むか、どのページを根拠にするか、コードを変更する前に何を報告するかを明示します。たとえば「docs/spec-pdf-text.mdの12〜18ページを読み、認証方式に関係する要件を抜き出し、該当ファイルを変更する前に不足情報を列挙してほしい」と伝えます。読み取りと編集を一つの曖昧な依頼にせず、まず要件とページ番号を返させると、PDFの解釈違いを早い段階で見つけられます。
docs/spec-pdf-text.md を読み、PDF p.12〜18 の要件だけを確認してください。
要件ごとにページ番号を付け、現在のコードとの不一致を説明してください。
コードはまだ変更せず、解釈が分かれる箇所を先に報告してください。
図表を含むPDFを確認する手順
文字抽出は検索性に優れますが、図表の配置、矢印、色、軸、凡例を正確に保持するとは限りません。特に設計図、画面遷移図、性能グラフ、表の結合セルは、抽出された文章だけで判断すると意味が変わることがあります。Codex CLIの公式ページが案内する画像入力を使い、必要なページだけPNGまたはJPEGへ変換すると、テキストと視覚情報を役割分担させられます(出典: https://learn.chatgpt.com/docs/image-inputs )。
Step 1: 必要なページだけ画像へ変換する
PDF全体を高解像度で画像化すると、ファイル数も入力負荷も増えます。まず図表のあるページを特定し、Popplerのpdftoppmなどで範囲を指定します。次の例は3〜5ページをPNGにする形です。出力名にページ番号が入るため、Codexへ渡すときも原本との対応が明確になります。
pdftoppm -png -f 3 -l 5 -r 150 input.pdf page
解像度は、細かい文字や密な表なら上げ、単純な模式図なら下げるなど、確認内容に合わせます。画像を作った後は、ページが切れていないか、文字が読めるか、回転方向が正しいかを自分で確認します。変換に失敗したページをそのままCodexへ渡すと、モデルの能力ではなく画像品質の問題を誤って解釈することになるため、入力前の目視確認が欠かせません。
Step 2: Codexへ画像と質問を一緒に渡す
公式ドキュメントの形式に合わせて、画像だけでなく、見てほしい場所と出力形式を文章で指定します。たとえば、codex -i page-03.png "この図の入出力と、実装上の前提をページ番号付きで説明して"のように、対象、目的、根拠を一つの依頼へまとめます。複数ページを比べる場合は、ファイル名のページ番号を本文にも書き、どの画像の差を見ているのかをCodexが取り違えないようにします。
codex -i page-03.png "この図の構成要素と矢印の向きを説明し、PDF p.3 の要件として整理してください"
画像入力では、画像に写っていない前提を推測で埋めないように依頼することも大切です。「読めない文字は読めないと書く」「図にない仕様は追加しない」「数値は表の原本と照合する」といった条件を添えると、もっともらしい補完を減らせます。Codex公式ページも、画像だけに頼らず、何を調べて何を出力するかをプロンプトへ書くよう案内しています(出典: https://learn.chatgpt.com/docs/image-inputs )。
Step 3: テキストと画像の結果を突き合わせる
文字から得た見出しや数値と、画像から得た配置や凡例を別々に確認し、食い違いがある箇所を原本で再確認します。たとえば抽出テキストが「成功率 95」と示していても、画像の凡例が別系列を指しているなら、その数値をそのまま実装条件にしてはいけません。Codexへ「テキストの根拠」と「画像の根拠」を分けて報告させると、どちらの情報に基づく判断かをレビューしやすくなります。
OpenAI APIでPDFを直接入力する方法
Codex CLIでは変換したファイルと画像を参照させる方法が現実的ですが、アプリケーションからPDFを直接モデルへ渡したい場合はOpenAI Responses APIのファイル入力を使えます。公式ガイドによれば、PDFはinput_fileとしてBase64データ、Files APIで得たファイルID、外部URLのいずれかで渡せます。視覚機能を持つモデルでは、PDFから抽出したテキストとページ画像の両方がモデルへ送られるため、本文と図表を同じ入力で扱えます(出典: https://developers.openai.com/api/docs/guides/file-inputs )。
const response = await client.responses.create({
model: "gpt-6-astra",
input: [{
role: "user",
content: [
{
type: "input_file",
filename: "spec.pdf",
file_data: "data:application/pdf;base64,...",
detail: "high"
},
{
type: "input_text",
text: "PDF p.12〜18のAPI要件を、ページ番号付きで要約してください。図表の数値は推測せず、不明なら不明と書いてください。"
}
]
}]
});
この例のgpt-6-astraは、現在の公式ファイル入力ガイドに掲載されているモデル名に合わせたものです。実際に利用できるモデル、アカウント、地域、料金は変わる可能性があるため、実行時のモデル一覧と公式案内を確認します。Codex CLIの操作とAPIのリクエスト形式は別物なので、CLIのコマンドへinput_fileを追加するという理解は誤りです。アプリケーション側でAPIを使う場合にだけ、この形式を採用します。
detailは図表の密度で選ぶ
Responses APIのPDF入力には、ページ画像の処理を調整するdetailがあります。lowは入力トークンを抑えたい文字中心の資料、highは小さな文字、細かいグラフ、複雑な図を確認したい場面に向きます。autoは既定値で、公式ガイドではGPT-5.6以降のモデルで高い詳細度が使われると説明されています。どの値でも抽出テキストが消えるわけではなく、detailが影響するのは主にPDFページ画像の処理です(出典: https://developers.openai.com/api/docs/guides/file-inputs )。
高詳細にすれば常に正確になるわけではありません。長いPDFを全ページ高詳細で送れば、入力トークンが増え、費用や応答時間にも影響します。まず目次や抽出テキストで対象ページを絞り、図表が重要な範囲だけ高詳細で試すほうが、結果と負荷のバランスを確認しやすくなります。大きな文書群から必要箇所を探す用途では、ファイル入力ガイドが案内するFile Searchのような検索手段を検討し、全ページを毎回渡す設計を避けます。
APIのファイル制限と確認項目
公式ガイドでは、1回のリクエストに含めるファイルは複数でも、各ファイルと合計のサイズに50MB未満という制限が示されています。また、PDFのテキストとページ画像の処理には視覚機能を持つモデルが必要です。入力に成功したかだけでなく、ページ数、図表の有無、抽出したい項目、使ったdetail、回答に含まれたページ根拠を記録します。これらを分けて残せば、回答が不十分だったときに、ファイルの問題、モデルの選択、指示の不足を切り分けられます(出典: https://developers.openai.com/api/docs/guides/file-inputs )。
CodexでPDFを読めないときの切り分け
PDFの扱いで困ったときは、「CodexがPDFを理解できない」と一括りにせず、入力、変換、表示、回答の四つに分けて確認します。CLIへPDFのパスをそのまま渡してエラーになる場合は、公式に案内されたPNG・JPEGの画像入力か、抽出済みのテキスト参照へ切り替えます。APIで直接入力する場合は、ファイル形式、サイズ、視覚モデル、detailの設定を確認します。どの入口を使ったかを最初に記録すると、同じ問題を別の機能のせいにせずに済みます。
文字が空になる、順番が崩れる場合
スキャンPDFや複数段組みの文書では、文字抽出の出力が空になったり、左列と右列が交互に並んだりします。抽出結果の先頭だけを見て成功と判断せず、見出し、表の列、脚注、末尾を確認します。必要なページだけ画像化し、読めない文字はOCRや原本の拡大表示で確かめます。Codexへ渡すテキストには、推測で補った文章ではなく、欠落している範囲を明示しておくことが重要です。
図表の説明が本文と食い違う場合
表の数値やグラフの系列が一致しないときは、テキスト抽出と画像確認のどちらかを無条件に正しいとせず、原本のページを開きます。表では単位、桁、列見出し、脚注を一緒に確認し、グラフでは軸、凡例、対象期間を確認します。Codexに再質問する場合は、該当ページ画像と抽出テキストの範囲を限定し、「一致しない点を列挙して」と伝えると、結論を急がずに差分を見つけやすくなります。
PDFの表示位置が戻る場合
CodexアプリでPDFを表示できても、閲覧位置の保持に問題が出る可能性があります。公式リポジトリのIssue #34250では、別タブへ移動して戻ると5ページ目から1ページ目へ戻る事例が報告されています。重要な箇所を確認するときは、ページ番号を依頼文とメモに残し、再表示した後に同じページを開き直します。この報告はすべての環境で同じ症状が出るという意味ではありませんが、画面上の位置だけを根拠にせず、ページ番号を併記する習慣に価値があります(出典: https://github.com/openai/codex/issues/34250 )。
回答が長くなりすぎる場合
PDF全体を一度に要約させると、重要なページの根拠が薄くなったり、表の細部が省かれたりします。まず目次と対象ページを確認し、次に章ごとの要約、最後にコードとの対応確認という順で範囲を狭めます。回答には「根拠ページ」「読めなかった箇所」「推測していない項目」を含めるよう指定し、最終的な実装判断は原本とコードを人が照合します。長さを減らす目的でページ番号を削ると、後の確認が難しくなるので注意します。
PDFをコード作業へつなぐ依頼文の作り方
PDFを読ませるだけで終わらず、仕様の確認やコード修正へつなげたい場合は、資料の場所、対象ページ、求める出力、変更範囲、確認方法を一つの依頼文へ入れます。ただし、最初から「PDFを読んで全部直して」と頼むと、どの記述が判断の根拠になったかを追いにくくなります。読み取り結果を先に返してもらい、合意したページと要件だけを次の依頼へ渡すほうが、資料の解釈とコードの変更を分離できます。
要件確認用の例は次のとおりです。
docs/spec-pdf-text.md と page-03.png を参照してください。
PDF p.3、p.12〜18に書かれたAPI要件だけを抽出し、各項目にページ番号を付けてください。
図表とテキストの内容が一致しない場合は、差分と確認が必要な箇所を分けてください。
この段階ではコードを変更せず、実装に必要な不足情報を最後にまとめてください。
実装へ進むときは、対象ファイル、変更しない範囲、テストや確認方法を追加します。たとえば「上の要件一覧のうちp.14の入力形式だけを対象に、src/parser配下を変更し、既存のテストを実行して結果を報告する」と範囲を明示します。PDFに書かれたすべての希望を一度にコードへ反映させず、ページと変更対象を対応付けることで、要件の読み違いと不要な差分を見つけやすくなります。
図を実装へつなぐ場合は、画像の説明をそのまま仕様とみなさないようにします。「画面の見た目から読み取れる事実」「PDF本文に書かれた要件」「まだ確認できない前提」を三つに分けて報告させると、デザイン上の例と必須条件を区別できます。画像入力の公式案内が勧めるように、画像のどこを見てほしいか、どの結果が必要かを文章で指定することが、図表を使う作業の再現性を高めます(出典: https://learn.chatgpt.com/docs/image-inputs )。
Codex PDFの読み取りで守りたい確認ポイント
PDFは、コード、画面、契約、研究資料など複数の種類の情報を一つにまとめられる反面、読み取った結果が原本の意味を完全に保つとは限りません。特に表の数値、図の凡例、脚注、改訂日、ページ番号は、要約や抽出の途中で失われやすい要素です。Codexの回答が自然に見えても、変更や判断の根拠がPDFのどこにあるかを確認できなければ、実務で採用するには情報が足りません。
確認時は、まず資料の版とページを固定します。次にテキストと画像の両方で必要箇所を照合し、最後にコードや成果物へ反映した内容を再確認します。APIを使う場合は、PDFが50MB未満か、視覚機能を持つモデルか、detailが目的に合うかを確認します。CLIを使う場合は、画像入力のファイル形式、ページ番号、抽出テキストの欠落を確認します。入口ごとに見る項目は異なりますが、原本、変換物、回答、変更結果の四つを結び付ける考え方は共通です。
Codexの公式リポジトリでPDFに関する要望が公開されていることは、利用者が困っているから直ちに提供機能だという意味ではありません。Issueは現状の課題を知る一次情報であり、リリースノートや公式ドキュメントが示す対応済みの機能とは役割が違います。新しい版やモデルが出たときも、直接PDFを渡せるか、画像入力が使えるか、表示だけができるのかを、それぞれの公式ページで確認してください(出典: https://github.com/openai/codex/issues/43204 、https://learn.chatgpt.com/docs/changelog )。
まとめ:CodexでPDFを読む最適な入口
2026年9月11日時点で、Codex CLIでPDFを扱うなら、文字をレイアウト付きテキストへ変換し、図表のあるページだけPNGやJPEGにして、ページ番号付きで参照させる方法が現実的です。CLIの公式画像入力はPNG・JPEGを対象にしており、PDF専用の直接入力例とは分けて考えます。CodexアプリやChatGPT WorkのPDFプレビューは、表示と確認のための機能として扱い、CLIの入力仕様へそのまま置き換えません(出典: https://learn.chatgpt.com/docs/image-inputs 、https://learn.chatgpt.com/docs/artifacts-viewer )。
PDFをアプリケーションから直接モデルへ渡す場合は、OpenAI Responses APIのinput_fileが公式に説明されたルートです。PDFでは抽出テキストとページ画像が扱われ、detailで画像の細かさを調整できます。ただし、ファイルサイズ、視覚モデル、入力トークン、回答の根拠ページを確認し、APIの機能をCodex CLIの機能と混同しないことが重要です(出典: https://developers.openai.com/api/docs/guides/file-inputs )。
最初に「本文を検索したいのか、図表を読みたいのか、コードへ要件を反映したいのか」を決め、必要な情報だけをテキストと画像に分けて渡します。Codexが返した説明は原本のページ、表の単位、図の凡例、変更後のコードと照合してください。2026年9月6日に公開されたPDF処理経路のIssueも確認しながら、公式に明記された機能、手元で再現できる変換、まだ要望段階の部分を切り分けて使うことが、PDFを読む作業を安定させます(出典: https://github.com/openai/codex/issues/43204 )。