PaddleOCR3-0 最新開源最強高精度文檔解析神器,pdf 一秒轉換 markdown

在大模型與 RAG 技術快速發展的當下,結構化數據對於智能系統的重要性日益凸顯。將文檔圖像、PDF 等非結構化數據精準地轉換成結構化數據(如 Markdown、JSON)已成爲行業待解決的關鍵問題。

目前衆多開源方案在處理複雜文檔情形時,都會遇到文字識別能力差、閱讀順序無法正確恢復、表格識別不準、長難公式無法解析等問題。基於廣大用戶的反饋和對行業痛點的分析,飛槳團隊從文檔解析的多個模塊全棧優化,打造了新一代文檔解析利器——PP-StructureV3,即使面對複雜文檔場景,依舊遊刃有餘,爲解決大模型訓練微調的數據缺失和大模型的落地問題,提供強有力的保障。 該方案已隨着 PaddleOCR3.0 的發佈,全面開源!

PP-StructureV3 優勢

精度高: PP-StructureV3 支持多種場景、多種版式文檔圖像或 PDF 文件的高精度解析,可以將文檔圖像或者 PDF 文件無縫轉換爲帶圖像、文本、表格、閱讀順序等內容的 Markdown 文件和帶文字、段落等座標信息的 JSON 文件。PP-StructureV3 在 OmniDocBench 基準測試中領先衆多開源和閉源方案。

注:以上精度信息除 PP-StructureV3 和 MinerU-1.3.11 爲自測精度外,均來自 OmniDocBench

多項專精能力: PP-StructureV3 除了在 OmniDocBench 上的精度指標更高之外,還擁有很多其他開源文檔解析方案沒有的專精能力,如:印章識別、圖表解析、含公式 / 圖片的表格識別、豎排文本解析、中文公式、化學方程式複雜表格識別——這些能力是很多重要場景 AI 應用落地的剛需。

效果速覽

文檔解析效果速覽

在文檔解析任務中,閱讀順序恢復能力尤爲重要,飛槳團隊自研了全新的閱讀順序恢復解決方案,不僅可以應對常規文檔,也可以應對報紙、複雜佈局的雜誌、試卷等較難的文檔場景。對於複雜佈局的文檔,PP-StructureV3 的閱讀順序恢復能力遠超其他文檔解析方案。

複雜文檔閱讀順序效果速覽

此外,如前文所述,PP-StructureV3 也支持將圖表轉換爲表格,圖表中的關鍵數據的獲取不再困難。

圖表轉表效果速覽

算法介紹

PP-StructureV3 採用了一種精細化的模型組合策略,通過高效協調不同模型的輸入輸出,來實現高精度的文檔解析。首先,文檔圖像經過文檔預處理(可選),然後執行版面區域分析和文字識別。接下來,版面區域分析和文字識別的融合結果會基於其所屬的不同版面類型被分別傳送到表格識別、公式識別、圖表解析和印章識別等多個子模塊。最後,閱讀順序恢復模塊對不同版面區域的識別結果基於人類閱讀順序進行排序,生成最終的文檔解析結果——對應的 Markdown 文檔和 JSON 文件。以上各個模塊涉及的模型算法,飛槳團隊均進行了全棧自研,並對關鍵模塊做了細緻優化。

其中幾個重要模塊的核心能力升級優化點如下:

使用方式

爲了方便開發者使用 PP-StructureV3,我們提供了極簡 API 方案,可快速實現本地推理和服務化部署:

本地推理

本地推理提供了兩種方式,即 CLI 預測和 Python API 的方式,其中 CLI 預測方式如下:

# 支持傳入URL、圖片路徑、文件夾路徑、PDF文件、PDF文件夾路徑等
paddleocr pp_structurev3 -i pp_structure_v3_demo.png

Python API 預測方式如下:

from paddleocr import PPStructureV3
pipeline = PPStructureV3()
output = pipeline.predict("./pp_structure_v3_demo.png")
for res in output:
    res.print() ## 打印預測的結構化輸出
    res.save_to_json(save_path="output") ## 保存當前圖像的結構化json結果
    res.save_to_markdown(save_path="output") ## 保存當前圖像的markdown格式的結果

經過預測後,會通過save_to_json()save_to_markdown()方法將文檔圖像的結構化 JSON 結果和 Markdown 結果保存在save_path中。

服務化部署

PaddleX 提供了 PaddleOCR 的服務化部署能力,可以通過 PaddleX 快速完成 PP-StructureV3 的服務啓動。

CLI 一鍵啓動服務:

paddlex --install serving
paddlex --serve --pipeline PP-StrcutureV3

服務啓動後,客戶端通過少量代碼即可調用服務。

import base64
import requests
import pathlib
API_URL = "http://localhost:8080/layout-parsing" # 服務URL
image_path = "./pp_structure_v3_demo.png"# 對本地圖像進行Base64編碼
with open(image_path, "rb") as file:
    image_bytes = file.read()
    image_data = base64.b64encode(image_bytes).decode("ascii")
payload = {
    "file": image_data, # Base64編碼的文件內容或者文件URL
    "fileType": 1, # 文件類型,1表示圖像文件
}# 調用API
response = requests.post(API_URL, json=payload)
# 處理接口返回數據
assert response.status_code == 200
result = response.json()["result"]
print (result)

關於 PP-StrutureV3 的其他介紹,詳見 PaddleOCR 官方文檔

方案介紹:

https://paddlepaddle.github.io/PaddleOCR/latest/version3.x/algorithm/PP-StructureV3/PP-StructureV3.html

使用教程:

https://paddlepaddle.github.io/PaddleOCR/latest/version3.x/pipeline_usage/PP-StructureV3.html

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/Y01XVtQMcGibXXtRl7mERg