Python PDF 自動化:合併、拆分、抽文字,一個 script 搞掂一堆文件

返工嘅人十個有九個都試過同 PDF 搏命:要將幾份報價單合併做一份、要將成個 catalog 拆開逐頁存、又或者要由一份百幾頁嘅報告入面抄返啲數字出嚟。人手做呢啲嘢,慢都算,最怕係錯——合錯文件、拆漏頁、抄錯數。而且呢類嘢通常係例行公事,每個星期都要重複做一次,時間就咁一路燒。今日教你用 Python 加一個叫 pypdf 嘅免費工具,幾行 code 就自動搞掂晒,仲一勞永逸。

第一步:安裝 pypdf

打開 Terminal(Mac)或者 Command Prompt(Windows),打呢句:

pip install pypdf

安裝完就可以開始寫 script。下面三招夠應付大部分辦公室 PDF 工作,每一招都係十零行 code 以內。

點解揀 pypdf?

pypdf 係一個純 Python 寫嘅 PDF 工具,免費、冇其他依賴、幾秒就裝好。市面上仲有 pdfplumber(專長抽表格)同 PyMuPDF(速度最快),但對於合併、拆分、抽文字呢三樣最常見嘅文書工作,pypdf 已經夠用有突,而且學起嚟最簡單,初學者一日就上手。

第一招:合併多份 PDF

最常見嘅需求:將幾份獨立 PDF 合做一份,方便一次過寄俾客或者歸檔。用 PdfWriter 嘅 append(),逐份加入再輸出就得:

from pypdf import PdfReader, PdfWriter # 合併多份 PDF 做一份 merger = PdfWriter() for f in ["報價單.pdf", "條款.pdf", "圖則.pdf"]: merger.append(f) merger.write("合併結果.pdf") merger.close()

將你想合嘅檔案名放晒入個 list,順序就係合併嘅順序。想加多份?喺個 list 度加多行就得,完全唔使改其他 code。如果你份文件成日都係同一批(例如報價單+條款+圖則),仲可以將成段 code 儲低做一個 .py 檔,下次行一次就自動合好。

第二招:拆分 PDF 逐頁存

公司份月結係幾十頁,想拆開每頁一個檔案?用 PdfReader 讀入,再逐頁寫出:

reader = PdfReader("大文件.pdf") for i, page in enumerate(reader.pages): w = PdfWriter() w.add_page(page) w.write(f"第{i+1}頁.pdf") w.close()

enumerate() 會自動幫你數頁數,i+1 就係第幾頁。一百頁就自動出一百個檔案,幾秒搞掂,唔使逐頁「另存新檔」。如果想淨係拆某幾頁,將個 for 改成 for i in [0, 2, 5],就只會輸出第 1、3、6 頁。

第三招:抽取 PDF 入面嘅文字

想喺 PDF 抄資料落 Excel?唔使人手逐行打。用 extract_text() 直接拎晒文字出嚟:

reader = PdfReader("文件.pdf") for i, page in enumerate(reader.pages): print(f"--- 第 {i+1} 頁 ---") print(page.extract_text())

抽出嚟嘅文字係純文字,你之後可以用之前教過嘅 Python 資料清理技巧(去空格、去重複)執靚,再入 Excel,成個流程自動化埋。留意:如果份 PDF 係掃描件(即係整頁都係圖片),extract_text() 會抽唔到字,嗰類文件要另外用 OCR 工具先得。

進階小技巧:擰正方向 + 加密碼

除咗三招,仲有兩個好常用嘅小功能——幫打橫咗嘅頁面擰返正,同埋幫商業文件加密:

reader = PdfReader("文件.pdf") w = PdfWriter() for page in reader.pages: w.add_page(page) w.pages[-1].rotate(90) # 每頁順時針擰 90 度 w.encrypt("密碼123") # 幫輸出加密 w.write("輸出.pdf") w.close()

rotate() 用嚟執返啲打橫嘅頁面,encrypt() 幫文件加層密碼保護,寄敏感資料俾客嗰陣安心好多。

小貼士

  • 順序就係 list 次序:合併時 list 邊份行先,輸出就邊份行先,唔使再排。
  • 記得 close():寫完檔案要 close(),唔係個檔案會鎖住打唔開。
  • 中文檔名冇問題:pypdf 支援中文路徑同檔名,照用就得。
  • 掃描件要 OCR:圖片型 PDF 抽唔到字,要用 OCR 工具先轉得返做文字。

今篇Python 教學總結: 呢三招加埋兩個小技巧,大部分 PDF 文書工作都可以自動化。試一試,慳返嚟嘅時間夠你飲多杯奶茶。