2017-03-01 19 views
0

私はTabulaという素晴らしいライブラリに出くわしました。残念ながら、最初のページにはTabulaが抽出したくない無駄な領域がたくさんあります。ドキュメントによれば、抽出したいページ領域を指定することができます。しかし、無駄な領域は私のPDFファイルの最初のページにしかないので、その後のすべてのページでTabulaはトップセクションを見逃してしまいます。エリア条件をに指定する方法はありますか?はPDFの最初のページに適用されますか?Tabulaを使用したPDFからのテーブルの抽出

from tabula import read_pdf 

df = read_pdf(r"C:\Users\riley\Desktop\Bank Statements\50340.pdf", area=(530,12.75,790.5,561), pages='all') 

答えて

1

私は同様のもの(銀行口座を解析する)に取り組んでおり、同じ問題がありました。今まで私が見つけたこれを解決する唯一の方法は、各ページを個別に解析することです。

唯一の問題は、ファイルが何ページから構成されているかを事前に知る必要があることです。現時点で私は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日EDIT:

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())) 

関連する問題