私の街の気象観測所から提供された履歴データを見ると、 それらはグラフィカルに提供され、PDFとしてダウンロードするだけです。 なぜそれらをcsvでダウンロードできないのかわかりません。これは、誰にとってもはるかに便利です。
だから私はXNUMXつを探していました これらのテーブルをpdfからcsvに渡すためのソリューション、または誰かがExcelまたはLibreOfficeをフォーマットしたい場合。 私はcsvが好きです。なぜなら、csvを使用すると、Pythonとそのライブラリで処理できるすべてのことを実行したり、任意のスプレッドシートに簡単にインポートしたりできるからです。
アイデアは自動化されたプロセスを取得することなので、私が欲しいのはPythonで動作するスクリプトであり、これがTabulaの出番です。
Tabulaを使用してPDFをcsvに変換する
手順と操作は非常に簡単です。 最初は Tabulaライブラリを開発環境にインストールします。 Tabulaを使用すると、PDFテーブルからPandasデータフレームにデータを抽出できます。Pandasデータフレームは、csvと配列の操作用に最適化されたPythonライブラリです。
また可能にします PDF、JSON、CSV、TSV間の抽出と変換。 宝石。 あなたはそのではるかに多くの情報を見つけることができます githubリポジトリ
以前のすべての作業を利用して、Anacondaにインストールします。 リンクであなたは方法を見ることができます Anacondaをインストールします.
Tabulaをインストールします
#primero activamos nuestro entorno de desarrollo en nuestro caso sería conda activate comparador
pip install tabula-py
実行するとエラーが発生しました
ドキュメントに示されている解決策は、古いバージョンのTabulaをアンインストールし、新しいバージョンをインストールすることでした。
pip uninstall tabula
pip install tabula-py
実行可能ファイル.pyを作成します
pdftocsv.pyと呼ぶ実行可能ファイル.pyを作成し、Downloads / eltiempoフォルダーに配置します。これは、次のコードを含むファイルです。
import tabula
# Extaer los datos del pdf al DataFrame
df = tabula.read_pdf("inforatge.pdf")
# lo convierte en un csv llamdo out.csv codificado con utf-8
df.to_csv('out.csv', sep='\t', encoding='utf-8')
読み取るPDFはinforatge.pdfと呼ばれ、出力はout.csvと呼ばれ、作業中のフォルダーに残ります。
変換する実行可能ファイルとPDFの両方があるディレクトリに移動します。 あなたが私たちにファイルを見つけることができないと言うならば、それは重要です。
cd Descargas/eltiempo
このディレクトリには、作成した.pyファイルであるPDFがあり、必要なcsvが返されます。
コードを実行します
python pdftocsv.py
私はpythonを使用していることに注意してください。つまり、失敗したpython2ではなくpython3で実行するように指示しています。 そして、それがエラーを返さなければ、それはそれです、我々はすでにそれを持っています。
ランタイム制御のために、ファイルにさらに3行を追加しました。 最後に、pdftocsv.pyファイルを次のように残しました
import tabula
import time
start_time = time.time()
df = tabula.read_pdf("inforatge.pdf")
df.to_csv('out.csv', sep='\t', encoding='utf-8')
print("--- %s seconds ---" % (time.time() - start_time))
Tabulaのその他のオプション
私たちができることのより多くの例。 多くのオプションがあります、私が残した公式のGithubリポジトリを通過するのが最善です
# Leer PDF remotos y convertirlos en DataFrame
df2 = tabula.read_pdf("https://github.com/tabulapdf/tabula-java/raw/master/src/test/resources/technology/tabula/arabic.pdf")
# Convertir un PDF en CSV
tabula.convert_into("test.pdf", "output.csv", output_format="csv")
そして間違いなく、ディレクトリ内のすべてのPDF、JSONなどのファイルを変換するための最も便利なもののXNUMXつです。
tabula.convert_into_by_batch("input_directory", output_format='csv')
これにより、他の方法では長くて退屈なタスクを自動化できます。 結局、これがこのライブラリを使用する理由のXNUMXつです。
PDFをオンラインで優れたものに変換する
ファイルを変換したり、テーブルからPDFからExcel、Librecalcなどにデータを抽出したりするだけの場合は、それほど複雑にする必要はありません。 これを行うために利用できるツールがあり、インストールするものとオンラインで仕事をするためのものがあります。
私はこれらXNUMXつのオンラインツールを試しましたが、非常にうまく機能します。
- https://www.pdftoexcel.com/es
- https://www.pdftoexcelonline.com/es/正常に動作しますが、ドキュメントをメールで送信します
これは自動化された作業ではないため、これらのツールの調査は網羅的ではないことに注意してください。 興味があるかもしれない人のためだけにコメントします。
古典的な方法
そして、私たちは常に古典的な方法を持っています。最もずさんで高価ですが、最終的には、作業がほとんどない場合のオプションです。
PDFから表のセルをコピーして、スプレッドシートに貼り付けます。