| from flask import Flask, request, jsonify |
| from model import load_model, find_similar_images,extract_filenames |
| import os |
| import difflib |
| import pandas as pd |
| from flask_cors import CORS |
| import json |
|
|
| app = Flask(__name__) |
| CORS(app) |
| data = pd.read_csv('kitpot.categoriesNew.csv', encoding='ISO-8859-1') |
| titles = data['DATA'].tolist() |
|
|
| lowercase_titles = [str(title).lower() if isinstance(title, str) else '' for title in titles] |
| data = list(filter(None, lowercase_titles)) |
|
|
| def find_closest_match(input_word, data): |
| if input_word in data: |
| return [input_word] |
|
|
| closest_match = difflib.get_close_matches(input_word, data) |
| return closest_match |
|
|
| def process_search_term(search_term, data): |
| words = search_term.split(' ') |
| processed_words = [] |
|
|
| for word in words: |
| |
| if word.lower() in data: |
| processed_words.append(word) |
| else: |
| closest_match = find_closest_match(word.lower(), data) |
| processed_words.append(closest_match[0] if closest_match else word) |
|
|
| processed_sentence = ' '.join(processed_words) |
| return processed_sentence |
|
|
| @app.route('/get_closest_match', methods=['GET']) |
| def get_closest_match(): |
| search_term = request.args.get('search_key', default='', type=str) |
| |
| if not search_term: |
| response = { |
| 'message': 'Search term is empty.', |
| } |
| return jsonify(response) |
|
|
| processed_sentence = process_search_term(search_term, data) |
| |
| if processed_sentence: |
| response = { |
| 'result': processed_sentence, |
| } |
| else: |
| response = { |
| 'message': 'No similar words found.', |
| } |
|
|
| return jsonify(response) |
|
|
|
|
| @app.route('/similar_images', methods=['POST']) |
| def get_similar_images(): |
| if 'imageSearch' not in request.files: |
| return jsonify({'error': 'No file part'}) |
|
|
| file = request.files['imageSearch'] |
| if file.filename == '': |
| return jsonify({'error': 'No selected file'}) |
|
|
| if file: |
| filename = file.filename |
| upload_folder = 'uploads' |
| if not os.path.exists(upload_folder): |
| os.makedirs(upload_folder) |
| filepath = os.path.join(upload_folder, filename) |
| file.save(filepath) |
|
|
| similar_images = find_similar_images(filepath) |
| actualFormatedData=extract_filenames(similar_images) |
| |
| os.remove(filepath) |
| |
| return jsonify({'result': actualFormatedData}) |
| else: |
| return jsonify({'error': 'File format not supported'}) |
|
|
| if __name__ == '__main__': |
| app.run(host='0.0.0.0',port=5000,debug=True) |
|
|
|
|