PDF是人們日常使用最多的跨平臺文檔。其是一種用獨立于應用程序、硬件、操作系統的方式呈現文檔的文件格式。每個PDF文件包含固定布局的平面文檔的完整描述,包括文本、字形、圖形及其他需要顯示的信息。因此,具有良好的跨平臺特性,但同時,也為抽取其內容帶來了不便。
PDF最初版本于1993發行,最新版本為2.0。
今天,我們使得Python來抽取PDF文檔中的文本與圖片。
PDF文本抽取相對容易,效果最好的是pdfminer(https://github.com/euske/pdfminer)。基本能抽取出所有文本。
pdfminer是開源的純Python編寫,支持最新至PDF 1.7版本。
pdfminer的使用比較簡單
安裝:
使用:
python pdf2txt.py -o <抽取保存的文本文件名> -t text -O <源pdf文件>
如上就實現了文本抽取,抽取的是純文本,無格式、字體等信息。
原文
抽取出的文本
pdfminer有個麻煩的地方,對于CJK編碼的PDF文檔,需要手動安裝也能正常抽取文字。
PDF圖片抽取是個比較難的問題,目前Python可以調用的比較好的庫是PyMuPDF(https://github.com/pymupdf/PyMuPDF)。PyPDF2(https://github.com/mstamy2/PyPDF2)庫也可以實現部分功能,但已于2018年停止更新。
這些庫的問題是,無法抽取出所有的圖片,同時,抽取出的圖片問題不一。
這里以 https://arxiv.org/pdf/1703.10135.pdf 文件為例。
使用PyMuPDF 代碼如下:
抽取效果如下。整篇PDF文檔,只抽取出如下的幾個圖片。
比如,第二頁的圖片就無法抽取出來。
理想狀態下,第6頁的圖片與示例應該合并一成一張圖抽取出來,但實際上是分開抽取。
好的。Python抽取PDF文字與圖片的介紹就到這里。
大家有更好的圖片抽取工具或方法,歡迎留言貢獻,謝謝