Spaces:
Sleeping
Sleeping
from flask import Flask, request, jsonify | |
from werkzeug.utils import secure_filename | |
from .parser import parse_promotion_pdf, parse_promotion_excel | |
from .text_recog import extract_ktp_info | |
import os | |
app = Flask(__name__) | |
app.config['UPLOAD_FOLDER'] = 'tmp' | |
app.config['ALLOWED_EXTENSIONS'] = {'pdf', 'png', 'jpg', 'jpeg', 'xlsx', 'csv'} | |
app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024 | |
def allowed_file(filename): | |
return '.' in filename and filename.rsplit('.', 1)[1].lower() in app.config['ALLOWED_EXTENSIONS'] | |
def upload_file(): | |
if 'file' not in request.files: | |
return jsonify({'error': 'No file part'}), 400 | |
file = request.files['file'] | |
if file.filename == '': | |
return jsonify({'error': 'No selected file'}), 400 | |
if file and allowed_file(file.filename): | |
filename = secure_filename(file.filename) | |
if not os.path.exists('/tmp'): | |
os.makedirs('/tmp', exist_ok=True) | |
filepath = os.path.join('/tmp', filename) | |
file.save(filepath) | |
if filename.endswith('.pdf'): | |
parsed_file = parse_promotion_pdf(filepath) | |
elif filename.endswith(('.png', '.jpg', '.jpeg', '.bmp', '.tiff')): | |
parsed_file = extract_ktp_info(filepath, filename) | |
elif filename.endswith('.xlsx' or '.csv'): | |
parsed_file = parse_promotion_excel(filepath, filename) | |
else: | |
parsed_file = { | |
'filename' : filename | |
} | |
return jsonify({ | |
'message': 'File uploaded successfully', | |
'filename': filename, | |
'path': filepath, | |
'content' : parsed_file | |
}), 200 | |
return jsonify({'error': 'File type not allowed'}), 400 | |