.fb-comments,.fb-comments span,.fb-comments span iframe[style]{min-width:100%!important;width:100%!important}

希望從文檔中提取數據?試試 Nanonets OCR 軟件。在自動駕駛儀上從收據、賬單、PDF 文檔等中提取數據。沒有信用卡。永遠免費計劃。

最流行的文件類型是可移植文檔格式,也稱為 PDF。它可以是電子書、數字簽名協議、受密碼保護的文件或護照等掃描文件。

PDF 是最 廣泛使用的數字格式,國際標準化組織 (ISO) 將其維護為開放標準。

PDF 是使用最廣泛的文檔格式,超過 7300 萬 每天都有新的 PDF 文件保存在 Gmail 和雲端硬盤上。

這表明這些文件類型中存儲的大量數據通常難以編輯或修改。在本博客中,我們將了解如何使用 Python 庫 PyPDF2 處理 PDF 文件並執行以下任務:

使用 PyPDF2 從 PDF 文件中提取文本 使用 PyPDF2 加密 PDF 文件 旋轉、合併和拆分PDF 文件 為 PDF 文件添加水印

那麼,讓我們繼續閱讀。

PyPDF2 並不是唯一可以使用 python 進行 PDF ocr 的 python 庫。以下是一些常見的 Python PDF 庫:

PDFQuery: PDFQuery 是一個 PDF 抓取庫,它是 PyQuery、PDFMiner 和 XML 的快速且用戶友好的 Python 包裝器。

Tabula.py: 它是用於讀取 PDF 表格的 tabula-java 的 Python 包裝器。 Tabula.py 使您可以讀取表格並可以轉換為 Pandas DataFrame。

Slate: 它用於從 PDF 文件中提取文本,具體取決於 PDFMiner 包。 Slate 是一個輕量級的註解工具,支持 Python 中的註解。

PDFMiner:它是一個開源的PDF庫,用於從PDF中提取文本。您可以使用 PDFMiner 對數據進行分析。但是,它只支持 Python3。

pdflib: PDFlib 是一個用於在 python 中創建 PDF 的庫。此開發庫包含用於創建、個性化和導入 PDF 的多個級別。

Xpdf: 它是 pdf 的 Python 包裝器。

PyPDF2: 它是最著名的 Python 庫之一使您能夠對 PDF 執行任務,包括合併 PDF 文件、提取文檔信息、拆分 PDF 頁面等等。

在本文中,我們將討論 PyPDF2 庫,它被稱為在 Python 中處理 PDF 的最佳庫之一,可在所有平台上使用。

目錄

什麼是 Python 的最佳 PDF 庫?

在 Python 中處理 PDF 的最佳庫是 PyPDF2。它輕巧、快速且有據可查。該庫可在 Python 包索引 (PyPI) 上找到。

如果您需要從頭開始創建 PDF 文件,您將希望使用 PyPDF2,因為它對創建新文檔具有強大的支持。如果需要解析現有記錄,那麼 PyPDF2 是完美的,因為它對檢測不同類型的字體和其他功能有更好的支持。

PyPDF2 庫介紹

PyPDF2 是一個 Python允許操作 PDF 文檔的庫。它可用於創建新的 PDF 文檔、修改現有的文檔以及從文檔中提取內容。 PyPDF2 是一個純 Python 庫,不需要非標準模塊。

低級 API(基於 Pygments)允許編寫生成或有效操作文檔的程序。高級 API(基於 ReportLab)只需幾行代碼即可創建複雜的文檔,例如表單、書籍或雜誌。

PyPDF2 支持:

將 PDF 文件轉換為圖像(png 或 jpeg)或文本文件;從頭開始創建新的 PDF 文檔;通過添加、刪除、替換或修改頁面來編輯現有 PDF;通過旋轉頁面、添加水印、更改字體等方式修改現有 PDF;使用數字簽名簽署文件(必須存在證書);

PyPDF2 的設計考慮了性能。它使用本地 C 代碼來處理最耗時的任務(例如解析),但從不犧牲其接口的簡單性。該庫也是線程安全的,它的內存佔用並不比 Python 所需的大多少(大約 1MB)。

如何在 PyPDF2 中讀取 PDF?

雖然 PyPDF2 沒有專門用於讀取遠程文件的方法,但您可以使用 Python 的 urllib.request 模塊 以字節為單位讀取遠程文件,然後將其傳遞給 PdfFileReader() 函數以字節格式的文件。其餘步驟類似於讀取本地 PDF 文件。

PyPDF2 和 PyPDF4 有什麼區別?

