Example #1
0
    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)   
Example #2
0
 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