eucalyのアイコン画像
eucaly 2024年01月28日作成 © MIT
セットアップや使用方法 セットアップや使用方法 閲覧数 217
eucaly 2024年01月28日作成 © MIT セットアップや使用方法 セットアップや使用方法 閲覧数 217

電気工事士学科試験過去問集の作成

電気工事士学科試験過去問集の作成

こんにちは、ゆうかりです。
このたび、無事?に、電気工事士2種の試験に受かりました。
つきましては、オイラが学科試験勉強のために使った、過去問集PDFを作成する適当スクリプトを共有します。

電気工事士学科試験の問題構造

学科試験の過去問は、電気技術者試験センターが公表しております。
https://www.shiken.or.jp/answer/index_list.php?exam_type=50

まあこれ、問題と解答のPDFが別なので、オイラはTACさんの過去問PDFを使いました。
https://www.tac-school.co.jp/kouza_denkikoujisi/denkikoujisi_kakomon.html
TACさんの過去問PDFは、問題の最後のページに解凍がくっついている構造です。

で、問題ですが。
表紙や注意事項、一般問題、配線図、及び解答の順番になっています。
TACさんのページに公開されている、平成21年度から令和5年度まで、ページ数も含め、問題構造は変わりません。

過去問集PDFの作りざま

一般問題、配線図、解答をそれぞれまとめたPDFを作り、PDF各ページの左上に、元のファイル名を記載する方向で。

ページの例はこんな感じ。
キャプションを入力できます
一般問題、174ページあります、やりほうだい!。

つかいかた

まあそれぞれ印刷して、解いてみて答え合わせする感じで。
オイラは、一般問題を2Nアップ(2ページを1ページにまとめる)、配線図はそのまま、解答はPC画面表示で勉強していきました。
だいたい1~2周すれば、まあなんとなくコツ的なものはつかめるかと思います。

スクリプト

・ベースとなる問題解答PDFは、スクリプトと同じフォルダに突っ込む
・あらかじめサブフォルダ「kiridashi」を作っておく
・以下の3つのスクリプトを実行すると、kiridashiフォルダ内にPDFが3つできる
・それぞれのスクリプトの違いは、PDFファイルのページコピーの位置が違うだけ

・PyMuPDFライブラリを使ってます
 pip install PyMuPDF
 でセットアップできまーす

kiridashi1.py

import glob import os import fitz import sys basefiles = glob.glob('./*.pdf') doc3 = fitz.open() for basefile in basefiles: filenamerow = os.path.splitext(os.path.basename(basefile))[0] print (basefile) doc1 = fitz.open(basefile) doc2 = fitz.open() doc2.insert_pdf(doc1, from_page=4, to_page=9) for num in range(0,6): page = doc2.load_page(num) rc = page.insert_text( (40,40), # bottom-left of 1st char filenamerow, # the text (honors '\n') fontname="helv", # the default font rotate=0, # also available: 90, 180, 270 ) doc3.insert_pdf(doc2) targetfilename = 'kiridashi/zenbu.pdf' doc3.save(targetfilename) sys.exit()

kiridashi2.py

import glob import os import fitz import sys basefiles = glob.glob('./*.pdf') doc3 = fitz.open() for basefile in basefiles: filenamerow = os.path.splitext(os.path.basename(basefile))[0] print (basefile) doc1 = fitz.open(basefile) doc2 = fitz.open() doc2.insert_pdf(doc1, from_page=10, to_page=12) doc2.insert_pdf(doc1, from_page=14, to_page=14) for num in range(0,4): page = doc2.load_page(num) rc = page.insert_text( (40,40), # bottom-left of 1st char filenamerow, # the text (honors '\n') fontname="helv", # the default font rotate=0, # also available: 90, 180, 270 ) doc3.insert_pdf(doc2) targetfilename = 'kiridashi/zenbu2.pdf' doc3.save(targetfilename) sys.exit()

kiridashi3.py

import glob import os import fitz import sys basefiles = glob.glob('./*.pdf') doc3 = fitz.open() for basefile in basefiles: filenamerow = os.path.splitext(os.path.basename(basefile))[0] print (basefile) doc1 = fitz.open(basefile) doc2 = fitz.open() lastpage = doc1.page_count - 1 doc2.insert_pdf(doc1, from_page=lastpage, to_page=lastpage) for num in range(0,1): page = doc2.load_page(num) rc = page.insert_text( (40,40), # bottom-left of 1st char filenamerow, # the text (honors '\n') fontname="helv", # the default font rotate=0, # also available: 90, 180, 270 ) doc3.insert_pdf(doc2) targetfilename = 'kiridashi/zenbu_kotae.pdf' doc3.save(targetfilename) sys.exit()

がんばって!

IoT的なアレには親和性の高い電気工事士です、が。
オイラは技能試験1回落ちてます・・・。
いやあ、手が遅くて、間に合いませんでした、、、。

電気の基礎の振り返りや学習にも至適なので、ご興味があれば是非!。

eucalyのアイコン画像
いつも、てきとうです
  • eucaly さんが 2024/01/28 に 編集 をしました。 (メッセージ: 初版)
ログインしてコメントを投稿する