画像文字認識 EasyOCR
2023/01/20
Python3.9.9, EasyOCR1.6.2
画像に埋め込まれている日付データをOCRして、ファイル名を日付に書き換えるスクリプト
# -*- coding: utf-8 -*-
import os,io
import easyocr
from PIL import Image
dir_path = r'C:\path\images\dir'
reader = easyocr.Reader(['en'], gpu=False)
file_list = os.listdir(dir_path)
for fname in file_list:
fp = os.path.join(dir_path,fname)
if not os.path.isfile(fp):
continue
root,ext = os.path.splitext(fp)
if not ext == '.jpg':
continue
img = Image.open(fp)
img_date = img.crop((875,1050,1017,1075)) #日付が書かれている範囲を指定
img_time = img.crop((1029,1050,1145,1075)) #時刻が書かれている範囲を指定
buffer0 = io.BytesIO()
buffer1 = io.BytesIO()
img_date.save(buffer0, format='PNG')
img_time.save(buffer1, format='PNG')
result = reader.readtext(buffer0.getvalue()) #OCR実施
str_date = result[0][1]
str_date = str_date.replace('/','-') #ファイル名にするため / は - に
str_date = str_date.replace(' ','') #たまに入る余分なスペース削除
result = reader.readtext(buffer1.getvalue()) #OCR実施
str_time = result[0][1]
str_time = str_time.replace(':','-') #ファイル名にするため : は - に
str_time = str_time.replace('.','-') #たまに : が . になる
str_time = str_time.replace(' ','') #たまに入る余分なスペース削除
fname = str_date+'_'+str_time+ext
new_fp = os.path.join(dir_path,fname)
os.rename(fp,new_fp) #ファイル名書き換え
print(fp,'=>',new_fp)
print('fin')