Magic-PDF:端到端PDF文件解析神器 構建高質量RAG必備!

深度学习机器發表於2024-07-31

專案結構

流程解析

預處理的作用是判斷文件內容是否需要進行OCR識別,如果是普通可編輯的PDF文件,則使用PyMuPDF庫提取元資訊。

模型層除了常規的OCR、版面結構分析外,還有公式檢測模型,可提取公式內容,用於後續把公式轉化為Latex格式。但是目前暫無表格內容識別,官方預計1個月之內會放出。

管線層主要是把上面模型的結果進行加工處理。比如把公式轉化為Latex格式、圖表儲存起來成為圖片、把文字框進行排序和合並以及過濾掉無用的資訊(頁首、頁尾等)。

輸出層其實就是結果資料夾中的內容。結果資料夾中有layout.pdf、span.pdf、xx_middle.json、xx_model.json、xx_content_list.json、xx.md、images資料夾。

  • layout.pdf 可以看到 版面結構的識別結果


  • span.pdf 可以看到具體每個文字框的內容


  • xx_middle.json 是用OCR或者PDF庫解析出的文件元資訊,包含文字塊型別、內容和座標。
  • xx_model.json 是版面分析結果的內容,包含文字塊的型別、座標和置信度。
  • xx_content_list.json 中是文件的型別和具體內容,圖表則用img_path指定存放的圖片的路徑。

實踐指南

建立一個python環境,建議python3.10以上

conda create -n MinerU python=3.10
conda activate MinerU

接著安裝magic-pdfdetectron2這個包

pip install magic-pdf[full-cpu]
pip install detectron2 --extra-index-url https://myhloli.github.io/wheels/
magic-pdf --version

注意檢視版本是否在0.6.x以上,否則會有問題。英特爾晶片的Mac電腦由於某些庫的依賴原因,只能到0.5.x的版本。對於M系列的晶片,經過實測發現不支援mps加速,還是隻能使用CPU。

接著下載模型權重:模型地址
接著把該倉庫中的magic-pdf.template.json檔案複製到本地,修改models-dir為下載到本地的模型路徑。

{
  "models-dir": "/tmp/models"
}

需要注意的是這個路徑是絕對路徑

總結

優點

  • 比較準確。從上面的圖可以看出,無論是可編輯的PDF還是掃描版的PDF,都能非常好的區分出版面中不同型別的部分,而且最終的結果是以Markdown的格式儲存的,可以很容易把不同章節、不同自然段按需進行切分。

缺點

  • 硬體支援不夠完善,目前存在很多不相容的情況。M系列晶片暫時無法解決Bug,GPU未測過是否存在其他問題。而用CPU實在是太慢了,10幾頁的PDF就需要處理約5分鐘。
  • 版面結構進行排序和組合貌似用的全是自定義的規則函式,不太方便開發者進行復用或者微調。
  • 表格內容暫時無法識別。目前只能把表格部分提取為圖片儲存起來。

相關文章