123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- #!/usr/bin/python3
- # -*- coding: utf-8 -*-
- # @Author : bidikeji
- # @Time : 2019/11/21 0021 15:55
- from predict_model import *
- from flask import request, Flask, jsonify
- from PIL import Image
- from io import BytesIO
- import base64
- import time
- import logging
- coun_dic = {'shuzi':{'total_num':0, 'neg_num':0}, 'suanshu':{'total_num':0, 'neg_num':0}
- ,'yingwen':{'total_num':0, 'neg_num':0},'hanzi':{'total_num':0, 'neg_num':0}}
- app = Flask(__name__)
- @app.route("/getlog", methods=["POST"])
- def get_acc():
- clear = request.form.get('clear_log', 'no')
- if clear == 'yes':
- try:
- with open('upload_num_log.txt', 'a', encoding='utf=8') as f:
- f.write(str(coun_dic))
- f.write('\n')
- except:
- return 'clear_log error'
- return jsonify(coun_dic)
- @app.route("/errorlog", methods=["POST"])
- def save_error():
- """receive not success image and save """
- code_type = request.form.get('code', 'unkown')
- base64pic = request.form.get('base64pic')
- file_obj = request.files.get("pic")
- data = {'save_success': False}
- if code_type is None or str(code_type) not in ['shuzi', 'suanshu', 'yingwen', 'hanzi', '1', '2', '3', '4', '5', '6']:
- data = {'errorinfo':'please check you param:code, code must be in shuzi/suanshu/yingwen/hanzi or number 1-6'}
- return jsonify(data)
- if base64pic is not None:
- try:
- src = base64.b64decode(base64pic.split(',')[-1])
- img = Image.open(BytesIO(src))
- time_tr = time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime())
- if code_type in ['1', '2', '3', '4', '5', '6']:
- img.save('pic2/'+str(code_type)+'_'+time_tr+'.jpg')
- else:
- img.save('pic/'+str(code_type)+'_'+time_tr+'.jpg')
- data['save_success'] = True
- coun_dic[code_type]['neg_num'] += 1
- return jsonify(data)
- except:
- return jsonify(data)
- if file_obj is not None:
- try:
- img = Image.open(file_obj)
- time_tr = time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime())
- if code_type in ['1', '2', '3', '4', '5', '6']:
- img.save('pic2/'+str(code_type)+'_'+time_tr+'.jpg')
- else:
- img.save('pic/'+str(code_type)+'_'+time_tr+'.jpg')
- data['save_success'] = True
- coun_dic[code_type]['neg_num'] += 1
- return jsonify(data)
- except:
- return jsonify(data)
- else:
- return 'please check you parameter '
- @app.route("/upload", methods=["POST"])
- def upload():
- start_time = time.time()
- """receive image and predict """
- code_type = request.form.get('code')
- base64pic = request.form.get('base64pic')
- file_obj = request.files.get("pic")
- data = {'success':False}
- if code_type is None or str(code_type) not in ['shuzi', 'suanshu','yingwen','hanzi']:
- data = {'errorinfo':'please check you param:code, code must be in shuzi/suanshu/yingwen/hanzi'}
- return jsonify(data)
- if base64pic is not None:
- try:
- src = base64.b64decode(base64pic.split(',')[-1])
- img = Image.open(BytesIO(src))
- if img.mode != "RGB":
- img = img.convert("RGB")
- if code_type == 'shuzi':
- pre = predict_digit(img)
- elif code_type == 'suanshu':
- pre = predict_arith(img)
- # pre = str(eval(pre))
- elif code_type == 'hanzi':
- pre = predict_chinese(img)
- elif code_type == 'yingwen':
- pre = predict_english(img)
- data['predict'] = pre
- data['success'] = True
- coun_dic[code_type]['total_num'] +=1
- app.logger.info("success ,use time:%.4f" %(time.time() - start_time))
- return jsonify(data)
- except:
- app.logger.info("except error,use time:%.4f" %(time.time() - start_time))
- return jsonify(data)
- if file_obj is not None:
- try:
- img = Image.open(file_obj)
- if img.mode != "RGB":
- img = img.convert("RGB")
- if code_type == 'shuzi':
- pre = predict_digit(img)
- elif code_type == 'suanshu':
- pre = predict_arith(img)
- # pre = str(eval(pre))
- elif code_type == 'hanzi':
- pre = predict_chinese(img)
- elif code_type == 'yingwen':
- pre = predict_english(img)
- data['success'] = True
- data['predict'] = pre
- coun_dic[code_type]['total_num'] += 1
- app.logger.info("success ,use time:%.4f" %(time.time() - start_time))
- # print('graph_node_num',len(tf.get_default_graph().as_graph_def().node))
- return jsonify(data)
- except:
- app.logger.info("except error, use time:%.4f" %(time.time() - start_time))
- return jsonify(data)
- return 'please check you post '
- if __name__ == '__main__':
- handler = logging.FileHandler('flask.log', encoding='UTF-8')
- app.logger.setLevel("INFO")
- logging_format = logging.Formatter(
- '%(asctime)s - %(levelname)s - %(filename)s -%(lineno)s - %(message)s'
- )
- handler.setFormatter(logging_format)
- app.logger.addHandler(handler)
- app.run("0.0.0.0", port=17052, debug=False) # 2.177 本地IP
|