PyPDF2 是一個用於創建、操作和解碼可移植文檔的庫。它支持 PDF 1.4、1.5 和 1.6,以及 PDF 1.7 中的所有安全功能,包括數字簽名和權限。

PyPDF2 除了 Python 標準庫之外沒有其他依賴項。它是純 Python 代碼,但它確實對某些算法使用了 C 擴展來提高性能。

PyPDF4 是在 macOS、Windows 和 Linux 平台上處理 PDF 文檔的高級工具。它包括:

用於從頭開始創建包含文本、圖像和形狀的 PDF 文件的 GUI;用於查看 PDF 文件的瀏覽器 用於對現有文件執行所有其他操作或使用 Python 腳本或 shell 命令(如 sed(1) 或 awk(1))從頭開始創建新文件的命令行工具。

PyPDF4 基於 PyPDF2 庫並共享其許可證,但具有以下附加功能:

支持頁面標籤註釋 支持加密文檔(包括它們在運行時的解密) 支持文檔加密/解密 支持帶有頁面之間的鏈接 密碼支持受保護的文檔(包括它們在運行時的解密)。

想要從 PDF 文檔中抓取數據、將 PDF 轉換為 XML 或自動提取表格?查看 Nanonets 的 PDF 抓取器或 PDF 解析器,將 PDF 轉換為數據庫條目!

PyPDF2 有什麼用處?

PyPDF2 庫可用於許多不同的方法:

PyPDF2 用作創建或修改 PDF 的命令行工具。如果您對服務器有 shell 訪問權限但沒有圖形桌面環境,這將很有用。它通過將庫作為模塊導入並調用其函數來在 Python 腳本中運行庫。如果您想直接自動執行任務或使用 PyPDF2 構建複雜的應用程序,這將非常有用。它可以讀取、解析和編寫 PDF。它可以用作命令行工具或庫。它是用純 Python 編寫的,沒有外部依賴項(Python 本身除外)。它支持 Unicode 字符串,因此它可以處理非英文字符。

PyPDF2 用例

以下是 PyPDF2 可用於的一些用例:

將 PDF 轉換為 Word 或其他格式

例如,如果要將 PDF 轉換為 Word 或其他格式,則必須為每次轉換下載單獨的程序。如果您嘗試一次對多個文檔執行此操作,則該過程可能會很慢而且很麻煩。

PyPDF2 是一個命令行工具,它提供了另一種處理 PDF 的方法。您可以將其用作常規工作流程的一部分或用作 Python 程序。

將多個 PDF 合併在一起

用戶可以使用 PyPDF2 修改 PDF 文檔的內容。例如,在 PDF 中添加或刪除頁面或提取文本。也可以將圖像和其他對象添加到現有 PDF。

修改 PDF 文檔的內容

也可以使用 PyPDF2 將多個 PDF 合併在一起。這可以通過為每個 PDF 文件指定輸入路徑,然後將它們組合成一個文檔來完成。

將大文檔拆分為較小的文檔

如果您需要拆分大文檔將文檔壓縮成更小的文檔,PyPDF2 是您應該使用的庫。該庫支持按頁、每 n 頁和按頁面範圍拆分文檔。

它還支持基於元數據拆分文檔,如果您想根據作者或標題拆分文檔,這很有用.

想要自動執行重複的手動數據輸入任務?從發票、身份證或自動駕駛儀上的任何文件中提取數據!

PyPDF2安裝

安裝PyPDF2有多種方法。最流行的選擇是使用 pip。

運行 PyPDF2 需要 Python 3.6 及更高版本。

Python 通常包含一個名為 pip 的包安裝程序。它允許您設置 PyPDF2:

pip install PyPDF2

如果您不是超級用戶(系統管理員或 root),您可以為當前用戶安裝 PyPDF2:

pip install–user PyPDF2

如果您想使用 PyPDF2 加密或解密 AES PDF,您需要安裝一些額外的要求。使用標準安裝支持 RC4 加密。

pip install PyPDF2[crypto]

PyPDF2 是一個用於處理 PDF 文檔的 Python 庫。它可用於解析 PDF、修改它們以及創建新的 PDF。 PyPDF2 可用於從 PDF 中提取一些文本和元數據。如果您要對現有 PDF 文件自動執行某些處理,這會很有幫助。

當前可以提取的數據類別如下:

作者 創建者 製作者 主題 標題 頁數

要使用此示例,您必須找到 PDF。可以使用計算機上隨時可用的任何 PDF。

這是一個代碼示例:

