我机器学习-训练了一个快速识别身份证正面关键信息的模型
采用正常的cpu识别效率稳定达到100ms左右识别一张
采用python开发,模型小于10M
识别精度高,提出来给大家试用
from os import environ
from flask import Flask
from flask import render_template,request
import os
os.environ["CPU_NUM"] = '2'
from time import *
import paddlex as pdx
import datetime
import json
import math
from datetime import datetime
app = Flask(__name__)
app.jinja_env.variable_start_string = '{['
app.jinja_env.variable_end_string = ']}'
model = None
classify_map = None
@app.route('/', methods=("GET", "POST"))
def hello_world():
global model,classify_map
url = ''
url2 = ''
result = ''
lasttime = ""
deleteImg()
if request.method == "POST":
tupian = request.files.get('myFiles')
if tupian != None:
print(tupian.filename)
times = datetime.now().strftime('%Y%m%d%H%M%S%f') + '.' + tupian.filename.split('.')[-1]
url = 'static/images/' + times
tupian.save(url)
print(url)
startTime = datetime.now()
result2 = model.predict(url)
pdx.det.visualize(url, result2, threshold=0.3, save_dir='static/images/')
url2 = 'static/images/visualize_' + times
endTime = datetime.now()
durTime = (endTime - startTime).seconds * 1000 + (endTime - startTime).microseconds / 1000
lasttime = "本次识别耗时:" + str(durTime) + "毫秒"
print(result)
return render_template('index.html',
title = url ,
resUrl= url2,
result= result,
lasttime=lasttime)
@app.route('/Classify', methods=("GET", "POST"))
def fileClassify():
global model
result = ''
lasttime = ""
try:
deleteImg()
if request.method == "POST":
tupian = request.files.get('ClassifyFile')
if tupian != None:
print(tupian.filename)
times = datetime.now().strftime('%Y%m%d%H%M%S%f') + '.' + tupian.filename.split('.')[-1]
url = 'static/images/' + times
tupian.save(url)
startTime = datetime.now()
result2 = model.predict(url)
endTime = datetime.now()
durTime = (endTime - startTime).seconds * 1000 + (endTime - startTime).microseconds / 1000
lasttime = "本次识别耗时:" + str(durTime) + "毫秒"
result = str(result2)
return {"code":0,"msg":"success","content":result,"usetime":str(durTime)}
else:
return {"code":-1,"msg":"picture error","content":None,"usetime":None}
else:
return {"code":-1,"msg":"please use post","content":None,"usetime":None}
except Exception as e:
return {"code":-1,"msg":str(e),"content":None,"usetime":None}
def deleteImg():
global logger
try:
baseUrl = 'static/images/'
list = os.listdir(baseUrl)
for i in range(0, len(list)):
path = baseUrl + list[i]
os.remove(path)
except Exception as e:
print('deleteImgs出现异常:' + str(e))
return None
def main():
global model
print("Loading model...")
print(os.getcwd())
model = pdx.deploy.Predictor('./inference_model', use_gpu=False)
print("Model loaded.")
if __name__ == '__main__':
main()
HOST = environ.get('SERVER_HOST', '0.0.0.0')
try:
PORT = int(environ.get('SERVER_PORT', '5888'))
except ValueError:
PORT = 5999
app.run(HOST, PORT)