import pytesseract
import regex as re
from PIL import Image
import xlsxwriter
import numpy as np
import cv2
import os
import glob
pytesseract.pytesseract.tesseract_cmd = 'D:\\Tesseract\\tesseract.exe'
outWorkbook = xlsxwriter.Workbook("out.xlsx")
for img_num in range (1,21):
if img_num<10:
img_num='0'+str(img_num)
else:
img_num=str(img_num)
print(img_num)
img_name = img_num + '.png'
#img = cv2.imread('01.png', 0)
img_name = cv2.resize(img_name, None, fx=0.32, fy=0.28)
img_crop = img_name[0:,527:]
output = pytesseract.image_to_string(img_name)
#output = pytesseract.image_to_string(img_name)
# Contractor code line
if re.search('CONTRACTOR:', output):
filter_contractor = re.findall(r"[A-Z]{0,3}-[A-Z]{4}-[A-Z]{12}", output)
else: filter_contractor = " "
#Drawing number code line
if re.search('DRAWING NUMBER:\s[A-Z]{2}.[A-Z]{3}.[A-Z]{1}.[0-9]{2}.[0-9]{2}.[0-9]{2}.[0-9]{2}.[A-Z]{1}', output):
filter_dn = re.findall(r"[A-Z]{2}.[A-Z]{3}.[A-Z]{1}.[0-9]{2}.[0-9]{2}.[0-9]{2}.[0-9]{2}.[A-Z]{1}", output)
elif re.search('DRAWING NUMBER:\n[A-Z]{3}.[0-9]{2}-[0-9]{2}-[0-9]{2}-[0-9]{2}-[A-Z]{1}', output):
filter_dn = re.findall(r"[A-Z]{3}.[0-9]{2}-[0-9]{2}-[0-9]{2}-[0-9]{2}-[A-Z]{1}", output)
elif re.search('DRAWING NO.:\n[A-Z]{3}.[0-9]{2}-[0-9]{2}-[0-9]{2}-[0-9]{2}-[A-Z]{1}', output):
filter_dn = re.findall(r"[A-Z]{3}.[0-9]{2}-[0-9]{2}-[0-9]{2}-[0-9]{2}-[A-Z]{1}", output)
elif re.search('[A-Z]{2}-[A-Z]{3}-[A-Z]{1}-[0-9]{2}-[0-9]{2}-[0-9]{2}-[0-9]{2}-[A-Z]{1}', output):
filter_dn = re.findall(r"[A-Z]{2}-[A-Z]{3}-[A-Z]{1}-[0-9]{2}-[0-9]{2}-[0-9]{2}-[0-9]{2}-[A-Z]{1}", output)
else: filter_dn = " "
#Title code line
if re.search('BRIDGE DESIGN', output):
filter_title = re.findall(r'BRIDGE DESIGN', output)
elif re.search('SUNWAY BOTTLE DESIGN', output):
filter_title = re.findall(r"SUNWAY BOTTLE DESIGN", output)
elif re.search('STEEL STRUCTURE', output):
filter_title = re.findall(r"STEEL STRUCTURE", output)
else: filter_title = ["SMILEY"]
#Drawn by code line
if re.search('CWC', output, re.IGNORECASE):
filter_drawn = re.findall(r'CWC', output, re.IGNORECASE)
elif re.search('LEO', output, re.IGNORECASE):
filter_drawn = re.findall(r'LEO', output, re.IGNORECASE)
elif re.search('BEN', output, re.IGNORECASE):
filter_drawn = re.findall(r'BEN', output, re.IGNORECASE)
else: filter_drawn = " "
#Project number code line
if re.search('PROJECT NO:', output):
if re.search('\s[A-Z]{2}-[A-Z]{3}-[0-9]{2}\s', output):
filter_projectno = re.findall(r'\s[A-Z]{2}-[A-Z]{3}-[0-9]{2}\s', output)
elif re.search('\s[A-Z]{3}-[0-9]{2}-[A-Z]{2}\s', output):
filter_projectno = re.findall(r'\s[A-Z]{3}-[0-9]{2}-[A-Z]{2}\s', output)
else: filter_projectno = " "
else: filter_projectno = " "
#CAD number code line
if re.search('CAD NO:', output):
filter_cad = re.findall(r'[A-Z]{2}-[A-Z]{3}-[A-Z]{3}-[0-9]{2}', output)
else: filter_cad = " "
#STATUS number code line
if re.search('STATUS:', output):
if re.search('ISSUED', output):
filter_status = re.findall(r'ISSUED', output)
elif re.search('DRAWING', output):
filter_status = re.findall(r'DRAWING', output)
else: filter_status = " "
#LANG number code line
if re.search('ENG', output):
filter_lang = re.findall(r'ENG', output)
elif re.search('EN',output):
filter_lang = re.findall(r'EN', output)
else: filter_lang = " "
try:
dict_type = {'CONTRACTOR':filter_contractor[0], 'DRAWING NUMBER':filter_dn[0],
'TITLE':filter_title[0], 'DRAWN BY':filter_drawn[0],
'PROJECT NO':filter_projectno[0].strip(),
'CAD NO':filter_cad[0], 'STATUS':filter_status[0],
'LANGUAGE':filter_lang[0]}
except IndexError:
print(dict_type)
#print(img_num)
dict2list = list(dict_type.items())
print(dict2list)
#dict_type.clear()
list2array = np.array(dict2list)
field_title, content = map(list, zip(*list2array))
#outSheet = img + " Sheet"
outSheet = outWorkbook.add_worksheet()
#img_name = outWorkbook.add_worksheet()
outSheet.write("A1", "Field Title")
outSheet.write("B1", "Content")
for x in range(len(field_title)):
outSheet.write('A' + str(x+2), field_title[x])
#a.value = field_title[x]
for y in range(len(content)):
outSheet.write('B' + str(y+2), content[y])
#a.value = content[y]
outSheet.set_column('A:B', 30)
outWorkbook.close()
I'm trying to resize my images for better accuracy. It works when I manually change the images to test it out but not when I loop through them. What could be the problem? The error that comes out is : Expected cv::UMat for argument 'src'