#前書き
pdfで保存された個人情報満載の表をnumberで編集できるようにしたいと思って、やり方をググると大体一度ワードに変換するとか Adobe Acrobat Reader(有料版)で変換するとか言われました。
私はwordもAdobe Acrobat Readerも持っていないので困りましたが、検索で出てきたやり方を組み合わせることで変換ができたので、自分向けに記録したものを公開します。
###前提
1.Macユーザー
2.jupyter notebookユーザー
3.pandasがinstallされている
(pandasはpip3 install pandasで簡単にインストールできます)
4.homebrewが入っている
#使ったもの
1.tabula
2.pandas
#手順
###1.tabulaのインストール
ターミナルで以下を実行します。
pip3 install tabula
###2.javaの環境の構築(途中まで)
tabulaはjava環境を必要とするので、その構築をします。
具体的には、
####2-1.homebrewでjavaのインストール
brew install java11
と打ち込むだけです。
参考:https://qiita.com/ponsuke0531/items/9be8dee67a91c6c78d4f
####2.2java環境の構築とpathの設定
https://qiita.com/suke_masa/items/f9af0fb84ad9447ae961
をみながら環境の構築を行います。私はこちらのJDKというものをインストールしました。
###3.jupyter でtabulaを使って読み込む
#必要なモジュールのインポート
import pandas as pd
import tabula
from tabula import read_pdf
from tabula import convert_into
convert_into("yomikomi.pdf","kakidashi.csv", stream=True , output_format="csv", pages='all')
#yomikomi.pdf:読み込みたいpdf
#kakidashi.csv:書き出すcsvファイル
#streamは罫線だったと思われる
参考:https://bunkyudo.co.jp/python-tabula-01/
###4.読み込んだcsvファイルでいらない行を削る
今回は欠損値が一つでもある行を消したかったので、
https://qiita.com/yuta-38/items/122e607770b88d445d2e
を参考に、jupyterで以下を書きました。
#必要なモジュールのインポート
import pandas as pd
#ファイルの読み込み(さっきcsv形式にしたファイル)
df = pd.read_csv('kakidashi.csv')
#欠損値が一つでもある行を消したものをdddと定義する
ddd = df.dropna(how='any').dropna(how='all', axis=1)
#dddを"hozon.vsv"という名前で保存
ddd.to_csv("hozon.csv", index=None)
終わり。
##その他
基本的に本記事は冒頭に述べたとおり、いろんなところからコピペしたものを組み合わせているスクリプトな訳ですが、コピペ元に著作権が発生するかを考えておりました。
(例えば
brew install java11
に著作権は発生するのか?)
ただこれで著作権侵害していると判断される場合、qiitaの記事は大体全て著作権侵害してることに気がしますので、参考にした記事を明記するにとどめ、公開いたします。
書く途中に参考にしたサイト:
https://a7xche.hatenablog.com/entry/2020/04/11/213756