Claude Code PDFエラー一覧 — 添付時に出る3つの原因と対処
Claude CodeがPDFを読み込めないときの「too large」「password protected」「not valid」の3エラーを、原因別に切り分けて対処します。
Claude CodeにPDFを読み込ませようとすると、PDF too large・PDF is password protected・The PDF file was not validのいずれかで止まることがあります。原因はページ数とサイズの上限超え、パスワード保護、ファイル自体の破損や非対応形式の3系統に分かれ、対処もそれぞれ違います。
Claude CodeでPDFを添付するとどんなエラーが起きるか
Claude CodeはPDFを専用のアップロード欄ではなく、Readツールでファイルパスから直接読み込みます。短いPDFはそのまま全ページを読み込み、10ページを超えるPDFはpagesパラメータでページ範囲(例: "1-5")を指定しながら、一度に最大20ページずつ読み込みます。この仕組みの範囲を超えたとき、あるいはファイル自体に問題があるときに、次の3種類のエラーで止まります。
いずれのエラーも対話セッションでは「Escを2回押してやり直してください」という促し方で表示され、非対話モード(-pフラグ)やスクリプトからの呼び出しでは、下の3つのメッセージがそのままエラー文字列として出力されます。CLI・Desktopアプリ・Claude Code on the webはいずれも同じCLIコアを内部で使っているため、この3エラーの挙動は3つの利用形態で共通です。
claude.aiのチャット添付(上限500MB)やProjectsのナレッジベース(上限30MB)は、Claude Codeとは別枠の仕組みで上限も別です。claude.ai側のPDF処理はClaudeのPDF読み込み・画像解析の使い方とアップロード上限にまとめています。同じ「PDFが読めない」という症状でも、どの利用形態で起きているかによって上限も対処法もまったく別物になる点は先に押さえておきます。
Claude CodeでのPDF処理はネットワーク越しのアップロードではなく、手元のファイルシステムを直接読みに行く処理です。そのため、通信環境やAPIの応答速度に問題があるときのエラーとは性質が異なり、ファイルそのものの状態(ページ数・サイズ・暗号化・破損)だけで発生・解消が決まります。ネットワークを疑って時間を使う前に、まずファイル側を確認するのが早道です。
「PDF too large」— ページ数とサイズの上限
PDF too large (max 100 pages, 20MB). Try reading the file a different way (e.g., extract text with pdftotext).Claude CodeがReadツールで扱えるPDFは、100ページかつ20MBまでです。どちらか一方でも超えると、ファイルの中身を見る前にこのエラーで止まります。研究論文の合本や契約書一式のような大きなPDFで特に起きやすい制限です。
対処は2通りあります。1つは、Claudeに「このPDFの1〜20ページだけ読んで」のようにページ範囲を指定して頼む方法です。Readツールはもともと10ページ超のPDFを分割して読む仕組みを持つため、範囲さえ指定できれば100ページの壁を回避できます。もう1つは、pdftotextのようなCLIツールでテキストを抽出し、出力先のファイルパスをClaudeに渡す方法です。
pdftotext large-report.pdf large-report.txt抽出後はlarge-report.txtのパスを伝えるだけで、100ページ・20MBの制限を受けずに内容を読み込ませられます。図表の読み取りが必要ない、文章中心の資料ではこちらが手早い方法です。
「PDF is password protected」— パスワード保護
PDF is password protected. Try using a CLI tool to extract or convert the PDF.暗号化・パスワード保護がかかったPDFは、Claude Codeのローカル処理では中身を開けません。API経由の解析ではなくファイルシステム上の変換が必要になるため、qpdfやpdftkのようなCLIツールでパスワードを解除するか、パスワードなしの版として再エクスポートしてから渡します。
qpdf --password=<パスワード> --decrypt protected.pdf unlocked.pdf社内文書管理システムから書き出したPDFに保護がかかっている場合、発行元のアプリケーションで「パスワードなしでエクスポート」を選び直すほうが、CLIでの解除より確実なことが多いです。
「The PDF file was not valid」— ファイル自体の問題
The PDF file was not valid. Try converting it to text first (e.g., pdftotext).ファイルが破損している、PDF形式に見えて実際は別形式である、生成元のツールが仕様に沿わないPDFを書き出している、といったケースで出ます。ダウンロードが途中で止まった、スキャナー出力の特殊フォーマットである、といった原因もよくあります。
まずpdftotextやpdfinfoでファイルを開けるか確認します。CLIツール側でもエラーになる場合、ファイルそのものが壊れています。開ける場合は、一度テキストやPNG画像に変換してから渡すと安定します。
エラー別の対処法早見表
| エラー | 主な原因 | 有効な対処 |
|---|---|---|
PDF too large | 主な原因100ページ超or 20MB超 | 有効な対処ページ範囲指定 / pdftotextでテキスト抽出 |
PDF is password protected | 主な原因暗号化・パスワード保護 | 有効な対処qpdf等で解除 / パスワードなしで再エクスポート |
The PDF file was not valid | 主な原因破損・非対応形式 | 有効な対処pdfinfoで検証 / テキストや画像へ変換 |
3つとも共通する回避策は「PDFをそのまま渡さず、テキストに変換してから渡す」ことです。図表の視覚的な読み取りが不要な資料であれば、最初からテキスト抽出を経由したほうがエラーに当たりにくくなります。
PDFを渡す前にできる予防策
大きめのPDFを扱うときは、まずpdfinfoでページ数とファイルサイズを確認してから読み込ませると、上限超えかどうかを実際に読ませる前に判断できます。
pdfinfo contract.pdf | grep -E "Pages|File size"100ページに近い、あるいは20MBに近いPDFは、最初から章単位で分割しておくと安全です。ベンダー契約書のように150ページを超える資料をそのまま渡すと、内容を確認する前にPDF too largeで止まってしまい、原因の切り分けに余計な往復が発生します。事前にページ数を確認する癖をつけておけば、この往復を1回に減らせます。
複数のPDFをまとめて扱うワークフローでは、CLAUDE.mdに「PDFはまずpdfinfoでサイズ確認、100ページ超はpdftotextで抽出」のような運用ルールを書いておくと、毎回同じ切り分けを繰り返さずに済みます。
よくあるつまずき
相対パスで渡して「ファイルが見つからない」と別のエラーになることがあります。Claude CodeのReadツールは絶対パスを前提に動くため、PDFのパスはpwdで確認した絶対パスか、Claudeに「このディレクトリの◯◯.pdfを読んで」と伝えて解決させる方が確実です。
チャット添付のつもりでファイルを渡してしまう混同もよくあります。Claude Code(CLI・Desktop・Web)はファイルシステム上のパスを読みに行く方式で、claude.aiのようにブラウザにドラッグ&ドロップしてアップロードする方式ではありません。Desktopアプリの見た目がclaude.aiに近いため、この違いに気づきにくいことがあります。
エラーメッセージだけを見て原因を決めつけるのも避けたい動きです。The PDF file was not validは破損だけでなく、実体がPDFでないファイル(拡張子だけ.pdfにリネームされた画像など)でも出ます。pdfinfoで開けるかどうかを先に確認すれば、無駄な変換作業を避けられます。
よくある質問
Claude Codeで読めるPDFのページ数に例外はありますか
例外はありません。100ページ・20MBはReadツールの固定上限で、プランやモデルによる違いもありません。100ページ以下でも20MBを超えていればPDF too largeになります。
スキャンした画像だけのPDFでも同じエラーになりますか
ページ数とファイルサイズの上限判定は、中身がテキストか画像かに関係なくかかります。スキャンPDFは同じページ数でもファイルサイズが大きくなりがちなので、20MBの上限に先に触れることがあります。
Files API経由でPDFを扱う場合も同じ上限ですか
いいえ。Anthropic Files APIは1リクエストあたり600ページ(コンテキストウィンドウが小さいモデルでは100ページ)、リクエスト全体で32MBという別の上限を持ちます。API実装の詳細はClaude Files APIでPDFを処理する方法にまとめています。
エラーメッセージが表示されず処理が止まって見えることがあります
非対話モードや--output-format jsonで実行している場合、エラーは標準エラー出力(stderr)に出ます。標準出力だけを見ていると気づきにくいため、stderrも合わせて確認します。
PDFの一部だけを毎回読ませたいのですが、指定方法はありますか
Claudeに直接「◯ページから◯ページまで読んで」と伝えれば、Readツールがpagesパラメータでその範囲だけを読み込みます。ファイルを事前に分割する必要はありません。
拡張子を.pdfに変えただけの画像ファイルでもエラーになりますか
なります。The PDF file was not validはPDFの構造として解釈できないときに出るため、中身が画像やテキストファイルであれば、拡張子をどう変えても弾かれます。file contract.pdfのようなコマンドで実体の形式を確認すると早く原因を絞り込めます。
20MBギリギリのPDFを何度も分割するのが手間です
章単位の分割が難しい資料であれば、pdftotextで先にテキスト化してしまう方法が手早いことが多いです。テキストファイルにはページ数・サイズの上限自体がかからないため、図表の視覚解析が不要な資料ならこちらのほうが往復が少なくて済みます。
複数のPDFを同時に渡すと、どれが原因かわかりにくいのですが
エラーメッセージ自体にファイル名は含まれないため、複数PDFを一度に渡している場合は原因の特定に手間取ります。1ファイルずつ渡し直すか、pdfinfoをディレクトリ内の全PDFに順番にかけて、ページ数・サイズ・暗号化の有無を先に一覧化しておくと切り分けが早くなります。
まとめ
Claude CodeのPDFエラーは、too large(100ページ・20MBの上限)、password protected(暗号化)、not valid(破損・非対応形式)の3種類に整理できます。いずれも一度pdftotextやpdfinfoでファイル側を確認すれば、Claude Code側の設定を疑う前に原因を絞り込めます。定期的に大きなPDFを扱うなら、事前確認をCLAUDE.mdのルールに組み込んでおくと、毎回の切り分けが省けます。