나는 (은행 계산서를 파싱하는) 유사한 작업을하고 있으며 같은 문제가있었습니다. 지금까지 발견 한 문제를 해결할 수있는 유일한 방법은 각 페이지를 개별적으로 구문 분석하는 것입니다.
유일한 문제는 파일이 몇 페이지로 구성되어 있는지 미리 알아야한다는 것입니다. 지금은 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일 편집 :
pyPDf 거치지 않고 PDF 파일의 페이지를 계산하는 간단한 방법을 찾을 수 FILE_PATH 물론
의 파일의 경로입니다
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()))