pd3f-core
實驗性的,謹慎使用。
pd3f-core
是一個 Python 包,用於使用語言模型從PDF中重建原始連續文字。 pd3f-core
假定您的 PDF 是基於文字的或已經是 OCRd。 pd3f-core
是 pd3f 的核心:一個完整的基於 Docker 的文本提取管道(包括 OCR)。
pd3f-core
首先使用 Parsr 將 PDF 分成行和段落。然後,它使用 Python 套件 dehyphen 以最可能的方式重建段落。該機率是透過使用 Flair 基於字元的語言模型計算困惑度得出的。不必要的連字符被刪除,空格或換行符被保留或刪除,取決於周圍的單字。
它主要是為德語開發的,但也應該適用於其他語言。該項目仍處於早期階段。預計粗糙的邊緣和快速的變化。
pd3f-core的API文件:https://pd3f.github.io/pd3f-core/index.html
pd3f 的文件(the ):https://pd3f.com/docs/
檢查是否可以透過刪除連字符(“-”)來連接兩行。
連接行時,決定要新增簡單空格 (' ') 還是換行 ('n')。
檢查一頁的最後一段和下一頁的第一段是否可以連接。
為了連接段落(和反向分頁符號),請偵測腳註並將其轉換為尾註。目前,腳註被拉到文件的末尾。
如果所有頁面的頁首或頁尾都相同,則僅顯示一次。頁首被拉到文檔的開頭,頁腳被拉到文檔的末尾。使用一些基於頁腳相似性的啟發式方法。 (文本的杰卡德距離,並比較重疊形狀)
pip install pd3f
或者
poetry add pd3f
啟動本機 Parsr 實例:
docker-compose up
(您也可以使用隧道連線遠端 Parsr 實例(腳本)或選擇遠端位址。)
from pd3f import extract
text , tables = extract ( file_path , tables = False , experimental = False , force_gpu = False , lang = "multi" , fast = False , parsr_location = "localhost:3001" )
文件中參數的說明:https://pd3f.github.io/pd3f-core/export.html#pd3f.export.extract
使用 CUDA 可以加快 Flair 的評估速度。但你需要一個(昂貴的)GPU。您需要使用 CUDA 設定 GPU。這是 Ubuntu 18.04 的指南
conda install pytorch torchvision cudatoolkit=10.2 -c pytorch
(範例)pd3f-core
: poetry add pd3f
Poetry 意識到它是在 conda 虛擬環境中運行的,因此它不會創建新的環境。由於設定 CUDA 很困難,因此請使用最簡單的方法(使用 conda)來安裝它。
pd3f-core
的核心是 Parsr 的 JSON 輸出。關於如何以及為何選擇某些事物的一些評論。 Parsr 關於不同模組的文檔
Parsr 有幾個模組可以將段落分類為某些類型。他們提供清單檢測和標題檢測。根據我的經驗,兩者的準確性都太低,所以我們現在不使用它。這也意味著所有提取的(輸出)文字都是平面的(沒有標題、不同的格式等)。
我們啟用繪圖 + 影像偵測,因為我們可能需要了解哪一段在哪一段後面。當決定是否加入段落時,這可能會有所幫助。但當啟動fast
設定時它會被丟棄。
JSON 輸出中有一個欄pageNumber
。這來自頁面檢測模組。所以pageNumber
是從每個頁面的頁首/頁尾匯出的。所以它可能與頁數組中的索引不同。不要在 JSON 輸出中繼pageNumber
。
words-to-line-new
就是這樣使用的。如果不使用的話,不會有錯誤,但精度會降低。
" words-to-line-new " ,
[
" reading-order-detection " ,
不要用 Parsr 進行 OCR,因為結果比 OCRmyPDF 差(因為後者使用影像預處理)。
安裝和使用詩歌。
Affero 通用公共授權 3.0