ゆるいブログだよーー!!!

人に向けて書いているようで、自分と対話してるだけ

PythonでPDF給与明細をデータ化 その2

久しぶりにPythonを使用する機会があったので、pdfminer.sixでpdfの表が読み込めずに撃沈していた給与明細のデータ化やります

前回は、pdfの文字を読みこもうとしていたのですが、 私の給与明細は明らかに表なので、今回はpdfの表を読みこむ方法を調べました

デデン! 「tabula」というキーワードがいっぱい出てきたのでこれを使います。 この記事に書かれてる感じで、私の表もデータ化したい qiita.com

ので、書かれている通りJavaをインストールします。 Javaの公式 https://www.java.com/ja/download/help/download_options_ja.html

オンラインインストールとオフラインインストールがあります。 特にオフラインでやる理由は無いのでオンラインでやります。 日本語でインストール方法書かれているので公式だけで完結する!うれしい!

ということでインストール完了

あとは、先程のQiitaの記事に書かれていた中からPDFを読みこんでくるこの数行を書けば

import pandas, tabula

target_file = "給与明細.pdf"
data_frames = tabula.read_pdf(target_file, lattice=True, pages='all')

for data_flame in data_frames:
    print(data_flame)
    print('★')

給与明細なので、載せられませんが表単位でデータが取れてるみたいです。 漢字の文字化けもしてないし、これなら使えそうです。 間はスペースだから、このデータを分けていけばいけそう? 次はとってきたデータを加工して扱いやすいようにしたいと思います!

PythonでPDF給与明細をデータ化 その1

前回、PyhtonをVSCodeで実行できるように設定しました。

sbsn4623.hatenablog.com

私がPythonに手を出した理由、それはPDFでしかダウンロードできない給与明細の計算がめんどくさいから!
CSVでくらい出してくれればいいのに、PDFなんだよ、なんなん!

という事で、給与明細に書かれていそうな「日本語(文章ではない)」「数字」が読み取れるライブラリ探しをします

テキストファイルじゃないデータの読み込みはしたことないので、どこまでぱっぱと出来るのか分かりませんが、表としても認識してくれるのでしょうか。

まあ、そこは後からいじればいいので、PDF読みこませてみたいと思います。


需給、ガイドライン、入荷及び価格の見通し等に関する情報:農林水産省

農林水産省の、令和4年2月の野菜生育表の表をお借りします。

あと、詳細は省きますが今回からターミナル実行じゃなくてジュピター使います
atmarkit.itmedia.co.jp



とりあえず、pdfminer.sixをインストールして、pdf読みこんでそのまま表示、、を試みましたが、農林水産省から借りてきた野菜の生育表からは何も読み取れませんでした。

コードを書くにあたって参考にさせてもらったサイトに書かれていたpdfファイルはちゃんと読みこんだので、pdfminerは表には向いてないかもしれない
self-development.info
pdfminer.sixではなく、開発停止しているらしい方を使用しているっぽいが、派生だと思うのでこれ以上の深堀はやめよう。

Pythonゼロ歳児ですし、私の給与計算だけに使うので、もう少し表の読み込みは簡単にできないのか!?と、、


まあ、最終的な調整で画像処理しなきゃいかんのかなーとはなんとなく思ってる。無駄にカラーだから。PDF給与明細(怨)
PDFの読み込みって、画像処理して読んでくれてると思ってるけどあってるのか?
んーー。読みこんだ文字列を力技で加工して欲しいデータを表示するぜ計画は難航。。

Pythonいれて、VSCodeで動かすよ

Pythonをインストールして、VSCodeで実行する!

人から教えてもらったけど手元にメモが無いので、手探りで実行環境つくる!

 

OS: Windows10

VSCodeはインストール済。記憶ないけど、Python拡張機能まではいってた。(なのにPythonインストールしてなかったのなぜ)

Pythonのインストール

 

www.python.org

公式のダウンロードからWindowsの最新ぽいやつをダウンロードする。

f:id:sbsn4623:20220219125921p:plain

特にカスタマイズしたいことは現状無いので、Install Now!な方でインストール

 

終わると「disable path length limit」って聞いてくる画面が出てきたので、それをクリック。

パスが長いと、実行できない制限の解除らしい。私はフォルダの中に入れまくるので解除しておいた。

詳しいことは、disable~で検索すると沢山でてきます。

 

Pythonのインストールはおわり。

 

VSCodeで実行

エクスプローラで実行したいところにフォルダ作ります。

右クリックからVSCode開きます

フォルダ内に.pyの適当なファイルつくります

f:id:sbsn4623:20220219132456p:plain

 

ターミナル起動して

f:id:sbsn4623:20220219132603p:plain

 

このサイトを参考に仮想環境を作成します

