python处理pdf文件
簡介
對pdf文件的常見操作需求包括讀取pdf中的文字圖表,新建或截取pdf,pdf與其他格式的轉換等。通過代碼可更靈活的實現各種功能需求。在眾多可處理pdf的包中選擇PyMuPDF進行介紹。PyMuPDF是MuPDF的python接口,可處理 的文件格式后綴包括 pdf,xps,oxps,cbz,fb2, epub。另外也可處理10余種常見圖片格式,包括:png,jpg,bmp,tiff等。
具體功能
- 搜索文本
- 提取文本和圖片
- 轉換格式為 html,xml,json,txt
- 結合Tesseract使用,可對圖片進行OCR 文本提取
- 可作為圖片轉換器,將讀入的文件轉換為PNG,PNM,PAM或 Photoshop文件,同時也可以與PIL/Pillow結合使用進行圖片操作
- 對于pdf文件,可進行文件和頁面的創建,合并和拆分。同時頁面可進行插入,刪除,替換或重新排列等操作
- 可將pdf重新格式化,以使其能夠雙面打印,色調分離,添加logo或水印等
- 支持加密,解密,權限設置等密碼保護措施
安裝
pip install pymupdf 或 PyMuPDF
由于歷史原因,導入PyMuPDF 包的語句為:
import fitz
常用操作
以下以 1.18.17 版本為例介紹。
讀取pdf文件
可直接打開支持的文件類型,輸入文件名即可。也可以打開已經由其他工具讀取的文件流。打開后,可對其中的頁面進行操作。
提取pdf中全部文本或搜索文本
遍歷所有頁面,獲取文本。搜索文本只能在單個頁面上進行,可通過遍歷獲取全部結果。
-
讀取各種格式的圖片
可讀取普通格式,二進制文件流或base64格式的圖片。
-
提取頁面中的圖片
首先需要獲取xref (cross-reference number)。xref是交叉引用編號,這是pdf中對象的整數唯一標識。每個pdf都存在一個交叉引用表(物理上可能有幾個單獨的部分組成)。它存儲每個對象的相對位置,以便快速查找。其中item 0是保留項,不會以任何方式使用。 許多PyMuPDF類有一個xref屬性(非PDF為0),可以獲得pdf中對象的總數 :Document.xref_length() - 1 。有兩種方式獲取xref,得到xref后又有兩種方式提取圖片,如下:
其中Page.get_images()的返回內容為包含多個信息的list,內容為(xref, smask, width, height, bpc, colorspace, alt.colorspace, name, filter, referencer)。
- 頁面轉換為圖片
- 增加圖片分辨率
總結
PyMuPDF中有一些最常用的類,也是pdf各種核心操作的對象,其屬性值可提供各種信息,上述各種操作需求也是基于對象方法的使用,僅僅是一些常見需求。更多功能操作或需求,以及全部類更詳細的屬性方法可參考官方文檔。常用的有以下幾種:
Document
打開一個文件即實例化了一個Document,可通過讀取文件或內存獲得。部分方法如下:
Page
document中的每個頁面是Page類。
Pixmap
Pixmap是MuPDF渲染能力的核心對象,表示平面像素集。PyMuPDF中有多種方法創建 pixmap,比如 從頁面或pdf中圖片直接創建,主要用來進行與圖片相關的各種操作,比如圖片格式轉換,縮放,裁剪等。
總結
以上是生活随笔為你收集整理的python处理pdf文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Azure机器学习实验
- 下一篇: oracle中的trim函数使用介绍