修正:PDFMinerでpdfからtxtを抽出する。(python、PDFMiner.six、エネルギー基本計画)
今回はこのテキストデータを整形します。
元データ
エネルギー基本計画(案)平成30年5月16日
http://www.enecho.meti.go.jp/committee/council/basic_policy_subcommittee/pdf/basic_policy_subcommittee_002.pdf
抽出したテキスト(一部)
はじめに 2011年3月の東日本大震災及び東京電力福島第一原子力発電所事故を受けて、政府は、2014年4月、2030年を念頭に、第4次エネルギー基本計画を策定し、原発依存度の低減、化石資源依存度の低減、再生可能エネルギーの拡大を打ち出した。 第4次エネルギー基本計画の策定から4年、2030年の計画の見直しのみならず、2050年を見据えたパリ協定への対応、より長期には化石資源枯渇に備えた超長期の対応、変化するエネルギー情勢への対応など、今一度、我が国がそのエネルギー選択を構想すべき時期に来ている。このため、今回のエネルギー基本計画の見直しは、2030年の長期エネルギー需給見通し(2015年7月経済産業省決定。以下「エネルギーミックス」という。)の実現と2050年を見据えたシナリオの設計で構成することとした。 エネルギー選択を構想するに際して、常に踏まえるべき点がある。 第一に、東京電力福島第一原子力発電所事故の経験、反省と教訓を肝に銘じて取り組むことが原点であるという姿勢は一貫して変わらない。 東京電力福島第一原子力発電所事故で被災された方々の心の痛みにしっかりと向き合い、寄り添い、福島の復興・再生を全力で成し遂げる。政府及び原子力事業者は、いわゆる「安全神話」に陥り、十分な過酷事故への対応ができず、このような悲惨な事態を防ぐことができなかったことへの深い反省を一時たりとも放念してはならない。発生から約7年が経過する現在も約2.4万人の人々が避難指示の対象となっている。原子力損害賠償、除染・中間貯蔵施設事業、廃炉・汚染水対策や風評被害対策などへの対応を進めていくことが必要である。また、使用済燃料問題、最終処分問題など、原子力発電に関わる課題は山積している。これらの課題を解決していくためには、事業者任せにするのではなく、国が前面に立って果たすべき役割を果たし、国内外の叡智を結集して廃炉・汚染水問題を始めとする原子力発電の諸課題の解決に向けて、予防的かつ重層的な取組を実施しなければならない。 東京電力福島第一原子力発電所事故を経験した我が国としては、2030年のエネルギーミックスの実現、2050年のエネルギー選択に際して、原子力については安全を最優先し、再生可能エネルギーの拡大を図る中で、可能な限り原発依存度を低減する。 第二に、戦後一貫したエネルギー選択の思想はエネルギーの自立である。膨大なエネルギーコストを抑制し、エネルギーの海外依存構造を変えるというエネルギー自立路線は不変の要請である。今回のエネルギー選択には、これにパリ協定\x0c 3 発効に見られる脱炭素化への世界的なモメンタムが重なる。 こうした課題への取組は、いつの日か化石資源が枯渇した後にどのようにエネルギーを確保していくかという問いへの答えにつながっていく。抽出したテキストでは、改行がスペースになっていたり、ページ番号が入っていたりします(最後から2番目の文章、「パリ協定」と「発行」の間に"\x0c 3 "という形でページ番号が入っています)
これを、正規表現(re)を使って整えていきます。正規表現については、下記のページが参考になりました。
忘れっぽい人のための正規表現チートシート
超絶簡単 Pythonでの正規表現
まずは正規表現モジュール、reをインポートします。データは、前回pdfから抽出したテキスト(str)を使います。
import re str出力(一部)
' エネルギー基本計画(案) 平成30年5月16日 \x0c 1 目次 はじめに・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・2 第1章 構造的課題と情勢変化、政策の時間軸 第1節 我が国が抱える構造的課題・・・・・・・・・・・・・・・・・・・・・・・・・・4 1.資源の海外依存による脆弱性 2.中長期的な需要構造の変化(人口減少等) 3.資源価格の不安定化(新興国の需要拡大等) 4.世界の温室効果ガス排出量の増大 第2節 エネルギーをめぐる情勢変化・・・・・・・・・・・・・・・・・・・・・・・・・7 1.脱炭素化に向けた技術間競争の始まり 2.技術の変化が増幅する地政学的リスク 3.国家間・企業間の競争の本格化 第3節 2030年エネルギーミックスの実現と2050年シナリオとの関係・・・・・・10
str2=re.split("\x0c 2\s+",str)
str2=str2[1]
表紙と目次は必要ないので、2ページ目までを削除します。"\x0c 2"がページ番号なので、re.splitでこの記号で文字列を分割します。
\sはスペース、改行などの空白文字です。ページ番号記号の後ろに空白文字が1個以上含まれているという指定になります。分割された文字列はリストに格納されていて、始めの部分(表紙と目次)が[0]、残りが[1]に入っているので、[1]のみを取り出しました。
str3=re.sub(r"\x0c(\s\d+|\d+)\s+","",str2) str3
ページ番号の記号を消します。re.subで正規表現での置換です。\dは数字、|はor(または)です。
"\x0c"のページ番号記号の後に、空白文字または空白文字+数字、その後に空白文字が続いた場合は、""で置換する(削除)という意味になります。
str4=re.split("\x0c",str3)
str4=str4[0]
文章の最後に委員名簿とこれまでの経緯が入っていますが、これも必要ないので削除します。本文の最後になぜかページ番号記号だけが残っていたので、これを目印に分割し、最初の部分だけを取り出しました。
str5=re.sub("\s","\n",str4)
str6=re.sub(r"([a-zA-Z])\n",r"\1 ",str5)
print(str6)
半角スペースが改行を表しているようなので、空白文字を改行に変換します。\nが改行です。ただし、数箇所にある英文(Energy Securityなど)の間のスペースも改行に変換されてしまうので、2行目でこれを戻しています。
[a-zA-Z]でアルファベット(大文字、小文字を含む)です。()で囲むことでグループ化され、\1、\2などとして後で参照できます。この場合は置換後の文字列として"\1 "で元の文字+スペースに設定しています。
str7=re.sub(r"([①-⑳])\n",r"\1",str6)
str8=re.sub(".\n",".",str7)
print(str8)
同様に、丸囲み数字や、項目文字(1.など)の後にスペースが入っており、改行に変換されたものがあったので、こちらも改行を削除して戻します。
f = open('enegy_plan.txt','w')
f.write(str8)
f.close()
最後にテキストファイルとして保存して終了です。ページ番号は削除され、改行もほぼ復元できたようです。思ったよりも手間がかかりました。
テキストファイル(一部)
はじめに 2011年3月の東日本大震災及び東京電力福島第一原子力発電所事故を受けて、政府は、2014年4月、2030年を念頭に、第4次エネルギー基本計画を策定し、原発依存度の低減、化石資源依存度の低減、再生可能エネルギーの拡大を打ち出した。 第4次エネルギー基本計画の策定から4年、2030年の計画の見直しのみならず、2050年を見据えたパリ協定への対応、より長期には化石資源枯渇に備えた超長期の対応、変化するエネルギー情勢への対応など、今一度、我が国がそのエネルギー選択を構想すべき時期に来ている。このため、今回のエネルギー基本計画の見直しは、2030年の長期エネルギー需給見通し(2015年7月経済産業省決定。以下「エネルギーミックス」という。)の実現と2050年を見据えたシナリオの設計で構成することとした。 エネルギー選択を構想するに際して、常に踏まえるべき点がある。 第一に、東京電力福島第一原子力発電所事故の経験、反省と教訓を肝に銘じて取り組むことが原点であるという姿勢は一貫して変わらない。 東京電力福島第一原子力発電所事故で被災された方々の心の痛みにしっかりと向き合い、寄り添い、福島の復興・再生を全力で成し遂げる。政府及び原子力事業者は、いわゆる「安全神話」に陥り、十分な過酷事故への対応ができず、このような悲惨な事態を防ぐことができなかったことへの深い反省を一時たりとも放念してはならない。発生から約7年が経過する現在も約2.4万人の人々が避難指示の対象となっている。原子力損害賠償、除染・中間貯蔵施設事業、廃炉・汚染水対策や風評被害対策などへの対応を進めていくことが必要である。また、使用済燃料問題、最終処分問題など、原子力発電に関わる課題は山積している。これらの課題を解決していくためには、事業者任せにするのではなく、国が前面に立って果たすべき役割を果たし、国内外の叡智を結集して廃炉・汚染水問題を始めとする原子力発電の諸課題の解決に向けて、予防的かつ重層的な取組を実施しなければならない。 東京電力福島第一原子力発電所事故を経験した我が国としては、2030年のエネルギーミックスの実現、2050年のエネルギー選択に際して、原子力については安全を最優先し、再生可能エネルギーの拡大を図る中で、可能な限り原発依存度を低減する。 第二に、戦後一貫したエネルギー選択の思想はエネルギーの自立である。膨大なエネルギーコストを抑制し、エネルギーの海外依存構造を変えるというエネルギー自立路線は不変の要請である。今回のエネルギー選択には、これにパリ協定発効に見られる脱炭素化への世界的なモメンタムが重なる。
参考:
資源エネルギー庁:エネルギー基本計画について
http://www.enecho.meti.go.jp/category/others/basic_plan/
忘れっぽい人のための正規表現チートシート
https://qiita.com/tossh/items/635aea9a529b9deb3038
超絶簡単 Pythonでの正規表現
http://yut.hatenablog.com/entry/20110204/1296750892
github:pdfminer/pdfminer.six
https://github.com/pdfminer/pdfminer.six
PDFMiner HP
修正:PDFMinerでpdfからtxtを抽出する。(python、PDFMiner.six、エネルギー基本計画) https://eneprog.blogspot.com/2018/05/pdfminerpdftxtpythonpdfminersix.html
0 件のコメント:
コメントを投稿