小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

PDF 轉(zhuǎn) Markdown 神器,精準(zhǔn)且快速:支持 90 多種語言 OCR,還支持提取表格、圖片和公式!

 黃爸爸好 2024-06-05 發(fā)布于上海

Marker[1] 是一個能快速、準(zhǔn)確地將 PDF 轉(zhuǎn)換為 Markdown 文檔的工具,目前 Github 上的 Star 數(shù)是 9.4K。

近期熱文

Marker 主要特點

  • 支持多種文檔(針對書籍和科學(xué)論文進(jìn)行了優(yōu)化)
  • 支持 90 幾種語言
  • 移除頁眉/頁腳/其他人工痕跡
  • 格式化表格和代碼塊
  • 支持提取和保存圖片
  • 將大多數(shù)方程轉(zhuǎn)換為 latex
  • 可在 GPU、CPU 或 MPS 上運行

Marker 性能

圖片

上圖有關(guān) marker 和 nougat 的測試,在 A6000 都需要大于 4GB 的 VRAM。

Marker 工作原理

Marker 是一個深度學(xué)習(xí)模型管道(pipeline):

  • 提取文本,必要時進(jìn)行 OCR,支持 heuristics、surya[2]、tesseract 等 OCR 引擎
  • 檢測頁面布局并查找閱讀順序(基于 surya)
  • 清理并格式化每個區(qū)塊(heuristics、 texify[3]
  • 合并區(qū)塊并對完整文本進(jìn)行后處理(heuristics、pdf_postprocessor)

它只在必要時使用模型,從而提高了速度和準(zhǔn)確性。

Marker 局限性

PDF 是一種棘手的格式,因此 Marker 并不是完美的。以下是一些已知的限制:

  • Marker 程序不會將方程 100% 轉(zhuǎn)換為 LaTeX 格式。這是因為它必須先檢測,然后再轉(zhuǎn)換。
  • 表格的格式并不能始終保證正確 —— 文本可能位于錯誤的列中。
  • 空白和縮進(jìn)無法確保被完整保留。
  • 并非所有 lines/spans 都能正確連接。
  • 對于不需要大量 OCR 處理的 PDF,Marker 的效果較好。它對速度進(jìn)行了優(yōu)化,并使用有限的 OCR 來修復(fù)錯誤。

Marker 商業(yè)使用

Marker 允許研究和個人使用,但商業(yè)使用有一些限制。

模型的權(quán)重采用 cc-by-nc-sa-4.0 許可,但如果任何組織最近 12 個月的總收入低于 500 萬美元,且一生中籌集的風(fēng)險投資/天使投資低于 500 萬美元,作者將放棄這一限制。如果您想取消 GPL 許可要求(雙重許可)和/或在超過收入限制的情況下商業(yè)使用權(quán)重,請查看該文檔[4]

Marker 快速上手

前置條件

你需要 python 3.9+ 和 PyTorch。如果您使用的不是 Mac 或 GPU 機器,可能需要先安裝 CPU 版本的 PyTorch。

pip install marker-pdf

成功安裝完 marker-pdf 之后,你可以進(jìn)行一些相關(guān)配置:

  • 檢查 marker/settings.py 中的設(shè)置。您可以使用環(huán)境變量覆蓋任何設(shè)置。
  • 你的 torch 設(shè)備會被自動檢測到,但你可以覆蓋它。比如,TORCH_DEVICE=cuda。
    • 如果使用 GPU,請將 INFERENCE_RAM 設(shè)置為 GPU VRAM(每個 GPU)。例如,如果您有 16 GB 的 VRAM,則設(shè)置 INFERENCE_RAM=16。
    • 根據(jù)文檔類型的不同,Marker 每個任務(wù)的平均內(nèi)存使用量也會略有不同。如果你發(fā)現(xiàn)任務(wù)失敗時出現(xiàn) GPU 內(nèi)存不足的錯誤,可以通過配置 VRAM_PER_TASK 來進(jìn)行調(diào)整。
  • 默認(rèn)情況下,Marker 會使用 Surya 進(jìn)行 OCR 處理。Surya 在 CPU 上運行速度較慢,但比 tesseract 更準(zhǔn)確。如果你想要更快的 OCR,可將 OCR_ENGINE 設(shè)為 ocrmypdf。這也需要外部依賴。如果完全不需要 OCR,請將 OCR_ENGINE 設(shè)置為 “None”。

轉(zhuǎn)換單個文件

marker_single /path/to/file.pdf /path/to/output/folder --batch_multiplier 2 --max_pages 10 --langs English
  • --batch_multiplier 是指如果有額外的 VRAM,默認(rèn)批次大小乘以多少。數(shù)值越大,占用的 VRAM 越多,但處理速度越快。默認(rèn)設(shè)置為 2。默認(rèn)批次大小將占用 ~3GB 的 VRAM。
  • -max_pages 是要處理的最大頁數(shù)。省略此項可轉(zhuǎn)換整個文檔。
  • --langs 是以逗號分隔的文檔語言列表,用于 OCR。 確保 DEFAULT_LANG 設(shè)置適合您的文檔。此處列出了 OCR 支持的語言列表[5]。如果需要更多語言,只要將 OCR_ENGINE 設(shè)置為 ocrmypdf,就可以使用 Tesseract[6] 支持的任何語言。如果不需要 OCR,Marker 可以支持任何語言。

轉(zhuǎn)換多個文件

marker /path/to/input/folder /path/to/output/folder --workers 10 --max 10 --metadata_file /path/to/metadata.json --min_length 10000
  • --workers 是指一次轉(zhuǎn)換的 PDF 文件數(shù)量。默認(rèn)設(shè)置為 1,但你可以增加它來提高吞吐量,代價是 CPU/GPU 的使用量增加。如果使用 GPU,并行性不會超過 INFERENCE_RAM / VRAM_PER_TASK。
  • --max 是要轉(zhuǎn)換的 pdf 的最大數(shù)量。省略此項可轉(zhuǎn)換文件夾中的所有 pdf。
  • --min_length(最小長度)是從 pdf 中提取的最小字符數(shù),然后才會考慮對其進(jìn)行處理。如果要處理大量 PDF 文件,我建議設(shè)置此項,以避免 OCR 處理大部分是圖像的 PDF 文件。(會減慢處理速度)
  • --metadata_file 是一個可選路徑,指向一個包含 pdf 元數(shù)據(jù)的 json 文件。如果提供了該文件,將用于設(shè)置每個 pdf 的語言。如果沒有提供,將使用 DEFAULT_LANG。格式如下:
{
  'pdf1.pdf': {'languages': ['English']},
  'pdf2.pdf': {'languages': ['Spanish''Russian']},
  ...
}

您可以使用語言名稱或代碼。確切的代碼取決于 OCR 引擎。有關(guān) surya 代碼的完整列表,請參閱此處[7],有關(guān) tesseract 的完整列表,請參閱此處[8]。

在多個 GPU 上轉(zhuǎn)換多個文件

MIN_LENGTH=10000 METADATA_FILE=../pdf_meta.json NUM_DEVICES=4 NUM_WORKERS=15 marker_chunk_convert ../pdf_in ../md_out
  • METADATA_FILE 是一個可選路徑,指向一個包含 pdf 元數(shù)據(jù)的 json 文件。格式見上文。
  • NUM_DEVICES 是要使用的 GPU 數(shù)量。應(yīng)為 2 或更大。
  • NUM_WORKERS 是要在每個 GPU 上運行的并行進(jìn)程數(shù)量。超過 INFERENCE_RAM / VRAM_PER_TASK后,每 GPU 并行性將不會增加。
  • MIN_LENGTH 是在考慮對 pdf 進(jìn)行處理之前需要從 pdf 中提取的最小字符數(shù)。如果要處理大量 PDF 文件,我建議設(shè)置此值,以避免 OCR 處理大部分是圖像的 PDF 文件。(這會減慢處理速度)

請注意,上述 env 變量是針對本腳本的,不能在 local.env 中設(shè)置。

Marker 故障排除

如果出現(xiàn)與預(yù)期不符的情況,你可以嘗試以下設(shè)置:

  • OCR_ALL_PAGES - 設(shè)置為 “true ”可強制對所有頁面進(jìn)行 OCR。如果默認(rèn)情況下無法正確識別表格布局,或者出現(xiàn)亂碼文本,這將非常有用。
  • TORCH_DEVICE - 設(shè)置此項可強制 Marker 使用指定的 torch 設(shè)備進(jìn)行推理。
  • OCR_ENGINE - 可以設(shè)置為 surya 或 ocrmypdf。
  • DEBUG - 設(shè)置為 “True” 可在轉(zhuǎn)換多個 PDF 文件時顯示日志。
  • 確認(rèn)語言設(shè)置是否正確,或是否傳入了元數(shù)據(jù)(metadata)文件。
  • 如果出現(xiàn)內(nèi)存不足的錯誤,請減少 worker 數(shù)量(增加 VRAM_PER_TASK 設(shè)置)。也可以嘗試將長 PDF 文件分割成多個文件。

一般來說,如果輸出結(jié)果與預(yù)期不符,嘗試對 PDF 進(jìn)行 OCR 是很好的第一步。并非所有的 PDF 都嵌入了良好的 text/bboxes。

https://github.com/VikParuchuri/marker

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多