web-dev-qa-db-ja.com

tabula-pyでPDFをCSVに変換するには?

Python 3、私はPDFファイル "Ativos_Fevereiro_2018_servidores_rj.pdf"に6,041ページあります。Ubuntuを搭載したマシン上にいます

各ページには、ページの上部に2行のテキストがあります。そして、ヘッダーと2つの列がある表の下。 36行の各テーブル(最終ページを除く)

各ページの最後の表の後には、テキスト行もあります

ページ内の表のみを考慮して、このPDFからCSVを作成します。そして、表の前後のテキストを無視します

最初にtabula-pyをテストしました。ただし、空のファイルが生成されます。

from tabula import convert_into

convert_into("Ativos_Fevereiro_2018_servidores_rj.pdf", "test_s.csv", output_format="csv")

誰か、このタイプの需要にtabula-pyを使用する別の方法を知っていますか?

または、このファイルタイプでPDFをCSVに変換する別の方法?

7
Reinaldo Chaves

OK、私は問題を発見しました:あなたはspreadsheet=Trueおよびutf-8エンコードを保持します。

df = tabula.read_pdf("Ativos_Fevereiro_2018_servidores_rj.pdf", encoding='utf-8', spreadsheet=True, pages='1-6041')

次の図では、最初のページだけでテストしました(ファイルが大きいため)。

enter image description here

その後、DataFrameをcsvとして保存できます。

df.to_csv('otuput.csv', encoding='utf-8')

編集:

OK、エラーはJavaメモリの問題である可能性があります。速くするために、pagesオプションを追加しました。また、エンコードの問題もあったため、encoding='utf-8' csvエクスポートに追加されました。 Javaエラーが引き続き発生する場合は、チャンクで解析してみてください。 pages='1-300'。 6041(64GB RAM Machine)で)をすべて実行したところ、正常に動作しました。

6
ilja