好文分享 — PDF Hell and Practical RAG Applications
“PDF Hell and Practical RAG Applications” 1 文提到在做 RAG 應用時,要從真實世界的 PDF 檔擷取資料有多麼地獄,你可以在文中看到各種格式以及它多麽地獄,例如 2 columns 的論文、貸款表單、浮水印、背景圖片、使用貝茲曲線顯示文字、文字混圖片等等,光想就覺得頭痛了⋯⋯。
一切的原因在於 PDF 不是為了讓程式可以輕鬆/正確爬梳而設計,而是為了能夠在各種裝置都能夠正確顯示排版、內容甚至列印而設計。
所以 PDF 格式充滿各種神奇結構,也沒有像 HTML 有標準的 tag 可以遵循,這很可能造成擷取出來的資料會失去次序,即使他們在視覺上是彼此相鄰的 2 個結構,這也導致 PDF 資料擷取的功能如果沒有做好,很可能會造成 RAG 應用無法正常運作,例如擷取不到正確資料導致 RAG 應用胡說八道。
這些種種問題,使得擷取 PDF 內的資料可能得混搭文字識別(OCR, Optical Character Recognition)或者機器學習等多種方法。
該文也提供幾個不錯的 Python PDF 套件可以利用,不過每個都有各自的優缺點:
文字識別的部分則可以使用(可以 local 運作的工具,不過對硬體也可能有相應要求):
或者使用 Azure Document Intelligence, Google Document AI 以及 Amazon Textract 等雲端服務,不過這些服務雖然效率好、準確率相對高,但是也有可能會侵犯使用者隱私!
如果你想要或打造 PDF 相關的 RAG 應用的話,這篇文章所羅列的資源,應該會對你很有參考價值。(或者荷包許可的情況下,選擇付費使用 Unstract 所打造的 LLMWhisperer 解決相關問題也是 1 種方案)