あにまるブログ


「あにまるAIらぼ」はDjangoで作成しています
ラボクオリティなので、
コードのご利用などは自己責任でお願いします

2022年9月13日23:30, その他
選挙ポスター貼り

昨日、手紙を受け取りました。
いい手紙が届くのは嬉しいものですね、感謝。

少し前に、選挙のポスター貼りのお手伝いをさせてもらいました。
何もわからず、足を引っ張っちゃったなと反省したのを覚えています。

そこで、何かの参考になるかもしれないので、
「どうやったら上手くやれたか?」
と反省してみました。

【反省点】
・PDF のエクセル化ができなかった(手入力)
 PDF のエクセル化は後述します。

・わかりにくい場所はヤフー地図を使うべきだった(気づくのが遅かった)
 番地程度までをヤフー地図で検索するとハイライトしてくれます。
 グーグルマイマップはあまりあてにならないです。(番地まで入力ならまずまずの精度)

・脚立を用意すればよかった(途中からでも)
 数は少ないものの、けっこう高めの掲示板ありました。

【PDF のエクセル化〜グーグルマイマップ】
(急いで書いたのでミスがあったらごめんなさい)
以下の手順でやれば、手入力よりは手間が少ないと思います。

① Python 環境を整える(今回は Jupyter Lab でやります)

② Tesseract-OCR のインストール(環境に合った bit を選んでください)
 https://github.com/UB-Mannheim/tesseract/wiki#tesseract-installer-for-windows)
 パスは"C:\Program Files\Tesseract-OCR\tesseract.exe"です。
 ★ インストール途中の Select components to install: のところの
 Addtinal script data (download) と Addtional language data (download)
 を展開して、Japanese 関連の項目を5カ所チェックします。
 参考にさせてもらったサイト
 https://gammasoft.jp/blog/tesseract-ocr-install-on-windows/#download

③ pdf2image と pycor をインストール

!pip install pdf2image pyocr


④ PDF のエクセル化
 ★のあるところは、変更の必要がある可能性のある箇所です。
 「リスト化し不要な文字列を除去」のところは変更しなくていい可能性もありそうです。

import os

import pandas as pd 
from pdf2image import convert_from_path 
import pyocr

# ★ファイルパスを指定
pdf_path = '掲示板.pdf'
# PDFを読込み
imgs = convert_from_path(pdf_path)
# 保存用の名前を用意
name = pdf_path.split('.')[0]

# ★Tesseract-OCRに一時的にパスを通す 
os.environ["PATH"] = "C:/Program Files/Tesseract-OCR" 
tools = pyocr.get_available_tools()

# テキストを抽出 
text = tools[0].image_to_string(imgs[0], lang='jpn')

# ★リスト化し不要な文字列を除去
l = text.split('\n')[4:] 
l.remove('設置 場') 
l.remove('所')
# 空の文字列''以外をリストに抽出 
l2 = [i for i in l if len(i)>=1 ]

# ★設置番号の追加(1-7までといった感じでdを作る) 
d = {1:7, 2:7, 3:7, 4:7, 5:7, 6:5} 
nlist = [] 
for k, v in d.items(): 
    for i in range(v): 
        nlist.append(str(k) + '-' + str(i+1))

# データフレーム化 
df = pd.DataFrame({'設置番号': nlist, '所在地': l2[0::2], '設置場所': l2[1::2]})

# エクセルファイルに保存
df.to_excel(f'{name}.xlsx', sheet_name=name, index=False)


⑤所在地と設置場所が変になってるところを目視で修正
 ところどころ入れ替わってしまうところがあるようです。

⑥グーグルマイマップに読み込んで完成

キツかったけど、ホントによい経験になりました。
どうもありがとうございました!

PV: 114
コメント投稿 ホーム