python抽取pdf中內容

這兩天一直在windows上做用python(版本是3.6)抽取pdf中內容的東西,主要就是從pdf中提取出裏面的字體和表格內容。嘗試了好些個庫,現在算是找到比較符合我需求(比較好用)的pdf解析的了。在這個過程中,用了以下幾個庫:

  1. PDFminer

    1. PDFminer算是一個還算不錯的吧,安裝直接用pip安裝就行。如下:

      pip install pdfminer3k

      它這個對pdf中內容做了好些個對象,用這些對象來存儲不同的信息,比如表格有LTFigure對象存儲、文本有LTTextBoxHorizontal對象來存儲。對於文本的提取,基本上都是通過畫框提取的,所以提取出的text都是一行一行返回的。這樣的後果就是說不清明明是一句話,卻被分成兩行或三行顯示。比如我現在做的,對行、句子比較敏感,不能將所有的行連在一起,所以在提取出結果後,還需要對結果進行處理,以達到我們的目的。

    2. 看它說明應該是可以提取出裏面表格的,但無論在哪也沒找到他這個表格要怎麼操作,怎麼把裏面內容拿出來,所以就沒有用它,轉而去尋找其它的工具。

  2. tabula

    1. 在網上看大夥對這個都還挺推崇的,是專門用來提取pdf中表格的一個工具庫。安裝的話,也是直接使用pip即可,如下:

      pip install tabula-py

      因爲它是依賴於java的,所以要是電腦上沒有java環境的話,需要配置一下,將java的所在的安裝目錄加到環境變量PATH中。

    2. 但是,怎麼說呢,不知道我使用的有問題還是怎麼樣,表格中幾個格合併成的單元格讀取的時候,會出問題。

  3. pdfplumber

    1. 這個是我現在用的,個人覺得還是比較好用的。對於pdf中文本的抽取,原理還有效果跟PDFminer差不多。對於某一頁中文本讀取的話,直接調用pdfplumber.extract_text()就可以了。對於表格的話,也是直接調用extract_tables()就可以找到該頁中所有的表格中的內容,並且可以直接轉換成padas中Datagram的形式,就我現在測試的來看,結果基本沒有差錯。表格提取中也可以自己設置一些參數什麼的,比如設置表格的分割線是什麼類型什麼的,很是方便。表格提取的問題跟文本的相似,要是一個表格在兩頁或更多頁的話,他會把這一個表格讀成多個,所以需要我們在得到結果後,在對結果處理,把表格連接起來。

    2. 安裝的話,相比起來稍微麻煩點,需要先安裝兩個軟件:ImageMagic和Ghstscript。

      1. ImageMagic可以從下載鏈接下載,16位的更精確些,但消耗的計算機資源也相對大一些,8位的差一些,可以自己選擇,但是一定要下載的是6.X的版本。

      2. Ghostscript可以從下載鏈接下載,無論自己電腦是32還是64位的,都下載安裝32位的

      3. 上面兩個安裝結束後,就可以直接通過pip安裝pdfplumber了。

        pip install pdfplumber

         

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章