from flask import Flask, request, render_template, send_from_directory from flask_cors import CORS from alibabacloud_sample.dataservice import DataService from alibabacloud_sample.fileservice import FileService from alibabacloud_sample.service import Service app = Flask(__name__) CORS(app) app.config['UPLOAD_FOLDER'] = '/data/uploads' # 指定上传文件夹 app.config['WEBAPP'] = 'templates' dataservice = DataService() @app.route('/index') def index(): return render_template('index.html') @app.route('/assets/') def return_js(filename): return send_from_directory(app.config.get('WEBAPP')+'/assets', str(filename)) @app.route('/data/uploads/') def return_file(filename): return send_from_directory(app.config.get('UPLOAD_FOLDER'), str(filename)) # 上传文件 @app.route('/upload', methods=['POST']) def upload_file(): if request.method == 'POST': file_service = FileService() msg = file_service.upload(request,app.config['UPLOAD_FOLDER']) if msg == "No file part" or msg == "No selected file": return "请选择文件" else: return msg return None # 发票识别 @app.route('/recognize', methods=['GET']) def recognize(): file_path = request.args.get('filePath') service = Service() data = dataservice.get_invoice(file_path=file_path) if data is not None and data.get('file_path') is not None: return data return service.recognize(file_path=file_path) # 发票验证 @app.route('/verify', methods=['GET']) def verify(): file_path = request.args.get('filePath') invoice_id = request.args.get('invoiceId') if file_path is None: return {"msg":"请选择文件","status":'fail'} service = Service() data = dataservice.get_invoice(file_path=file_path,invice_id=invoice_id) if data is not None: if data.get('status') == 'yes': return {"msg":"请勿重复验证","status":'fail'} return service.verify(data=data,file_path=file_path) else: return {"msg":"请先识别发票","status":'fail'} # 发票复验 @app.route('/reverify', methods=['GET']) def reverify(): file_path = request.args.get('filePath') if file_path is None: return "请选择文件" service = Service() data = dataservice.get_invoice(file_path=file_path) return service.verify(data=data,file_path=file_path,reverify=True) # 发票列表 @app.route('/listInvoice',methods=['POST']) def list_invoice(): value = request.json.get('value') verify_status = request.json.get('verify_status') verify_time = request.json.get('verify_time') start_date = None end_date = None if verify_time is not None: start_date = verify_time[0].split(' ')[0] end_date = verify_time[1].split(' ')[0] return dataservice.get_invoice_list(value=value,verify_status=verify_status,start_date=start_date,end_date=end_date) @app.route('/listInvoiceTimeOut',methods=['POST']) def list_invoice_time_out(): time_out = request.form.get('timeOut') return dataservice.get_invoice_list(value='',verify_status='',time_out=time_out) # 发票日志列表 @app.route('/listLogs',methods=['GET']) def list_logs(): file_path = request.args.get('filePath') return dataservice.get_verify_log_list(file_path=file_path) # 更新发票标注 @app.route('/updateInvoice',methods=['POST']) def update_invoice(): invoice_id = request.json.get('invoiceId') status = request.json.get('status') desc = request.json.get('desc') desc_files = request.json.get('desc_files') return dataservice.update_invoice_desc(invoice_id=invoice_id,desc=desc,desc_file=desc_files,status=status) if __name__ == '__main__': # Service.verify(sys.argv[1:]) # Service.recognize(file_path="/home/jayus/图片/wechat_2025-07-31_131911_822.png") app.run(host='0.0.0.0', port=5555, debug=True)