返工嘅人十個有九個都試過同 PDF 搏命:要將幾份報價單合併做一份、要將成個 catalog 拆開逐頁存、又或者要由一份百幾頁嘅報告入面抄返啲數字出嚟。人手做呢啲嘢,慢都算,最怕係錯——合錯文件、拆漏頁、抄錯數。而且呢類嘢通常係例行公事,每個星期都要重複做一次,時間就咁一路燒。今日教你用 Python 加一個叫 pypdf 嘅免費工具,幾行 code 就自動搞掂晒,仲一勞永逸。
第一步:安裝 pypdf
打開 Terminal(Mac)或者 Command Prompt(Windows),打呢句:
安裝完就可以開始寫 script。下面三招夠應付大部分辦公室 PDF 工作,每一招都係十零行 code 以內。
點解揀 pypdf?
pypdf 係一個純 Python 寫嘅 PDF 工具,免費、冇其他依賴、幾秒就裝好。市面上仲有 pdfplumber(專長抽表格)同 PyMuPDF(速度最快),但對於合併、拆分、抽文字呢三樣最常見嘅文書工作,pypdf 已經夠用有突,而且學起嚟最簡單,初學者一日就上手。
第一招:合併多份 PDF
最常見嘅需求:將幾份獨立 PDF 合做一份,方便一次過寄俾客或者歸檔。用 PdfWriter 嘅 append(),逐份加入再輸出就得:
將你想合嘅檔案名放晒入個 list,順序就係合併嘅順序。想加多份?喺個 list 度加多行就得,完全唔使改其他 code。如果你份文件成日都係同一批(例如報價單+條款+圖則),仲可以將成段 code 儲低做一個 .py 檔,下次行一次就自動合好。
第二招:拆分 PDF 逐頁存
公司份月結係幾十頁,想拆開每頁一個檔案?用 PdfReader 讀入,再逐頁寫出:
enumerate() 會自動幫你數頁數,i+1 就係第幾頁。一百頁就自動出一百個檔案,幾秒搞掂,唔使逐頁「另存新檔」。如果想淨係拆某幾頁,將個 for 改成 for i in [0, 2, 5],就只會輸出第 1、3、6 頁。
第三招:抽取 PDF 入面嘅文字
想喺 PDF 抄資料落 Excel?唔使人手逐行打。用 extract_text() 直接拎晒文字出嚟:
抽出嚟嘅文字係純文字,你之後可以用之前教過嘅 Python 資料清理技巧(去空格、去重複)執靚,再入 Excel,成個流程自動化埋。留意:如果份 PDF 係掃描件(即係整頁都係圖片),extract_text() 會抽唔到字,嗰類文件要另外用 OCR 工具先得。
進階小技巧:擰正方向 + 加密碼
除咗三招,仲有兩個好常用嘅小功能——幫打橫咗嘅頁面擰返正,同埋幫商業文件加密:
rotate() 用嚟執返啲打橫嘅頁面,encrypt() 幫文件加層密碼保護,寄敏感資料俾客嗰陣安心好多。
小貼士
- 順序就係 list 次序:合併時 list 邊份行先,輸出就邊份行先,唔使再排。
- 記得 close():寫完檔案要 close(),唔係個檔案會鎖住打唔開。
- 中文檔名冇問題:pypdf 支援中文路徑同檔名,照用就得。
- 掃描件要 OCR:圖片型 PDF 抽唔到字,要用 OCR 工具先轉得返做文字。
今篇Python 教學總結: 呢三招加埋兩個小技巧,大部分 PDF 文書工作都可以自動化。試一試,慳返嚟嘅時間夠你飲多杯奶茶。