def train_net(self): #读取数据集splitcode,获取分割图片路径 all_split_path = self.db.splitcode.find({}, {"_id": 0}) if all_split_path: list_code_path = [] list_split_path = [] for each_code in all_split_path: list_code_path.append(each_code["codepath"]) for each_split_path in each_code["splitpath"]: list_split_path.append(each_split_path) #读取数据集downcode,获取验证码明码text list_text_num = [] for each_code in list_code_path: results = self.db.downcode.find_one({"codepath": each_code}, {"_id": 0, "text": 1}) if results: for each in results["text"]: each = each * 1.0 / 100 each_text = [] each_text.append(each) list_text_num.append(each_text) #生成输入数据 list_train_input_data = [] for each_code in list_split_path: each_code_temp = "../%s" % each_code image = Image.open(each_code_temp) each_train_input_data = [] for x in xrange(image.size[1]): for y in xrange(image.size[0]): if image.getpixel((y, x)): each_train_input_data.append(0) else: each_train_input_data.append(1) list_train_input_data.append(each_train_input_data) #生成目标数据 list_train_output_data = list_text_num for each in list_train_input_data: print len(each) #开始训练 net_size = [10, 1] neural = NeuralWork() net = neural.train_net(list_train_input_data, list_train_output_data, net_size)
def reg_code(self, list_split_image): #识别 all_plain_text = "0123456789abcdef" reg_plain_text = [] neural = NeuralWork() list_input_data = [] for each_split_image in list_split_image: each_input_data = [] for x in xrange(each_split_image.size[1]): for y in xrange(each_split_image.size[0]): if each_split_image.getpixel((y, x)): each_input_data.append(0) else: each_input_data.append(1) list_input_data.append(each_input_data) out = neural.reg_net(list_input_data) for each in out: plain_text = int(round(each[0] * 100)) if plain_text < 16: reg_plain_text.append(all_plain_text[plain_text]) return reg_plain_text