读取 PDF 内容
这篇文章会介绍使用 Python 的 pdfplumber 第三方函数库,读取 pdf 的内容,将内容输出储存为纯文字文件,或将表格内容输出为 CSV 档。
快速导览:
本篇使用的 Python 版本为 3.7.12,所有范例可使用 Google Colab 实作,不用安装任何软件 ( 参考:使用 Google Colab )
安装 pdfplumber 函数库
输入下列指令安装 pdfplumber,根据个人环境使用 pip 或 pip3。
!pip install pdfplumber
读取 pdf 内容
使用 pdfplumber 打开指定路径中的 pdf 文件后,读取 pages 属性内容,就能将 pdf 所有页面回传为串列格式 ( 范例 pdf 共有三页 )。
下载:范例 pdf
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks') # Colab 換路徑使用
import pdfplumber
pdf = pdfplumber.open('oxxostudio.pdf') # 開啟 pdf
print(pdf.pages) # [<Page:1>, <Page:2>, <Page:3>],共有三頁
透过 pages 读取页面串列后,使用读取串列项目的方式打开指定页面,再借由 extract_text() 方法读取该页面的文字内容。
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks') # Colab 換路徑使用
import pdfplumber
pdf = pdfplumber.open('oxxostudio.pdf')
page = pdf.pages[0] # 讀取第一頁
text = page.extract_text() # 取出文字
print(text)
如果页面具有“表格”内容,使用 extract_table() 方法会将表格以“串列”方式表现 ( 范例 pdf 第二页为表格 )。
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks') # Colab 換路徑使用
import pdfplumber
pdf = pdfplumber.open('oxxostudio.pdf')
page = pdf.pages[1] # 讀取第二頁
table = page.extract_table() # 取出表格
print(table)
pdf.close()
读取加密 pdf
如果是加密的 pdf,可以在 open 时设定 password 参数,输入密码后就能打开 pdf。
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks') # Colab 換路徑使用
import pdfplumber
pdf = pdfplumber.open('test.pdf', password='12345678') # 輸入密碼
page = pdf.pages[0]
text = page.extract_text()
print(text)
pdf.close()
读取 pdf 内容储存为纯文字文件
参考“内建函数 ( 文件读写 open )”文章,新增一个 test.txt 纯文字文件,就能将读取到的 pdf 写入纯文字文件中。
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks') # Colab 換路徑使用
import pdfplumber
pdf = pdfplumber.open('oxxostudio.pdf')
page = pdf.pages[0]
text = page.extract_text()
print(text)
pdf.close()
f = open('test.txt','w+') # 使用 w+ 模式開啟 test.txt
f.write(text) # 寫入內容
f.close() # 關閉 test.txt
读取 pdf 表格储存为 CSV
参考“CSV 文件操作”文章,新增一个 test-csv.csv 纯文字文件,搭配 for 循环,就能将读取到的 pdf 表格内容写入 CSV 文件中。
import pdfplumber
pdf = pdfplumber.open('oxxostudio.pdf')
page = pdf.pages[1]
table = page.extract_table()
print(table)
pdf.close()
import csv
csvfile = open('test-csv.csv', 'w+') # 建立 CSV 檔案
write = csv.writer(csvfile) # 建立寫入物件
for i in table:
write.writerow(i) # 讀取表格每一列寫入 CSV
print('ok')
后记
本来想要使用 PyPDF2 读取 pdf 内容,但发现虽然可以读取 pdf,却无法正确解析内容文字,后来才选择 pdfplumber 作为 Python 读取 pdf 内容的首选。
参考:https://github.com/jsvine/pdfplumber
微信扫码关注
抖音扫码关注