-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.py
68 lines (55 loc) · 2.1 KB
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
from flask import Flask, jsonify, redirect, request, url_for
from extensions import jwt
from extensions import db, migrate, cors
from auth.views import auth_blueprint
from api.views import product_blueprint
# Image Store
from werkzeug.utils import secure_filename
import os
# Text Extraction From Image
import pytesseract
from PIL import Image
app = Flask(__name__)
app.config.from_object("config") # Load configurations from config.py file
db.init_app(app)
migrate.init_app(app, db)
jwt.init_app(app)
app.register_blueprint(blueprint=auth_blueprint)
app.register_blueprint(blueprint=product_blueprint)
# For supporting Cross-Origin Resource Sharing (CORS) so, the frontend can access the API.
cors.init_app(app)
# Additional code to create database tables
with app.app_context():
db.create_all()
pytesseract.pytesseract.tesseract_cmd = app.config.get("TESSERACT_CMD")
app.secret_key = app.config.get("FLASK_SECRET_KEY")
app.config["UPLOAD_FOLDER"] = app.config.get("IMAGE_UPLOAD_FOLDER")
# Text Extraction From Image
@app.route('/uploader', methods=['GET', 'POST'])
def upload():
if request.method == 'POST':
f = request.form['image']
f.save(os.path.join(os.path.join(app.config['UPLOAD_FOLDER']), secure_filename(f.filename)))
return redirect(url_for('medicine_image', filename=f.filename))
return "No file uploaded."
@app.route("/image-search")
def medicine_image():
# Take image from user
imagefile = "static/images/"
imagefile += request.args.get("filename")
# Open the image file using Pillow's Image module
img = Image.open(imagefile)
# OCR configurations
myconfig = r'--psm 6 --oem 3'
# Perform OCR on the image and extract text using pytesseract
text = pytesseract.image_to_string(img, config=myconfig)
text = text.replace('\n', ' ')
text = text[:-1]
# this text need to be given to NLP Model for extracting medicine names...
return jsonify(text)
if __name__ == '__main__':
app.run(
host=app.config.get("FLASK_RUN_HOST"),
port=app.config.get("FLASK_RUN_PORT"),
debug=app.config.get("FLASK_DEBUG"),
)