大量PDFから文字化けしているものを見つける3つのAIアプローチ比較

大量PDFの文字化け問題にぶつかった話

大量PDFの文字化け問題にぶつかった話

シチュエーション:大量PDFの文字化け問題

DifyにPDFをどんどん突っ込んでナレッジ化していたら、「見た目は日本語なのに、AIに読ませると文字化けしてしまうPDF」が混ざっていることに気づきました。

画面で開くとちゃんと読めるのに、次のような挙動をするPDFです。

  • コピー&ペーストすると謎の記号だらけ
  • Difyにアップすると、ベクトル化の時点で文字化けして学習されない

という、やっかいなタイプのPDFです。

手元には約1000ファイル。1つずつ開いて確認するのは、現実的ではありません。そこで「AIに手伝ってもらって、怪しそうなファイルだけふるいにかけたい」という発想になりました。

ここで登場するのが、図解にした3つのアプローチです。

大量PDFの文字化け問題にぶつかった話

パターン① ChatGPTにコードを書いてもらい、自分の環境で回す

1つ目は、ChatGPTにPythonスクリプトを書いてもらい、自分のPCで実行するやり方です。

  • 使うのは「ChatGPTアプリ(またはWeb)」と、自分のPCに入っているPython環境
  • 「フォルダ内のPDFを全部チェックして、文字化けっぽいものだけ教えて」と要件を伝えると、ChatGPTがスクリプトを書いてくれる
  • そのコードをローカルで実行すると、一気に1000ファイルを走査してくれる

この方法の特徴は、次のような点です。

  • 実行はあくまで自分の環境なので、ChatGPT側のトークン上限や制約を気にしなくていい
  • 一度スクリプトができれば、何度でも再利用できる
  • 逆に、Pythonやコマンドライン環境にある程度慣れている人向け

今回も、ほぼ日本語のPDFばかりだったので、このアプローチで一気に走査した結果、1000本のうち「怪しい」と判定されたのは5本だけ。

あとはその5本だけ目視で確認して、無事に仕分けを終えることができました。

パターン② Claude Codeにコードを書かせて、そのまま実行してもらう

2つ目は、Claude Codeのようなエージェント型LLMに「コードを書いて・実行までやってもらう」パターンです。

ここでは、次のような要件を投げます。

  • 「フォルダ内のPDFをチェックして、文字化けの可能性があるファイルだけリストアップして」
  • 「結果は画面とテキストファイルの両方に出力して」

すると、Claude Codeが次のようなことをやってくれます。

  • Pythonコードを書く
  • 必要なライブラリをインストールする
  • ターミナルで実行する

この方法の特徴は、

  • 自分で環境構築をしなくても、Claude Code側が実行環境を用意してくれる
  • 大量のPDFを処理したいとき、「AIにコードを書かせる+自動実行」の組み合わせが強い
  • ただし、その過程でいろいろなライブラリが自動でインストールされるので、「自分のPCの環境をきれいに保ちたい人」はその点を意識しておいた方がいい

「自前でPythonを触る自信はないけれど、大量ファイルを自動処理したい」という人には、この②のスタイルが現実的な落としどころになります。

パターン③ Claude Codeにプログラムを書かせず、PDFをそのまま読ませる

3つ目は、Claude CodeにPDFを直接読ませて、「文字化けしていそうかどうか」を評価してもらうやり方です。

  • PDFを何本か添付して、「この中に文字化けしていそうなファイルはある?」と聞くだけなので、
    • プログラムを書かなくてよい
    • 実行環境もいらない
  • 数本〜数十本程度なら、この方法が一番手軽です

一方で、Claudeはトークン制&コンテキスト上限ありなので、

  • 1000本のPDFを全部コンテキストに載せていくのは、ほぼ不可能
  • 多数のファイルを何度も読み直させようとすると、トークン上限にすぐ近づく
  • その都度読み捨てになるので、「一括チェックツール」としての再利用性は低い

つまり、③は次のような用途には向いていますが、大量のPDFを本気でふるいにかける用途にはあまり向かない方法です。

  • 少数のPDFをざっくり確認する
  • 「文字化けPDFとはどんな見え方になるのか」をAIと一緒に観察して、感覚をつかむ

3つを比べて見えること

この3パターンを並べてみると、ざっくりこう整理できます。

  • ① ChatGPT+自前環境
    • Pythonや環境構築が得意な人向け
    • 自分のPCで完結し、再利用性が高い
  • ② Claude Codeでコード+実行
    • 環境構築をAIに任せたい人向け
    • 大量ファイルを扱うなら、③よりずっと現実的
  • ③ Claude Codeが直接読む
    • コードを書きたくない人向け
    • 少数のPDFを確認する用途には便利だが、トークン上限があるので大量処理には不向き

同じ「AIに助けてもらう」でも、

  • モデルに全部読ませるのか
  • モデルに道具(スクリプト)を作ってもらって、自分の環境で回すのか

で、向き・不向きがかなり変わってきます。

今回のように「1000ファイルから文字化け候補だけを抜き出したい」というシチュエーションでは、図解にした3パターンのうち、①か②のように「コードを介してまとめて処理する」やり方が、現実的で安心な選択肢になると感じました。

Share the Post: