2017-11-17 11 views
2

私はちょうどPDFからテーブルを抽出するtabula-py(そしてtabula-javaの喜び)を発見しました。私は今、私の仕事のためにpdfテーブルからいくつかのデータを読み込み、それをちょっときれいにするスクリプトをプログラミングしています。私が使用しているpdfは毎日同じフォーマットであり、テーブルは常に特定のエリアにあります。この領域を検出するには、tabula.exeを使用しています。テーブルを選択し、プレビューを視覚化して表示してから、スクリプトをエクスポートして、tabula.exeで使用される-aパラメータを確認します。私は、Pythonで私のコマンドでこれを使用し、それは次のようになります。Tabula-pyは右の列を分割していません

df = tabula.read_pdf(os.fsdecode(directory)+filename, encoding = 'ISO-8859-1', 
stream=True, area = "81.106,302.475,384.697,552.491", pages = 2, pandas_options={'header':None}) 

それが抽出された素敵を示すものだから、私は、標準のUTF-8がエラーを返すための符号化パラメータを使用して、ストリーム方式のですtabula.exeのテーブル。ただし、データフレームには問題があります。最初の2つの列(tabula.exeのプレビューでは2つの異なる列として正しく表示されます)は実際には1つの列なので、名前と値が混在するためです。

tabula-pyとtabula.exeで同じ領域に2つの異なる結果が生じる理由はありますか?どうもありがとうございました!

答えて

1

GitHubでtabula-pyに「guess」オプションがTrueに設定されています。したがって、不一致を修正するには、guess = Falseを追加するだけで、出力は同じになります!

df = tabula.read_pdf(os.fsdecode(directory)+filename, encoding = 'ISO-8859-1', 
     stream=True, area = "81.106,302.475,384.697,552.491", pages = 2, guess = False, pandas_options={'header':None}) 
関連する問題