我想嘗試類似的東西(解析銀行對賬單),並有同樣的問題。解決這個問題的唯一方法是到目前爲止發現的是分別解析每個頁面。
唯一的問題是,這需要事先知道您的文件是由多少頁組成的。目前我還沒有找到如何直接與Tabula做到這一點,所以我決定使用pyPdf模塊來獲取頁數。
import pyPdf
from tabula import read_pdf
reader = pyPdf.PdfFileReader(open("C:\Users\riley\Desktop\Bank Statements\50340.pdf", mode='rb'))
n = reader.getNumPages()
df = []
for page in [str(i+1) for i in range(n)]:
if page == "1":
df.append(read_pdf(r"C:\Users\riley\Desktop\Bank Statements\50340.pdf", area=(530,12.75,790.5,561), pages=page))
else:
df.append(read_pdf(r"C:\Users\riley\Desktop\Bank Statements\50340.pdf", pages=page))
發現有閱讀每個網頁單獨,或在同一時間有一些known and open issues。
祝你好運!
2017年8月3日編輯:
發現了一個更簡單的方法來計算PDF的網頁,而無需通過pyPDf去
import re
def count_pdf_pages(file_path):
rxcountpages = re.compile(r"/Type\s*/Page([^s]|$)", re.MULTILINE|re.DOTALL)
with open(file_path, "rb") as temp_file:
return len(rxcountpages.findall(temp_file.read()))
其中FILE_PATH是通向你的課程
的文件