前言
PDF的數據解析是一件較困難的事情,幾乎所有商家都把PDF轉WORD功能做成付費產品。
PDF是基于PostScript子集渲染的,PostScript是一門圖靈完備的語言。而WORD需要的渲染,本質上是PDF能力的子集。大模型領域,我們的目標文件格式一般是markdown,markdown相較于WORD更加簡單,是WORD的子集。
子集向父集轉換是容易的,因為子集有的功能,父集都有。而父集向子集轉換是困難的,因為父集的眾多功能,子集并不具備。
通過元素映射的方式來實現PDF的解析,是不現實的。于是,上海人工智能實驗室的研發人員提出利用多種深度學習算法,來直接分析和識別PDF上的文字、圖片、公式、表格等,再反向合并成最終的markdown文件。
總的來說,PaddleOCR 負責文本的檢測與識別,而 TableMaster 負責表格的結構解析和內容整合,二者結合實現了對文檔圖像中表格的全面識別和理解。
MinerU涉及的模型
模型名稱 | 模型功能 | 模型詳情 |
---|---|---|
LayoutLMv3 | 布局檢測模型 | unilm/layoutlmv3 at master · microsoft/unilm (github.com) |
UniMERNet | 公式識別模型 | opendatalab/UniMERNet: UniMERNet: A Universal Network for Real-World Mathematical Expression Recognition (github.com) |
StructEqTable | 表格識別模型 | Alpha-Innovator/StructEqTable-Deploy: A High-efficiency Open-source Toolkit for Table-to-Latex Task (github.com) |
YOLO | 公式檢測模型 | ultralytics/ultralytics: Ultralytics YOLO11 🚀 (github.com) |
PaddleOCR | OCR模型 | PaddlePaddle/PaddleOCR: Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80+ languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices) (github.com) |
DocLayout-YOLO | 布局檢測模型 | opendatalab/DocLayout-YOLO: DocLayout-YOLO: Enhancing Document Layout Analysis through Diverse Synthetic Data and Global-to-Local Adaptive Perception (github.com) |
將DeepSeek V2論文輸入到MinerU中,得到下列輸出內容:
-
1.images目錄
pdf中的圖片 -
2.DeepSeek-AI 等 - 2024 - DeepSeek-V2 A Strong, Economical, and Efficient M.md
最終輸出的markdown文件 -
3.DeepSeek-AI 等 - 2024 - DeepSeek-V2 A Strong, Economical, and Efficient M_content_list.json
未知 -
4.DeepSeek-AI 等 - 2024 - DeepSeek-V2 A Strong, Economical, and Efficient M_layout.pdf
版面分析結果 -
5.DeepSeek-AI 等 - 2024 - DeepSeek-V2 A Strong, Economical, and Efficient M_middle.json
包含以下字段信息:
字段名 | 解釋 |
---|---|
pdf_info | list,每個元素都是一個dict,這個dict是每一頁pdf的解析結果,詳見下表 |
_parse_type | ocr | txt,用來標識本次解析的中間態使用的模式 |
_version_name | string, 表示本次解析使用的 magic-pdf 的版本號 |
- 6.DeepSeek-AI 等 - 2024 - DeepSeek-V2 A Strong, Economical, and Efficient M_model.json
所有元素的檢測框坐標
[{"layout_dets": [{"category_id": 1,"poly": [193,793,1462,793,1462,1354,193,1354],"score": 0.983},{"category_id": 0,"poly": [319,314,1340,314,1340,424,319,424],"score": 0.968},{"category_id": 3,"poly": [207,1410,1444,1410,1444,1976,207,1976],"score": 0.966},
-
7.DeepSeek-AI 等 - 2024 - DeepSeek-V2 A Strong, Economical, and Efficient M_origin.pdf
原始pdf文件 -
8.DeepSeek-AI 等 - 2024 - DeepSeek-V2 A Strong, Economical, and Efficient M_spans.pdf
不同元素的檢測框可視化
Miner功能
- 刪除頁眉、頁腳、腳注、頁碼等元素,確保語義連貫
- 輸出符合人類閱讀順序的文本,適用于單欄、多欄及復雜排版
- 保留原文檔的結構,包括標題、段落、列表等
- 提取圖像、圖片描述、表格、表格標題及腳注
- 自動識別并轉換文檔中的公式為LaTeX格式
- 自動識別并轉換文檔中的表格為HTML格式
- 自動檢測掃描版PDF和亂碼PDF,并啟用OCR功能
- OCR支持84種語言的檢測與識別
- 支持多種輸出格式,如多模態與NLP的Markdown、按閱讀順序排序的JSON、含有豐富信息的中間格式等
- 支持多種可視化結果,包括layout可視化、span可視化等,便于高效確認輸出效果與質檢
- 支持純CPU環境運行,并支持 GPU(CUDA)/NPU(CANN)/MPS 加速
- 兼容Windows、Linux和Mac平臺
Miner效果實測
最令人驚嘆的是公式識別,例如輸入pdf樣式如下:
輸出markdown樣式如下:
基本上沒什么問題,但是小狀況還是挺多的,例如將 R d h n h × d \mathbb{R}^{d_h n_h\times d} Rdh?nh?×d識別成了 R d h n h \ × d \mathbb{R}^{d_h n_h\backslash\ \times d} Rdh?nh?\?×d
但是,表格的識別比較差,例如,輸入pdf表格為:
輸出markdown樣式為:
每一大類(English)中的所有行內容都混在一起了。
另外,對PDF中算法欄的識別也比較差
輸入PDF:
輸出markdown:
缺少了算法欄的邊框信息,以及一些符號也不太準確。
MinerU使用
MinerU支持如下三種部署方式:
- 在線體驗
- CPU體驗
- GPU體驗
詳見MinerU/README_zh-CN.md at master · opendatalab/MinerU (github.com)
總結
MinerU盡管在表單、算法欄識別效果一般,但已經是開源項目中效果最好的一檔了。希望持續進步,繼續為開源PDF解析社區做出貢獻!!!