RAG向けドキュメントクリーナー
ドキュメントクリーナーは、検索拡張生成(RAG)のためにPDFを準備します:テキストを抽出し、すべてのページに繰り返されるヘッダー、フッター、ページ番号を見つけ、重複段落に印を付け、テキストがチャンク化され埋め込まれる前にそれらを取り除けるようにします。下にPDFを置くと、クリーニングは完全にあなたのブラウザの中で行われます——ファイルがあなたのデバイスを離れることは決してなく、何もアップロードされません。家具が埋め込みをなぜ毒するのかはRAGの前にドキュメントをクリーニングするを読み、構造はPDFアクセシビリティチェッカーで確認し、ファイルはまずドキュメントフォレンジクスで点検してください。
最終更新:
またはファイルをこのボックスのどこにでもドロップしてください。ファイルはこのデバイス上で読み取られ、アップロードされることは決してありません。制限:20 MB。
ドキュメントを一目で
取り除くものを選ぶ
チェックした項目はクリーニング済み出力から取り除かれます。プレビューはチェックの変更に合わせて更新されます。
クリーニング済みプレビューとダウンロード
クリーナーが取り除くものと、それが重要な理由
長いPDFはすべて家具を抱えています:レポートのタイトルを持つヘッダー、機密保持の注意書きを持つフッター、隅で増えていくページ番号。人間の読者にとってその家具は方向感覚です。埋め込みモデルにとっては、すべてのページで全力で繰り返されるノイズです。同じヘッダー行が何十回もチャンク化され、埋め込まれ、保存され、本来実際の内容を表すべきベクトルを薄め、情報であるかのように検索結果に現れます。このクリーナーは家具を、単純で検証可能な規則による検出問題として扱います:ページの少なくとも60パーセント(かつ少なくとも2ページ)に現れる短い行は除去候補として一覧に載り、それを取り除くかどうかはあなたが決めます。何も黙って取り除かれることはありません——すべての候補は、そのテキスト、ページ、回数とともに表示されてから、あなたがチェックを付けたり外したりします。
ページ番号には独自の候補があります。なぜなら、それらは決して文字どおりには繰り返されないからです:1ページ目は1、2ページ目は2と書くため、繰り返しの規則では決して捕まえられません。それでも、孤立した数字や「40ページ中の7ページ」という行で終わるチャンクは、埋め込みに何も教えず、それを事実として引用し返すモデルを混乱させることがあります。クリーナーは一般的なパターン——それが載っているページと等しい孤立した数字と、「N of M」と「N / M」の形——に一致させ、すべての一致を一つの候補にまとめます。重複段落は第三のクラスです:繰り返される免責事項、重複した要約、一つのドキュメントに二度現れるコピーされたセクション。重複は決して既定でチェックされません。なぜなら、繰り返される段落は時には意図的だからです——例えば二つの章に現れなければならない警告——そのためクリーナーはそれらに印を付けて判断をあなたに委ね、取り除く際には最初の出現を残します。
抽出の仕組みと、その近似である場所
抽出は近似であり、このページはそうでないふりをしません。クリーナーはPDFのコンテンツストリームをローカルでデコードし、テキスト表示操作を読み、表示されたテキストの各まとまりを一行として扱います。このモデルは高速で、通常のワープロやエクスポーターが作ったレポート、マニュアル、論文には十分ですが、正直な限界があります:複数段組みのレイアウトは読み順ではなく保存順で出てくることがあり、合字やカスタムフォント符号化は個々の文字を文字化けさせることがあり、スキャンされたPDF——そのページはテキストではなく写真です——は一行も生みません。そうなったとき、ツールは結果を発明するのではなく、そのことをはっきりと言います:行がゼロの結果は、そのドキュメントが、どんなクリーナーでも手助けできる前にOCRを必要とすることを意味します。この初版の家具検出は位置も考慮しません:短い行は、ページ上のどこにあるかではなく、何ページに繰り返されるかで判断されるため、本文の中で本当に繰り返される短い見出しが一覧に載ることがあります——まさにそのため、すべての候補はあなたがチェックを外すためのものです。
出力はRAGパイプラインの次のステップのために作られています。クリーニング済みテキストのダウンロードは、生き残った行をページごとに、ページ間には空行を入れて結合するので、読んだり、比較したり、自分自身のスプリッターに渡したりできます。JSONLダウンロードはさらに一歩進みます:クリーニング済みテキストを約800文字のチャンクに詰め、できる限り文の途中ではなく段落の境界で分割し、{"text": "..."}の形で一行に一つのJSONオブジェクトを書きます——ほとんどの埋め込みスクリプトとベクトルストアローダーが直接受け入れる形です。チャンクサイズは法律ではなく妥協です:800文字は、チャンクが普通一つの考えをカバーするのに十分小さく、その考えが文脈を保持するのに十分大きい。コンパニオン記事は、サイズ、重なり、境界をより深く説明しています。
プライバシーと範囲は意図的に狭く保たれています。ファイルはこのページで、あなたのデバイス上で解析されます;それを分析してもネットワークリクエストは行われないため、内部レポート、契約書の草案、個人文書はあるべき場所にとどまります。初版はPDFだけを受け入れます。なぜなら、家具の問題が最も深刻なのがPDFであり、ブラウザ内解析器がまだ確実にテキストを回復できるのもPDFだからです;ワープロやHTMLのソースは、それらを作ったツールの中でクリーニングするか、先にPDFへ変換する方が適切です。クリーナーは品質も判断しません:残すテキストを要約、書き直し、修正することはなく、ドキュメントが埋め込みに値するかどうかも決めません。それは一つの機械的な仕事——繰り返されるものを剥ぎ取り、唯一のものを残し、チャンクをあなたに渡す——を行い、すべてのステップでその作業を見せるので、判断はドキュメントを知っている人の手に残ります。
三種類の候補を一目で
| 繰り返される家具 | 少なくとも60%のページかつ少なくとも2ページに繰り返される短い行(最大120文字):ヘッダー、フッター、免責事項、透かし。既定で除去にチェックが付きます。 |
| ページ番号 | 「Nページ目/全Mページ」「N / M」、またはそれが載るページと等しい孤立した数字に一致する行を、一つの候補にまとめたもの。既定で除去にチェックが付きます。 |
| 重複段落 | ドキュメントのどこかに少なくとも二度現れる、少なくとも40文字のブロック。既定でチェックされることは決してありません;除去では最初の出現が残ります。 |
| 出力 | ページ間を空行で区切ったクリーニング済みプレーンテキストと、段落境界で分割した約800文字のJSONLチャンク(一行に{"text": "..."}オブジェクト一つ)。 |
よくある質問
私のPDFはどこかにアップロードされますか?
いいえ。ファイルはこのページで、あなたのデバイス上で開かれ、デコードされ、クリーニングされ、何もアップロード、送信、保存されません。ページが読み込まれればオフラインで動作します。これは内部レポートや個人文書にふさわしい形です。
なぜツールは私のPDFからテキストを見つけられなかったのですか?
ほぼ確実に、そのPDFがテキストではなくスキャン画像だからです:各ページは写真であり、抽出するテキスト操作がありません。ツールは推測する代わりに行ゼロを報告します。まずドキュメントにOCRをかけてページに本物のテキスト層を持たせ、それから結果をクリーニングしてください。
クリーニングが本物の見出しを誤って取り除くことはありますか?
検出は位置ではなく繰り返しに基づくため、繰り返されるセクション見出しを含め、頻繁に繰り返される短い行を一覧に載せることがあります。だからこそ、あなたが確認するまで何も取り除かれません:すべての候補はそのテキスト、ページ、回数を表示し、チェックを外せばすべての出現が残ります。
なぜ重複段落は既定で取り除かれないのですか?
繰り返しが時には目的そのものだからです:安全警告、法的通知、要約は意図的に繰り返されることがあります。重複にはその場所とともに印が付けられ、あなたが判断できます;一つにチェックを付けると、クリーナーは最初の出現を残し、後のコピーを取り除きます。
JSONLエクスポートはどのチャンクサイズを使いますか?
1チャンクあたり約800文字で、段落境界で詰められるため、チャンクが文の途中で終わることはまれです。これは埋め込みの賢明な既定値であり、普遍的な最適値ではありません——コンパニオン記事は、あなた自身のコーパスとリトリーバーのためにサイズと重なりを選ぶ方法を扱っています。