pdf-parser-api / backend /file_uploads.py
blaxx14's picture
update KTP scanning
605c260
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