# get_doc_info.py from PyPDF2 import PdfFileReader def get_info(path): with open(path,’rb’) as f: pdf=PdfFileReader(f) info=pdf.getDocumentInfo() number_of_pages=pdf.getNumPages() print(info) author=info.author creator=info.creator producer=info.producer subject=info.subject title=info.title if __name__==’__main__’: path=”reportlab-sample.pdf”get_info(path)

PyPDF.pdf.DocumentInformation 將返回包含有用的屬性,包括作者、創建者、製作者、主題和標題。

通過打印 DocumentInformation 對象,您將獲得如下所需的輸出:

PyPDF2包的PdfFileReader在這裡導入。一個名為 PdfFileReader 的類提供了幾種處理 PDF 文件的方法。

在這種情況下,您調用.getDocumentInfo(),它將為您提供一個 DocumentInformation 對象。這些信息大部分是您最感興趣的。

另外,您可以通過調用閱讀器object.getNumPages()方法來獲取文檔的頁數。

您可以使用信息變量的各種實例屬性來提取您需要的剩余文檔元數據。您可以將信息打印出來並返回以供將來使用。

PyPDF2 中的.extractText() 函數可用於其頁面對象(本示例中未顯示) ),雖然它不是很有效。一些 PDF 會產生文本,而另一些會返回一個空字符串。

如果您想從 PDF 中提取文本,請查看 Nanonets。由於它是專門為從 PDF 中提取文本而創建的,因此 Nanonets 的功能要強大得多。

想要使用機器人流程自動化嗎?查看基於 Nanonets 工作流的文檔處理軟件。沒有代碼。沒有麻煩的平台。

使用 PyPDF2 從 PDF 中提取文本很困難,因為它對文本提取的支持有限。返回的代碼格式不正確。由於 PyPDF2 的支持有限,您可能會得到一系列換行符。

讓我們看看如何從 PDF 中提取文本:

#extracting_text.py from PyPDF2 import PdfFileReader def text_extractor(path): with open(path,’rb’) as f: pdf=PdfFileReader(f) # 獲取第一頁 page=pdf.getPage(1) print(page) print(‘Page type:’.format(str(type( page)))) text=page.extractText() print(text) if __name__==’__main__’: path=”reportlab-sample.pdf”text_extractor(path)

PyPDF2 模塊的其他用途

可以使用 PyPDF2 模塊對 PDF 文件執行許多操作,包括:

讀取 PDF 文件的文本,就像我們剛剛在上面所做的那樣 通過組合兩個或特定頁面上的更多 PDF 文件。按順序附加多個 PDF 文件。要獲取創建者、作者、創建日期等信息,請找到每個 PDF 文件的所有元數據。更好的是,我們可以使用文本文件中的文本來生成新的 PDF 文檔。

如果您使用發票和收據或擔心身份驗證,請查看 Nanonets 在線 OCRPDF 文本提取器,免費從 PDF 文檔中提取文本。點擊下方了解更多關於Nanonets企業自動化解決方案

其他PyPDF2教程

如何旋轉PDF文件的頁面?

Python 模塊 PyPDF2 是一個用於處理 PDF 文件的庫。它非常易於使用,並且可用於許多不同的平台。

在這裡,我們將了解如何旋轉 pdf 文件的頁面。將 PDF 保存在另一個文件中並運行以下代碼:

import PyPDF2 pdf_in=open(‘original.pdf’,’rb’) pdf_reader=PyPDF2.PdfFileReader(pdf_in) pdf_writer=PyPDF2.PdfFileWriter() for pagenum in range(pdf_reader.numPages): page=pdf_reader.getPage(pagenum) page.rotateClockwise(180) pdf_writer.addPage(page) pdf_out=open(‘rotated.pdf’,’wb’) pdf_writer.write(pdf_out) pdf_out.close () pdf_in.close()

如何合併 PDF 文件?

在掃描文檔的多個頁面或將多個頁面作為單獨的文檔存儲在您的計算機上之後,經常需要合併 PDF 文件。

p>

許多程序,包括 Adob​​e 和在線應用程序,可以幫助快速完成這項任務。但是,它們中的大多數要么出售,要么可能沒有提供足夠的安全措施。

打開您喜歡的編輯器,然後創建一個名為“pdfMerger.py”的新文件。確保 Python 程序與要附加的 PDF 文件位於同一目錄中。

您可以使用以下代碼塊合併兩個或多個 PDF 文件:

from PyPDF2 import PdfFileMerger, PdfFileReader 合併=PdfFileMerger() merge.append(PdfFileReader(open(filename1,’rb’))) merge.append(PdfFileReader(open(filename2,’rb’))) merge.write(“merged.pdf”)

