"中小企業にプログラミングを!"
簡単なプログラミングで効率アップ!プログラマでもない私が必要に迫られ業務改善とともにスキルをあげるシリーズ
概要
長年続いている会社では紙での資料が山積みになっていがち。紙の資料は検索性も低いため、探す時間に無駄が多すぎる。外から来た身からすると、この無駄に時間を費やすことが泣ける。けど泣いても解決しないので、なんとか解決したい。よし、電子化だ。電子化はスキャナで読み込めばいいのだが、読み込んだファイルに個別の名前をつけるマウス操作&コピペがいちいち大変、、、。ということでpythonを使って名前付け作業を楽にしてみた。
全体像
1枚ものの図面のPDF化を想定したものになっているので、ファイルはそれぞれ1ページで、ファイル名は"図番_付加情報_付加情報.pdf"となるようにしています。
フォルダ構造
プログラムとファイル名リストのcsvは同じ階層、PDFファイルはpdfsフォルダに入れます
/
┣list.csv
┣rename.py
┗pdfs
┣20191008000000001.pdf
┣20191008000000002.pdf
┣20191008000000003.pdf
...
┗20191008000000999.pdf
作業の順番
- 紙書類をスキャンしてPDF化する
- スキャンした順序で付けたいファイル名をリスト化する
- コード実行
コード
# coding: utf-8
import csv #csvから情報を得るためのライブラリ
import os #ファイル名変更するためのライブラリ
import glob #フォルダの中身を取得するためのライブラリ
# csvファイルの読み込み
f = open('list.csv', 'r', encoding="utf-8-sig")
rows = csv.reader(f)
# PDFファイルの所在の設定と配列化
path = "./pdfs/"
pdfs = list(glob.glob(path + "*.pdf"))
# 名前順(=読み込んだ順)に並び替え
sorted_pdfs = sorted(pdfs)
# row[0]にはcsvのA列、row[1]にはB列、row[2]にはC列が入ります
# もし各列にデータがあればその情報をファイル名に付けます。
for row, pdf in zip(rows, sorted_pdfs):
file_title = path
if row[0] != "":
file_title += row[0] + '_'
if row[1] != "":
file_title += row[1]
if row[2] != "":
file_title += '_' + row[2]
file_title += ".pdf"
os.rename(pdf, file_title) # 元の名前から新しい名前に付け替える関数
print(os.path.exists(file_title)) # 正しく付け替えれたらTrueを表示します
f.close()
あとがき
今回私のケースは紙書類が1000枚以上あってので、プログラムを実行するまでの紙のスキャンとリスト化がめっちゃ大変でした。長年続いてきた中小企業って昔ながらのやりかたを継承し続けているので、改善余地が相当あるように見えます。このあたりを効率化できたら作業効率性が相当違うし、昨今の人手不足問題もいくばくか解消できるんじゃないかと思います。今後も記事を書いていきたいと思うので、似たような境遇の人の参考になれば嬉しいです。