www.python.jp

 

> python -m venv .venv
pythonPythonのexeがある場所
最後の.venvは自分の好きな名前でいいけど、venvが無難っぽい

f:id:sbsn4623:20220219133415p:plain

 

さっき作ったpythonファイルの他に、.venvができてたら成功

f:id:sbsn4623:20220219134242p:plain

 

左下の「Python 3.10.2~」をクリックする

f:id:sbsn4623:20220219134523p:plain

 

画面上部にインタープリターを選択と表示されるので、★がついてる方を選択する。

(★はさっき作成した仮想環境)

f:id:sbsn4623:20220219135001p:plain

 

ターミナルを開きなおせば実行ができ....ない!!!!

f:id:sbsn4623:20220219174240p:plain

なんかエラー出た!!なんだこれ

& : このシステムではスクリプトの実行が無効になっているため、ファイル ***TestPython\.venv\Scripts\Activate.ps1 を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。

 

仮想環境はPowerShellスクリプト実行可能じゃないと動かないんですね~

totech.hateblo.jp

atmarkit.itmedia.co.jp

Restricted × × × 全てのスクリプトが実行禁止。PowerShellまたはWindows OSインストール直後のデフォルト設定(Windows Server 2012 R2を除く)

今はこれですね。デフォルト設定。

引用させていただいたブログによると、RemoteSignedか、Bypassがよいとか。

RemoteSigned × ローカルに保存されているスクリプトは実行可能。インターネットからダウンロードしたスクリプト(非ローカルのスクリプト)は、署名されているもののみが実行可能。Windows Server 2012 R2では、この設定がデフォルト
Bypass 警告やユーザーへの確認なしに、全てのスクリプトが実行可能

必要になったらBypassにするとして、今回はRemoteSignedにしようと思います。

パワーシェルを直で実行するわけじゃないので、Python実行毎に解除するのはあまりにも手間なので、全ユーザ一括変更の方で

 

1つ目の黄色い文字行が、仮想環境をつかって実行(venv内のPowerShellを実行)しようしてセキュリティポリシーに引っかかった

2つ目は、セキュリティポリシーの確認→全スクリプト実行不可

3つ目は、セキュリティポリシーを変更しようとして拒否された

4つ目は、オプションをつけて、3つ目にやろうとしたことをやって、無事セキュリティポリシー変更

5つ目で、再度セキュリティポリシーを確認して、変更されたことを確認

(この手順は全部、引用したブログに詳しく書いてあります。)

f:id:sbsn4623:20220219185838p:plain

 

ターミナルを再度開きなおすと、やったー!venvで実行されました!やったね

f:id:sbsn4623:20220219215925p:plain

 

これで、ここに好き放題ライブラリを投入できるぜ!!

 

> python ファイル名

f:id:sbsn4623:20220219220921p:plain

ちゃんと表示されたね!今回の目的は果たせた!

MarkDownとかで書けるんだね、、、コード書くなら今度からそうしよう)

ESETの更新

こんばんは

 

一年前にブログ更新して止まってますね

何もしてないです。。やっぱ作りたいもの明確にしないと続かねーです

それに、macのノートパソコン壊れたのか、充電器が壊れたのかウンともスンともいわないです

 

てことで実家にあった、デスクトップを持ってきました

でもセキュリティソフトが切れてる...!

という事で、更新しようと思ったのですが、今まで入っていたのが「5台を3年」のプランでして。。。

今そんな必要なくて、1台を3年で十分なので、Amazonでライセンスポチーして、ライセンス番号ゲットして、入力するだけだぜ!

なぜなら、ソフトはすでにインストールされているから!!

 

と思いきや、Amazonさんから教えてもらえるのは"購入コード"ってやつなんすよね

インストール済みのソフト内でも、web上でもいろんなページ見てみましたが、結局再インストールして、公式の手順通りに進めました

私が購入したのが「オンラインコード版」ってやつだから、、、(他のやつがどうかしらないけど、すぐに手に入れたかったから)

 

アンインストールを「アプリと機能」からしようと思ったらグレーアウトしてて一瞬案インストールできんのかと思ったしな(後から撮ったので日付は今日)

f:id:sbsn4623:20210522231635p:plain

アプリと機能

 

再インストールして、購入コードいれたらこの画面になる

f:id:sbsn4623:20210522230739p:plain

インストールできるようになった

 

購入コードが通れば、登録したメールアドレスに"製品認証キー"が届くので、あとはそれを使って正式にライセンス登録

 

あとはなんか頑張っているみたいなので放っておいてシャワーいってきます

f:id:sbsn4623:20210522232201p:plain

がんばれー

 

たぶん3年後の私が同じ理由で「なんでできんのじゃー!」って言いだす