前提・実現したいこと
pythonを初めてもちいて,tesseract,opencvでwebカメラを用いてリアルタイムにocrを行うシステムを作っています。
発生している問題・エラーメッセージ
処理が非常に重たくて,使い物になりません
該当のソースコード
python
1 2import cv2 3import numpy as np 4import os 5import datetime 6from PIL import Image 7import sys 8import pyocr 9import pyocr.builders 10 11current = os.getcwd() 12now = datetime.datetime.now() 13dir_name = "\IMG_{0:%m%d%H%M}".format(now) 14if os.path.isdir(current + dir_name) == False: 15 os.mkdir(current + dir_name) #make directory 16os.chdir(current + dir_name) #move to directory 17 18cap = cv2.VideoCapture(0) 19cap.set(cv2.CAP_PROP_FPS, 30) 20 21count = 1 22 23tools = pyocr.get_available_tools() 24if len(tools) == 0: 25 26 print("No OCR tool found") 27 sys.exit(1) 28tool = tools[0] 29print("Will use tool '%s'" % (tool.get_name())) 30 31langs = tool.get_available_languages() 32print("Available languages: %s" % ", ".join(langs)) 33 34 35while True: 36 ret, frame = cap.read() 37 w, h = frame.shape[0] , frame.shape[1] 38 39 cv2.imshow('Raw Frame', frame) 40 41 blur = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 42 ret,g_frame = cv2.threshold(blur,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU) 43 44 cv2.imshow('Edited Frame', g_frame) 45 46 filename = "IMG_{}.png".format(count) 47 cv2.imwrite(filename, g_frame) 48 txt = tool.image_to_string( 49 Image.open(filename), 50 lang='jpn', 51 builder=pyocr.builders.TextBuilder(tesseract_layout=6) 52 ) 53 54 str_list = list(txt) 55 56 find = [] 57 58 for str in str_list: 59 if str == "ー": 60 str = "1" 61 find.append(str) 62 63 str_changed = "".join(find) 64 print(str_changed) 65 count += 1 66 67 68 k = cv2.waitKey(1) 69 if k == 27: 70 break 71 72 73cap.release() 74cv2.destroyAllWindows() 75 76print("完了")