ご相談・お問い合わせ
2 分で読むことができます

DX化(データスクレイピング)のための手法のご紹介①

執筆者 Ajih 更新日時 2021年5月12日

初めまして。Ajihです。


社会人になってから今までずっとソフトウェア業界で仕事をしていましたが、データエンジニアではありませんでした。
インサイトラボに入社して初めてデータベースやデータビジュアライゼーション等のデータに関わる業務に携わっています。
また、地域の課題解決など私としては業務内容が新鮮で今の業務を楽しんでいます。
これから、少しでも新潟のDX化(デジタル化)に貢献出来ればと思っています。

今回の記事は、表形式のPDFデータをCSV(データベースに取り込める形)に変換する手法をご紹介したいと思います。
CSVとは、エクセルでも表示可能でデータベースに取り込むことが出来るデータ形式です。
※テキスト形式のPDF(エクセル、ワード等から作成したPDF)が対象です。

事前準備は以下です。

  • ghostscriptをインストール
  • python3をインストール
  • コマンドプロンプトを起動し、以下のコマンドでcamelotと付随するモジュールをインストール
pip install -r requirements.txt

requirements.txtの内容

camelot-py==0.8.2

cffi==1.14.3

chardet==3.0.4

click==7.1.2

cryptography==3.2.1

et-xmlfile==1.0.1

jdcal==1.4.1

numpy==1.19.4

opencv-python==4.4.0.46

openpyxl==3.0.5

pandas==1.1.4

pdfminer.six==20201018

pycparser==2.20

PyPDF2==1.26.0

python-dateutil==2.8.1

pytz==2020.4

six==1.15.0

sortedcontainers==2.3.0 

事前準備はこれで完了です。

次にテストデータで以下のデータを用意します。

  • テストデータ.pdf(エクセルから変換したPDF)

テストデータ

プログラムは、こちらです。

import camelot

# ページ分のオブジェクトが返却される
tables = camelot.read_pdf("テストデータ.pdf", pages='all')

# テーブルのリストになっているので、リストから1つのテーブルを取り出す
for table in tables:
  df = table.df
    df.to_csv('テストデータ.csv', encoding='cp932')

このPythonプログラムをコマンドプロンプトから実行することで、表内のデータをCSVに変換することが出来ました。

  • テストデータ.csv

テストデータ(結果)

この方法を応用することで、各小学校のホームページに公開されている給食データのPDFから越後データプラットフォームにデータを取得しています。

Ajih

執筆者 Ajih

新潟県新潟市生まれ、大学を機に上京し就職。新潟へUターン。組み込み系のソフトウェアエンジニアとして十数年従事。データサイエンティストに興味を持ちINSIGHT LABに入社。子供と一緒に釣りにいくことは週末の楽しみ。釣りが趣味だからニックネームはアジ(Ajih)。

 

こちらの記事もおすすめです

2 分で読むことができます。

Twitterアカウントロック! ~解除までの道のり~

3 分で読むことができます。

ワールドカップを支えるテクノロジーとは?IMUとVAR技術について

3 分で読むことができます。

【DBpedia探索2】新潟県にある新幹線の駅を調べてみる