はじめに
一般に、使用するデータが CSV または JSON 形式である必要はありません。データは表形式で PDF ファイルに保存できます。最も簡単なケースとして、テーブルをコピーしてスプレッドシートまたはテキスト エディタに貼り付けることができます。ただし、同じ PDF 内に同様の構造を持つ複数のテーブルを作成できる場合もあります。このような場合、これらのテーブルを個別にコピーして貼り付ける必要があり、作業が面倒になります。
ただし、この退屈な作業を軽減するために、Python ではオープンソース ライブラリ (別名: ライブラリ) が提供されています。 テーブルパイ これにより、ユーザーは複数のテーブルを個別に抽出できます。次のチュートリアルでは、表とその機能について学びます。
タブラとは何ですか?
Tabular は tabula-java の基本的なラッパーで、ユーザーがテーブルを抽出し、PDF ファイルをデータ フレームまたは JSON に直接変換できるようにします。 Python プログラミング言語 。ユーザーは PDF から表を抽出し、TSV、CSV、または JSON 形式のファイルに変換することもできます。
Tabula は、グラフィカル ユーザー インターフェイス (GUI) アプリケーションに基づいたツールです。しかし、 テーブル-Java は、コマンドライン ユーザー インターフェイス (CUI) に基づくツールです。 tabula-java は Ruby 、 R 、 NodeJS のバインディングを提供しますが、 Python のバインディングは提供しません。そこで、開発者は次の概念を導入しました。 テーブルパイ Python バインディングを提供します。
ここで、Tabula を誰が使用するのか、そしてどのようにインストールできるのかを理解しましょう。
npどこ
Tabula を利用するのは誰ですか?
Tabula は、調査報道を強化するためにあらゆる規模の報道機関で使用されている強力なツールです。これら 報道機関 ロンドン・タイムズ、プロパブリカ、フォーリン・ポリシー、ニューヨーク・タイムズ、ラ・ナシオン(アルゼンチン)、セントポール(ミネソタ)のパイオニア・プレスです。
SchoolCuts.org などの草の根組織もあり、不格好な文書を人間に優しい公共リソースに変換するために Tabula に依存しています。
上記とは別に、Tabula を利用して PDF レポートを Excel スプレッドシート、CSV、JSON 形式のファイルに変換し、分析やデータベース アプリケーションの目的で使用する他の背景を持つ研究者もいます。
Python での表の実装
Tabula について少し説明したら、Python での実装を理解しましょう。
ライブラリのインストール
以来 テーブルパイ は Python のオープンソース ライブラリなので、ここでは ピップ インストーラーを使用してライブラリをインストールします。
$ pip install tabula-py
ライブラリのインポート
インストールが完了したら、以下に示すようにライブラリをインポートするだけで検証できます。
import tabula
プログラムが インポートエラー 、パッケージを再インストールすることをお勧めします。
の テーブルパイ ライブラリは、PDF ファイルの読み取り、PDF ファイルの特定のページの表の読み取り、PDF ファイルの同じページの複数の表の読み取り、PDF ファイルを直接 CSV ファイルに変換するなど、さまざまな機能を提供します。
オブジェクトから jsonobject java
まずはPDFファイルを読んでみましょう
PDFファイルを読む
の テーブルパイ このライブラリを使用すると、ユーザーは、として知られる関数を使用して PDF ファイルを読むことができます。 read_pdf() 関数。
構文:
obj = tabula.read_pdf(filename, args[])
パラメーター:
ファイル名: の ファイル名 パラメータは PDF ファイルの名前です。からデータを読み取りたいと考えています。
次の PDF データ テーブルを pandas データ フレームに変換してみましょう。
ファイル名: marksheet_table.py
Excelで在職期間を計算する
ページ1
名前 | 英語 | 物理 | 化学 | 生物学 | 合計 |
---|---|---|---|---|---|
あ | 86 | 54 | 65 | 83 | 288 |
B | 56 | 4つ。 | 80 | 55 | 236 |
C | 3.4 | 66 | 73 | 90 | 263 |
D | 77 | 75 | 46 | 3.4 | 232 |
そして | 74 | 82 | 55 | 77 | 288 |
F | 69 | 76 | 82 | 46 | 273 |
G | 53 | 33 | 29 | 4つ。 | 160 |
H | 70 | 41 | 67 | 23 | 201 |
私 | 80 | 43 | 88 | 28 | 239 |
J | 90 | 37 | 4つ。 | 71 | 243 |
K | 98 | 55 | 88 | 81 | 322 |
L | 90 | 54 | 67 | 37 | 248 |
M | 87 | 76 | 88 | 54 | 305 |
N | 86 | 69 | 82 | 66 | 303 |
○ | 67 | 74 | 54 | 65 | 260 |
P | 75 | 96 | 53 | 67 | 291 |
Q | 4つ。 | 87 | 80 | 4つ。 | 257 |
R | 44 | 66 | 49 | 78 | 237 |
S | 78 | 39 | 78 | 80 | 275 |
T | 56 | 54 | 76 | 86 | 273 |
で | 43 | 90 | 64 | 77 | 274 |
で | 95 | 88 | 66 | 55 | 304 |
で | 64 | 67 | 86 | 80 | 297 |
バツ | 82 | 56 | 4つ。 | 65 | 248 |
そして | 79 | 65 | 70 | 54 | 268 |
と | 83 | 54 | 40 | 75 | 252 |
以下に、PDF からデータを抽出する方法を示す例を示します。
例:
# importing the library import tabula # address of the file myfile = 'marksheet_table.pdf' # using the read_pdf() function mytable = tabula.read_pdf(myfile, pages = 1) # printing the table print(mytable[0])
出力:
Name English Physics Chemistry Biology Total 0 A 86 54 65 83 288 1 B 56 45 80 55 236 2 C 34 66 73 90 263 3 D 77 75 46 34 232 4 E 74 82 55 77 288 5 F 69 76 82 46 273 6 G 53 33 29 45 160 7 H 70 41 67 23 201 8 I 80 43 88 28 239 9 J 90 37 45 71 243 10 K 98 55 88 81 322 11 L 90 54 67 37 248 12 M 87 76 88 54 305 13 N 86 69 82 66 303 14 O 67 74 54 65 260 15 P 75 96 53 67 291 16 Q 45 87 80 45 257 17 R 44 66 49 78 237 18 S 78 39 78 80 275 19 T 56 54 77 86 273 20 U 43 90 64 77 274 21 V 95 88 66 55 304 22 W 64 67 86 80 297 23 X 82 56 45 65 248 24 Y 79 65 70 54 268 25 Z 83 54 40 75 252
説明:
上の例では、必要なライブラリをインポートし、PDF データ ファイルのアドレスを格納する変数を定義しました。次に使用したのは、 read_pdf() PDF からデータを読み取り、ユーザーのために印刷する機能。その結果、データテーブルは正常に読み取られました。
注: 私たちは、 ページ read_pdf() 関数のパラメータを使用して、指定したページからデータを読み取ります。
特定のページ、たとえばページ番号 2 から表を印刷する別の例を考えてみましょう。
例:
# importing the library import tabula # address of the file myfile = 'marksheet_table.pdf' # using the read_pdf() function mytable = tabula.read_pdf(myfile, pages = 2) # printing the table print(mytable[0])
出力:
Name Final Scores 0 A 288 1 B 236 2 C 263 3 D 232 4 E 288 5 F 273 6 G 160 7 H 201 8 I 239 9 J 243 3 D 232 4 E 288 5 F 273 6 G 160 7 H 201 8 I 239 9 J 243 10 K 322 11 L 248 12 M 305 13 N 303 14 O 260 15 P 291 16 Q 257 17 R 237 18 S 275 19 T 273 20 U 274 21 V 304 22 W 297 23 X 248 24 Y 268 25 Z 252
説明:
上の例では、前と同じ手順に従いました。ただし、私たちが割り当てたのは、 ページ パラメータを 2 に設定し、指定されたページの最初の表を印刷します。その結果、2 ページ目のインデックス 0 の表が正常に印刷されました。
ここで、PDF データ ファイルの同じページに複数の表がある場合に何が起こるかを理解しましょう。
PDF ファイルの同じページ上の複数の表の処理
として知られる追加パラメータを使用して、同じテーブル上で複数のテーブルを処理できます。 複数のテーブル。 の 複数のテーブル パラメータはブール値を取ります。 read_pdf() この関数は、true の場合は複数のテーブルを独立したテーブルとして読み取り、false の場合は複数のテーブルを 1 つのテーブルとして読み取ります。
mysql ユーザーの作成
複数のテーブルを独立したテーブルとして読み取る方法を示す次の例を考えてみましょう。
例:
# importing the library import tabula # address of the file myfile = 'marksheet_table.pdf' # using the read_pdf() function mytable = tabula.read_pdf(myfile, pages = 2, multiple_tables = True) # printing the table print(mytable[0]) print(mytable[1])
出力:
Name Final Scores 0 A 288 1 B 236 2 C 263 3 D 232 4 E 288 5 F 273 6 G 160 7 H 201 8 I 239 9 J 243 10 K 322 11 L 248 12 M 305 13 N 303 14 O 260 15 P 291 16 Q 257 17 R 237 18 S 275 19 T 273 20 U 274 21 V 304 22 W 297 23 X 248 24 Y 268 25 Z 252 Name Position 0 K I 1 M II 2 V III 3 N IV 4 W V
説明:
次の例では、必要なライブラリを再度インポートし、PDF ファイルのアドレスを格納する変数を定義しています。次に使用したのは、 read_pdf() 機能が含まれており、 複数のテーブル パラメータを次のように設定します 真実 。次に、PDF ファイルの 2 ページ目にある複数の表を個別に印刷しました。
ここで、複数のテーブルを 1 つのテーブルとして読み取る方法を理解するための例を考えてみましょう。
例:
# importing the library import tabula # address of the file myfile = 'marksheet_table.pdf' # using the read_pdf() function mytable = tabula.read_pdf(myfile, pages = 2, multiple_tables = False) # printing the table print(mytable[0])
出力:
Name Final Scores 0 A 288 1 B 236 2 C 263 3 D 232 4 E 288 5 F 273 6 G 160 7 H 201 8 I 239 9 J 243 10 K 322 11 L 248 12 M 305 13 N 303 14 O 260 15 P 291 9 J 243 10 K 322 11 L 248 12 M 305 13 N 303 14 O 260 15 P 291 16 Q 257 17 R 237 18 S 275 19 T 273 20 U 274 21 V 304 22 W 297 23 X 248 24 Y 268 25 Z 252 26 Name Position 27 K I 28 M II 29 V III 30 N IV 31 W V
説明:
次の例では、 複数のテーブル パラメータを 間違い 。その結果、2 ページ目にある表は 1 つの表として扱われます。
PDFファイルを直接CSVファイルに変換する
を使用して、表形式のデータを含む PDF ファイルを CSV ファイルに直接変換できます。 Convert_into() のメソッド 表 図書館。
構文:
tabula.convert_into('filename.pdf', 'newfilename.csv', args[])
PDF ファイルから CSV ファイルへの変換を示す次の例を考えてみましょう。
MVC Java
例:
# importing the library import tabula # address of the file myfile = 'marksheettable.pdf' # using the read_pdf() function tabula.convert_into(myfile, 'marksheet.csv') print('The PDF file has been converted successfully.')
出力:
'pages' argument isn't specified.Will extract only from page 1 by default. The PDF file has been converted successfully.
説明:
上の例では、必要なライブラリを再度インポートし、PDF ファイルのアドレスを含む変数を定義しました。次に使用したのは、 Convert_into() メソッドを使用して PDF ファイルを CSV ファイルに変換し、成功メッセージを出力しました。
さらに、プログラムが次のようなステートメントを返したこともわかります。 「ページ」 引数が指定されていません。したがって、デフォルトでは、ページ 1 にある表が抽出されます。