pdfから表を抽出するライブラリを使っていた時の話。
tabulaを使っていたけど、表抽出って汎用的にやるのが難しいので、どうしてもターゲットになる表に対して、力業で読めるようにしてあげる必要がある。
以下のようなイメージで取得したところ、コメントにあるように、空セルのみの表が取れるケースが出てしまった。
import tabula
dfs = tabula.read_pdf(INPUT_P,
multiple_tables=True,
area=[5, 5, 95, 95],
relative_area=True,
lattice=True,)
for index_table, df in enumerate(dfs):
# このままでは、5x5ですべて空セルの表がdfとして出力されてしまったりした
df_tabula.to_csv("output_" + str(index_table) + ".csv")
※パラメータは適当
空セルと記載したが、pandasにおいては欠損値NaNとして扱われているため、全セルがNaNかどうかで判定しました。
・修正後
import tabula
dfs = tabula.read_pdf(INPUT_P,
multiple_tables=True,
area=[5, 5, 95, 95],
relative_area=True,
lattice=True,)
for index_table, df in enumerate(dfs):
if df.size < 1 or df.size == df.isnull().values.sum():
continue
df_tabula.to_csv("output_" + str(index_table) + ".csv")
index_tableが飛び飛びになるのは別途考える。
コメント