上面的代碼看起來很簡單,但是如果你想合併兩個以上的文件怎麼辦?對於您要添加的每個文件,需要重複第 3 行,這會使您的應用程序相當長。在這種情況下,可以使用for循環。

以下代碼顯示了另一種合併多個PDF文件的方法。

如何從PDF文件中拆分頁面?

如何從PDF文件中拆分頁面?

h3>

出於各種原因,您可能經常希望從大型 PDF 文件中提取特定頁面或將多個 PDF 文件合併為一個。這可以通過某些 PDF 編輯器軟件來完成。不過,您可能會發現免費版本中通常不包含拆分和合併功能,或者處理如此多的頁面或文件會使它們過於費力。在本文中,我將分享一個簡單的 Python 腳本,您可以使用它來拆分或合併多個 PDF 文件。

使用 PdfFileReader 讀取原始文件將允許您通過頁碼訪問特定頁面當您希望從 PDF 文件中提取特定頁面並將其創建為單獨的 PDF 文件時(頁碼從 0 開始)。 PdfFileWriter 的添加頁面功能允許您將 PDF 頁面添加到全新的 PDF 對象並保存。

這是將 file1.pdf 的第一頁分離為單獨的 PDF 的代碼示例名為 first page.pdf 的文件。

from PyPDF2 import PdfFileWriter, PdfFileReader input_pdf=PdfFileReader(“file1.pdf”) output=PdfFileWriter() output.addPage(input_pdf.getPage(0)) with open(“first_page.pdf”,”wb”) as output_stream: output.write(output_stream)

如何合併 PDF 文件的頁面?

您可以使用 PdfFileMerger 將多個 PDF 文件合併到一個文檔中。即使您也可以使用 PdfFileWriter 來完成此操作,但在不先編輯頁面的情況下合併頁面會使使用 PdfFileMerger 更加簡單。

使用 PdfFileMerger 的 append 方法添加多個 PDF 文件並將它們寫入單個的示例代碼名為 merge 的文件如下所示。

from PyPDF2 import PdfFileReader, PdfFileMerger pdf_file1=PdfFileReader(“file1.pdf”) pdf_file2=PdfFileReader(“file2.pdf”) output=PdfFileMerger() output.append(pdf_file1) 輸出。 append(pdf_file2) with open(“merged.pdf”,”wb”) as output_stream: output.write(output_stream)

如果要將原始文件中的某些頁面添加到新的 PDF 文件中,可以使用append 函數的 pages 參數給出一個包含開始和結束頁碼的元組。

如果你想指定你希望你的頁面去哪裡,你必須使用 merge 函數,因為 append 函數總是在末尾添加新頁面。它使您可以選擇要插入新頁面的頁面位置。

加密 PDF 文件

可以使用密碼或數字證書加密 PDF 文件。加密方法由用戶在創建文件時選擇。任何知道密碼的人都可以打開、編輯和打印受密碼保護的 PDF 文件。不知道密碼的人不能打開或編輯它。數字簽名的文檔也可以防止未經授權的編輯。儘管如此,它還包括一個電子簽名,任何有權訪問原始文檔或其數字簽名的人都可以驗證該簽名。

對於範圍內的頁面(pdf.getNumPages()):pdfwrite.addPage(pdf.getPage( page)) pdfwrite.encrypt(user_pwd=password, owner_pwd=None, use_128bit=True) with open(outputpdf,’wb’) as fh: pdfwrite.write(fh)

您可以使用上述密碼保護 PDF 文件code just like this:

How to Add a Watermark to a PDF File?

A watermark is文檔正面的文本或圖形覆蓋。它可以幫助您保護您的工作免受未經授權的使用或濫用,並顯示哪些記錄已被修改或打印。您可以添加文本和圖形來為您的文檔製作自定義水印。

以下是有關如何向 PDF 文件添加水印的代碼片段:

import PyPDF2 pdf_file=”doc.pdf”watermark=“watermark.pdf”merged_file=“merged.pdf” input_file=open(pdf_file,’rb’) input_pdf=PyPDF2.PdfFileReader(input_file) watermark_file=open(watermark,’rb’) watermark_pdf=PyPDF2.PdfFileReader(watermark_file) pdf_page=input_pdf.getPage(0) watermark_page=watermark_pdf.getPage(0) pdf_page.mergePage(watermark_page) output=PyPDF2.PdfFileWriter() output.addPage(pdf_page) merge_file=open(merged_file,’wb’) output.write(merged_file) merge_file.close() watermark_file.close() input_file.close()

使用加密函數時必須考慮三個參數。

