專案結構
流程解析
預處理的作用是判斷文件內容是否需要進行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-pdf
和detectron2
這個包
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分鐘。
- 版面結構進行排序和組合貌似用的全是自定義的規則函式,不太方便開發者進行復用或者微調。
- 表格內容暫時無法識別。目前只能把表格部分提取為圖片儲存起來。