RAG 文件清理器

一個文件清理器為檢索增強生成(RAG)準備 PDF:它擷取文字,找出在每一頁重複出現的頁眉、頁腳和頁碼,標記重複段落,並讓你在文字被分塊和嵌入之前將它們移除。在下方放入一個 PDF,清理全部在你的瀏覽器中完成——檔案永遠不會離開你的裝置,任何內容都不會被上傳。為什麼版面雜訊會毒害嵌入,請讀在 RAG 之前先清理文件;檢查結構可用 PDF 無障礙檢查器,或先用文件鑑識查看檔案。

最後更新:

或者將檔案拖到此框中的任意位置。檔案在本裝置上讀取,永遠不會被上傳。限制:20 MB。

清理器移除什麼,以及為什麼重要

每一份長 PDF 都帶著版面雜訊:帶報告標題的頁眉、帶保密聲明的頁腳、在角落裡遞增的頁碼。對人類讀者來說,這些是定位參照。對嵌入模型來說,它們是以完整強度在每一頁上重複的雜訊:同一行頁眉被分塊、嵌入、儲存幾十次,稀釋了本應描述實際內容的向量,並在檢索結果中像資訊一樣冒出來。本清理器把雜訊當作一個偵測問題處理,規則簡單且可檢驗:一行較短的文字如果出現在至少百分之六十的頁面上(且至少兩頁),就會被列為移除候選,並由你決定是否去掉。沒有任何東西會被悄悄移除——每個候選都會連同它的文字、頁碼和次數一起展示,然後才由你勾選或取消。

頁碼有自己單獨的候選,因為它們從來不會字面重複:第一頁寫 1,第二頁寫 2,重複規則永遠抓不到它們,然而一個以孤立數字或一行「第 7 頁,共 40 頁」結尾的分塊,對嵌入毫無幫助,還可能讓把這行字當作事實引用回來的模型產生混亂。清理器比對常見模式——等於其所在頁碼的孤立數字,以及「N of M」和「N / M」形式——並把所有比對彙總為一個候選。第三類是重複段落:樣板免責聲明、重複的摘要,或在同一文件中共出現兩次的複製貼上章節。重複段落預設從不勾選,因為重複的段落有時是刻意的——例如必須在兩個章節中出現的警告——因此清理器只標記它們,把決定留給你;當你確實移除時,它會保留第一次出現的那一份。

擷取如何運作,以及它的近似之處

擷取是近似的,本頁面不會假裝不是這樣。清理器在本地解碼 PDF 內容流,讀取顯示文字的操作,並把每一組顯示的文字當作一行。這種模型速度快,對普通文書處理軟體和匯出工具產生的報告、手冊和論文足夠好,但它有誠實的局限:多欄版面可能會按儲存順序而不是閱讀順序輸出,合字和自訂字型編碼可能使個別字元亂碼,而掃描版 PDF——其頁面是照片而不是文字——根本不會產生任何行。發生這種情況時,工具會直言不諱,而不是編造輸出:零行的結果意味著該文件需要先做 OCR,任何清理器才能幫上忙。本第一版的雜訊偵測也不考慮位置:一行短文字是按它在多少頁上重複來判斷的,而不是按它在頁面上的位置,因此正文中真正重複的短標題也可能被列出——這正是每個候選都由你取消勾選的原因。

輸出是為 RAG 流水線的下一步而建構的。清理後的文字下載會把存留下來的行逐頁拼接,頁與頁之間以空行分隔,這樣你就可以閱讀、對比,或把它餵給你自己的分塊器。JSONL 下載更進一步:它把清理後的文字打包成大約八百個字元的分塊,盡可能在段落邊界而不是句子中間切分,並以 {"text": "..."} 的形式每行寫一個 JSON 物件——這是大多數嵌入腳本和向量庫載入器直接接受的形狀。分塊大小是一種折衷,而不是定律:八百個字元小到一個分塊通常只涵蓋一個想法,又大到這個想法仍然帶著它的上下文。配套文章更深入地解釋了大小、重疊和邊界。

隱私與範圍刻意保持狹窄。檔案在本頁面、你的裝置上解析;分析它不會發出任何網路請求,因此內部報告、合約草稿和個人文件都留在原地。第一版只接受 PDF,因為 PDF 是雜訊問題最嚴重的地方,也是瀏覽器本地解析器仍能可靠恢復文字的地方;文書處理和 HTML 來源最好在產生它們的工具中清理,或先轉換為 PDF。清理器也不判斷品質:它不會總結、改寫或糾正它保留的文字,也不會決定一份文件是否值得嵌入。它只做一件機械的工作——剝掉重複的,保留唯一的,把分塊交給你——並在每一步展示它的工作過程,讓判斷留給了解這份文件的人。

三類候選一覽

重複版面元素在至少 60% 的頁面且至少兩頁上重複的短行(最多 120 個字元):頁眉、頁腳、免責聲明和浮水印。預設勾選移除。
頁碼比對「第 N 頁,共 M 頁」「N / M」,或等於其所在頁碼的孤立數字的行,彙總為一個候選。預設勾選移除。
重複段落至少 40 個字元、在文件中共任意位置至少出現兩次的文字塊。預設從不勾選;移除時保留第一次出現。
輸出以空行分隔頁面的清理後純文字,以及在段落邊界切分的約 800 字元 JSONL 分塊,每行一個 {"text": "..."} 物件。

常見問題

我的 PDF 會被上傳到任何地方嗎?

不會。檔案在本頁面、你的裝置上開啟、解碼和清理,任何內容都不會被上傳、傳輸或儲存。頁面載入後它可以離線工作,這正是內部報告和個人文件所需要的形態。

為什麼工具在我的 PDF 中找不到文字?

幾乎可以肯定是因為該 PDF 是掃描圖像而不是文字:每一頁都是一張照片,沒有可擷取的文字操作。工具會報告零行,而不是猜測。請先對文件做 OCR,讓頁面帶上真正的文字層,然後再清理結果。

清理會誤移除真正的標題嗎?

它可能列出一行經常重複的短文字,包括重複的章節標題,因為偵測基於重複而不是位置。這就是為什麼在你確認之前沒有任何東西會被移除:每個候選都顯示它的文字、頁碼和次數,取消勾選就會保留它的每一次出現。

為什麼重複段落不預設移除?

因為重複有時正是目的所在:安全警告、法律聲明或摘要可能是刻意重複的。重複項會被連同位置一起標記,供你判斷;如果你勾選了一個,清理器會保留第一次出現,移除後面的副本。

JSONL 匯出使用什麼分塊大小?

每個分塊大約 800 個字元,按段落邊界打包,因此分塊很少在句子中間結束。這是一個合理的嵌入預設值,而不是普適的最優值——配套文章介紹了如何為你自己的語料和檢索器選擇大小與重疊。