机器学习-训练了一个高效快速识别身份证正面关键信息的模型

开发者分享了使用Python开发的轻量级身份证识别模型,CPU下识别速度稳定在100ms,精度高,适合实战应用。通过POST上传图片,实时展示识别结果和耗时。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
我机器学习-训练了一个快速识别身份证正面关键信息的模型
采用正常的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)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

搬砖的诗人Z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值