
來源:早起Python
作者:陳熹
40個Python辦公自動化案例合輯
大家好,我是早起。本文將分享一個常見辦公場景下的Python自動化案例,主要將涉及以下兩個內容
有一個文件夾 貨物清單 中含有多張貨物清單的影印版 PDF,分別命名為 文件 (1).pdf 文件 (2).pdf ... 文件 (20).pdf,如下所示:
PDF 是純圖片類型,里面的文字信息無法手動復制,同時本例中所有的圖片都向左旋轉 90 度,大致如下圖所示(馬賽克部分為無關內容):
我們需要做的是 「 獲取圖中紅框部分 TRACKING# 以及 REF2 冒號后的字符串,用 & 連接后重命名這個 PDF 文件 」 !
也就是需要根據每個PDF內容來批量重命名一大堆文件,最終效果如下
本需求是一個批處理問題,即需要對諸多文件執行類型的操作,基本思路是先完成對一份文件的處理,然后借助 glob 模塊獲取指定路徑所有符合要求的文件路徑,執行批處理框架,固后面的操作先針對 文件 (1).pdf
需求中最大的難題在于,PDF 是圖片類型,無法按常規方法提取文件。解決思路是利用光學字符識別(OCR)將圖片中的文字識別出,然后進行后續操作,這里就涉及到一些先后順序:
將圖片向右旋轉回正位
截取需要識別的部分圖片
將截取的圖片交給 OCR 獲取字符串
為了完成 OCR,需要在電腦上安裝三個軟件:
Ghostscript 32 位
ImageMagick 32 位
tesseract-OCR 32 位
三個軟件的下載安裝沒有特殊的地方(tesseract 配置稍復雜但網絡有上諸多教程,這里不再贅述),讀者可自行搜索下載及配置
首先導入需要的模塊:
from wand.image import Image
from PIL import Image as PI import pyocr import pyocr.builders import io import glob import re import os import shutil
具體的模塊用途可以參考下面具體代碼。其中 wand 和 pyocr 由于是非標準庫需要自行額外安裝。打開命令行輸入:
pip install wand
pip install pyocr
作為測試以及方便后面的實際運行,需求中的 貨物清單 這一文件夾可以放在桌面上。為了獲取其中的內容首先我們要明確桌面的路徑。每個人每臺電腦的桌面路徑都不相同,如果直接復制當前電腦桌面的路徑,更換電腦或者其他用戶調試就需要額外修改??赏ㄟ^下面基于 os 模塊的代碼獲取桌面路徑:
# 獲取桌面路徑包裝成一個函數 def GetDesktopPath(): return os.path.join(os.path.expanduser("~"), 'Desktop')
path = GetDesktopPath() + r'貨物清單' # 獲取 貨物清單 文件夾路徑
獲取配置好的 tesseract 便于后面調用:
tool = pyocr.get_available_tools()[0]
以 文件 (1).pdf 為例,通過 wand 模塊將 PDF 文件轉化為分辨率為 300 的 jpeg 圖片形式:
image_pdf = Image(filename=path + r'文件 (1).pdf', resolution=300)
image_jpeg = image_pdf.convert('jpeg')
將圖片解析為二進制矩陣:
image_lst = [] for img in image_jpeg.sequence:
img_page = Image(image=img)
image_lst.append(img_page.make_blob('jpeg'))
用 io 模塊的 BytesIO 方法讀取二進制內容為圖片形式:
new_img = PI.open(io.BytesIO(image_lst[0]))
由于圖片現在處于左旋 90 度的水平位,將其轉為正位可以用 rotate() 方法,注意該方法是逆時針旋轉,因此回正位需要逆時針旋轉 270 度。完善上面的代碼,并為 new_img.show() 預覽圖片:
new_img = PI.open(io.BytesIO(image_lst[0])).rotate(270)
new_img.show()
彈出圖片并恢復到了正位,接下來分別截取需要提取部位字符串的圖片了,盡量讓圖片中只有需要識別的部分,獲取識別出來容易簡單處理獲得需要的內容 截取圖片用 image.crop((left, top, right, bottom)) 四個參數需要反復調試才能確定。首先提取 TRACKING# 部位需要的內容,經確定四個參數分別是 350 600 1350 730,嘗試截取和預覽圖片:
### 解析1Z開頭碼 left = 350
top = 600
right = 1300
bottom = 730
image_obj1 = new_img.crop((left, top, right, bottom))
image_obj1.show()
截取成功后可以交給 OCR 了,代碼為 tool.image_to_string()
txt1= tool.image_to_string(image_obj1) print(txt1)
通過正則提取紅框內需要的內容:
req = 'TRACKING #: (.*)' txt1_real = ''.join(re.findall(req, txt1)[0].split()) print(txt1_real)
用同樣的辦法也可以提取另一個紅框的文字:
### 解析C開頭碼 left = 205 top = 1170 right = 2450 bottom = 1200 image_obj2 = new_img.crop((left, top, right, bottom)) txt2 = tool.image_to_string(image_obj2) req = 'C.d+d' txt2_real = re.findall(req, txt2)[0]
最后將兩個字符串和 & 拼接為長字符串,然后通過 os.rename() 完成重命名文件的目的:
file_name = txt1_real + '&' + txt2_real
os.rename(path + r'文件 (1).pdf', path + r'{}.pdf'.format(file_name))
至此我們就完成了需求的一大步,接下來只需要借助 glob 模塊遍歷目標文件夾,對獲取的每一個文件執行上面的操作即可,這樣就將全部需求完成,所有的PDF均按照指定字段進行重命名
本文的分享就到這里,上面的 Python辦公自動化 案例可以擴展到很多使用場景(核心為提取PDF指定內容+批量重命名),大家可以自己找一些文件測試學習,如果對你有所幫助可以給本文來一波三連~
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
CDA數據分析師證書考試體系(更新于2025年05月22日)
2025-05-26解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25