|
現(xiàn)在LLM(大型語言模型)應用的普遍使用和落地,Markdown格式的文檔是各種LLM和RAG(檢索增強生成)偏愛,主要體現(xiàn)在以下兩個方面: 不同于Markdown,PDF格式無論在日常辦公處理,還是在大模型、RAG場景處理下,都不太受“歡迎”。所以,很多時候,我們需要將PDF先做Markdown格式轉換后,再在RAG或者大模型中使用。所以今天給大家介紹的就是一個能夠將PDF格式文檔快速高精度的轉成Markdown格式的工具-Marker 一個開源、先進的PDF轉換工具,它利用深度學習技術將PDF文件高保真地轉換成Markdown格式。能夠處理多種語言,自動去除頁眉頁腳等非內(nèi)容元素,并支持表格、代碼塊和圖像的格式化。Marker在保持原有文檔結構的同時,提供了快速準確的轉換效果。 
?? 項目信息 #Github地址https://github.com/VikParuchuri/marker#項目官網(wǎng)地址https://www.datalab.to/marker

??功能特性多格式支持:能夠將PDF文件轉換為Markdown格式,同時支持書籍、科學論文等多種文檔類型。 全語言支持:不限制語言,可以處理所有語言的文檔。 自動化清理:自動去除PDF中的頁眉、頁腳和其他非內(nèi)容元素,提高Markdown輸出的清潔度。 表格和代碼格式化:能夠識別并格式化PDF中的表格和代碼塊,保持原有結構。 圖像提取:在轉換過程中,能夠提取PDF中的圖像,并將它們保存為Markdown支持的格式。 公式轉換:將PDF中的大多數(shù)數(shù)學方程轉換為LaTeX格式,便于在Markdown中展示。 硬件兼容性:支持在GPU、CPU或MPS(Metal Performance Shaders)上運行,以適應不同用戶的硬件環(huán)境。 性能優(yōu)化:僅在必要時使用深度學習模型,以提高轉換速度并優(yōu)化準確率。 API服務:提供托管API服務,支持PDF、Word文檔和PowerPoint的轉換。
?? 處理過程
文本提?。?/strong>Marker首先使用OCR技術提取PDF文件中的文本。如果PDF文件包含圖像,將使用Tesseract或SURYA等OCR工具進行文本識別。 頁面布局檢測:使用SURYA等深度學習模型來檢測頁面布局和確定閱讀順序。這有助于Marker理解文檔的結構,例如區(qū)分標題、正文、表格等。 內(nèi)容清洗與格式化:通過一系列啟發(fā)式規(guī)則和深度學習模型(如texify)對提取的文本進行清洗和格式化。這包括去除不需要的元素、格式化文本塊、處理表格和代碼塊等。 表格和代碼塊處理:Marker能夠識別PDF中的表格并將其轉換為Markdown格式的表格。同時,它也能識別和格式化代碼塊。 圖像提取與保存:Marker會提取PDF中的圖像,并將它們保存為與Markdown兼容的格式。 公式轉換:Marker將PDF中的數(shù)學公式轉換為LaTeX格式,以便于在Markdown中展示。 組合與后處理:在完成上述步驟后,Marker將各個部分組合起來,并進行后處理,以確保最終的Markdown文件格式正確、整潔。
一、環(huán)境要求 需要 Python 3.9+ 和 PyTorch。如果沒有CPU,需要先安裝 CPU 版本的 torch。 pip3 install torch torchvision torchaudio
二、安裝 Marker 可選安裝:如果想使用可選的ocrmypdfOCR 后端,需要安裝OCRMyPDF。 三、配置(可選,默認也可) 設置環(huán)境變量:可以在marker/settings.py中檢查和配置設置,也可以使用環(huán)境變量來覆蓋設置。 自動檢測設備:marker會自動檢查部署的服務器,但是可以覆蓋此設置。例如,TORCH_DEVICE=cuda。 設置 OCR 引擎:默認情況下,Marker 使用 suryaOCR。如果想要更快的 OCR,可以設置OCR_ENGINE為ocrmypdf。如果不需要 OCR,可以設置OCR_ENGINE為None。
四、使用 marker_single /path/to/file.pdf /path/to/output/folder --batch_multiplier 2 --max_pages 10 --langs English
--batch_multiplier是如果有額外的 VRAM,默認批處理大小要乘以的數(shù)值。數(shù)字越大,占用的 VRAM 越多,但處理速度越快。默認設置為 2。默認批處理大小將占用約 3GB 的 VRAM。
--max_pages是要處理的最大頁數(shù)。忽略此項可轉換整個文檔。
--langs是文檔中用于 OCR 的語言的逗號分隔列表確保DEFAULT_LANG設置適合文檔。OCR 支持的語言列表見下方鏈接。如果需要 OCR,標記可以使用任何語言。
#支持的語言連接說明https://github.com/VikParuchuri/surya/blob/master/surya/languages.py
marker /path/to/input/folder /path/to/output/folder --workers 10 --max 10 --metadata_file /path/to/metadata.json --min_length 10000
--workers是一次要轉換的 PDF 數(shù)量。默認情況下,此值設置為 1,但可以增加此值以增加并發(fā),但代價是增加 CPU/GPU 使用率。
--max是要轉換的 PDF 的最大數(shù)量。省略此項可轉換文件夾中的所有 PDF。
--min_length是需要從 PDF 中提取的最少字符數(shù),然后才進行處理。如果要處理大量 PDF,建議設置此項,以避免對大部分是圖像的 PDF 進行 OCR。
--metadata_file是存放有關 PDF元數(shù)據(jù)的JSON文件的可選路徑。如果沒有使用默認即可。
本文部署Marker的機器為Ubuntu操作系統(tǒng),4C8G配置(設置--batch_multiplier為1),無GPU。測試了一個60頁的PDF文檔。整體轉換時間花費了15分鐘左右。 

基本可見以下幾點轉換后的效果: 提取后的Markdown文件夾包含了PDF文件中的圖片,轉換后的json文件,md文件: 
綜上所述,Marker確實是一個功能強大的PDF到Markdown轉換工具,它不僅能夠精確地識別表格、進行方程式的OCR,還能夠去除PDF中的頁眉頁腳、水印等不必要的元素,并且支持在GPU、CPU或MPS上運行,處理速度和效率也很不錯。如果正好你也有這方面的需求化,不妨試試吧!
|