用戶密碼user pwd用於限製文件打開和讀取;用戶密碼比所有者密碼、str 低一級。給定文件後,可以不受任何限制地打開文件。如果未提供,默認所有者密碼和用戶密碼相同;使用 128 位布爾選項指定是否使用 128 位作為密碼。 False 表示應使用 40 位密碼; True 是默認值;

想要自動執行重複的手動任務?在提高效率的同時節省時間、精力和金錢!

結論

PyPDF2 是在 PDF 文件之間進行轉換的最簡單方法之一,它是完全開源的。如果您急於開始,優秀的在線文檔將讓您在幾分鐘內啟動並運行。如果您有問題或需要更多幫助,友好的 PyPDF2 社區將很樂意提供幫助。除了易於使用之外,PyPDF2 還非常輕量——它除了 Python 之外沒有其他依賴項(這意味著它幾乎可以在所有可以想像的平台上工作)。

此外,PyPDF2 是在 BSD-樣式許可證,因此您可以隨意將其與您的軟件捆綁在一起。簡而言之,這是一個非常棒的 PDF 處理工具,我們建議 Python 開發人員一定要檢查一下。

FAQs

Python 可以讀取 PDF 嗎?

Python 本身不支持讀取 PDF 文件,所以這不是你用一行代碼就能做到的。但是大量第三方庫允許 Python 讀取 PDF 並將其轉換為其他格式,例如 HTML 或純文本。

如果 Python 讀取 PDF,這裡會出現另一個問題,那麼:

Python 也可以讀取 Excel 文件嗎?

是的,Python 可以讀取 Excel 文件。 Pandas 使將 Excel 文件導入 Python 變得簡單。您必須使用 read excel 來實現此目標。

PyPDF2 開源嗎?

PyPDF2 是根據 LGPL.

另外,PyPDF2 可以以源代碼形式下載。它可以使用 pip 安裝或下載 zip 文件並將其解壓縮到您選擇的目錄。

PyPDF2庫包含幾個命令行工具,可用於將 PDF 文件轉換為其他格式。這些工具在安裝時與 Python 模塊一起安裝。

PyPDF2 安全嗎?

PyPDF2 旨在為 libpdf(C++ PDF 參考庫)提供一個純 Python 接口,而不是將單獨的 C 擴展模塊鏈接到 Python。

PyPDF2 的主要目標是讓開發人員更輕鬆地創建 PDF 應用程序,而無需o 擔心安裝複雜的開發環境或處理多個版本的外部庫。

是的,Excel 可以從 PDF 中提取數據。

Excel 是處理數據的好工具,並且是便於使用。它也非常強大,可用於處理許多不同類型的數據。

此外,Excel 是一個很大的優勢,因為您可以在任何平台(Windows、Mac、Linux)上使用它,而且您不需要’不需要任何特殊的軟件。

從PDF中提取數據的過程並不簡單,但我們將逐步向您展示如何進行。

從PDF中提取文本是難的。造成這種情況的原因有很多:

PDF 格式是為人類而非機器而設計的。世界上最流行的文檔格式具有許多簡潔的功能,使人們易於閱讀,但計算機處理起來卻很痛苦。

PDF 可以包含任何內容(文本、圖表、圖像等)。 ),並且可以按照您想要的任何方式佈置它們。這意味著沒有從 PDF 文件中提取文本的標準方法——每個文件都有其獨特的佈局。

給定 PDF 中的文本可能不在您期望的位置!一些 PDF 具有包含所有文檔文本的目錄或索引;其他人有腳註或尾註;其他人有定期重複的頁眉和頁腳;其他人使用框架或圖層而不是頁面(這種情況很少見)。

可以使用光學字符識別(OCR)從照片中提取文本。 OCR 軟件就是完成此任務的。最著名的開源 OCR 程序是 tesseract OCR 引擎。

PyPDF2 不是 OCR 程序。

什麼是 OCR Python?

OCR Python 是用純 Python 編寫的全功能 OCR 庫。它封裝了 Tesseract 開源 OCR 引擎,並提供了一個簡單的 API 供開發人員使用。 OCR,光學字符識別,將掃描的文本圖像轉換為可搜索的數字文本。

OCR Python 使用 Tesseract 的高質量輸出作為其基礎,它可以與任何其他使用 Leptonica 或Harp 庫(例如 GOCR)。

如果您想使用 OCR 將文檔數字化,那麼這個庫將幫助您快速輕鬆地。

Nanonets 在線 OCR 和 OCR API有許多有趣的用例,可以優化您的業務績效、節省成本並促進增長。 了解 Nanonets 的用例如何應用於您的產品.

評價這篇文章

分享是關懷!

Categories: IT Info