はじめに
PDF内の表データを取り出して、pandasで解析したりMarkDown形式でできないか調べてみた。pymupdf
というPythonライブラリ使う。
その他PythonでPDF処理できる内容については、別記事でまとめているので👇を参照。
目次
ライブラリ:pymupdf
pip install pymupdf
でライブラリを入手。このライブラリのfind_table()
を使う。参考にしたサイトは下記。ドキュメントから表の内容を抽出する方法 / Page.find_tables()。
使い方
PDFファイルを読み出して、ページ数、テーブル番号を指定すると、配列、DataFrame、MarkDownの形式に出力することができる。
コマンド | 内容 |
---|---|
pdf = pymupdf.open('ファイル名') | PDFファイルを読み出し |
tables=pdf[page]find_tables().tables | 指定したpageにテーブルがあればオブジェクトを出力する |
tables[table].extract() | 指定したtableを配列形式で出力する。 |
tables[table].to_pandas() | 指定したtableをPandasのDataFrame形式で出力する。 |
tables[table].to_markdown() | 指定したtableをMarkDown形式で出力する。 |
import pymupdf
pdf_file = input('PDFファイル名:')
pdf = pymupdf.open(pdf_file)
for page in pdf:
#表情報を確認
tables = page.find_tables().tables
#表があれば
if(tables):
print(f'{page=}/{len(tables)=}')
for table in tables:
# DataFrame形式
print(table.to_pandas())
# MarkDown形式
print(table.to_markdown())
# 配列形式
print(table.extract())
用途
例えば各企業のIR情報などはPDFで配信されているので、その表から情報を取得したり、下記のような統計サイトのPDF情報からデータを抽出するときに便利と思う。