画像文字認識 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')