feat(ocr): make OCR functionality optional via configuration
The OCR feature can now be enabled or disabled using a new `OCR_ENABLED` configuration flag. This allows for more flexible deployments where the OCR feature is not required, reducing the application's resource footprint and dependency overhead. The backend now conditionally initializes the OCR engine and its associated route. The frontend UI for OCR uploads is also rendered conditionally based on this setting.
This commit is contained in:
parent
5a5692d8cc
commit
bcab963b99
41
app.py
41
app.py
@ -26,7 +26,8 @@ else:
|
||||
app.config.from_object(DevelopmentConfig)
|
||||
cache = Cache(app, config={"CACHE_TYPE": "SimpleCache"})
|
||||
|
||||
ocr = PaddleOCR(use_angle_cls=True, lang='en') # Adjust language if needed
|
||||
if app.config.get("OCR_ENABLED"):
|
||||
ocr = PaddleOCR(use_angle_cls=True, lang='en') # Adjust language if needed
|
||||
|
||||
app.config["SESSION_COOKIE_SECURE"] = not app.config["DEBUG"]
|
||||
app.config['SESSION_COOKIE_HTTPONLY'] = True # Prevent JavaScript access
|
||||
@ -85,6 +86,7 @@ def home():
|
||||
accounts=count,
|
||||
current_month_accounts=current_month_accounts,
|
||||
expired_accounts=expired_accounts,
|
||||
ocr_enabled=app.config.get("OCR_ENABLED"),
|
||||
)
|
||||
return render_template("index.html")
|
||||
|
||||
@ -163,7 +165,7 @@ def add_account():
|
||||
return redirect(url_for("user_accounts"))
|
||||
return render_template("add_account.html")
|
||||
|
||||
return render_template("add_account.html")
|
||||
return render_template("add_account.html", ocr_enabled=app.config.get("OCR_ENABLED"))
|
||||
|
||||
|
||||
@app.route("/accounts/delete", methods=["POST"])
|
||||
@ -187,23 +189,24 @@ def stream_names():
|
||||
return jsonify(stream_names)
|
||||
|
||||
|
||||
@app.route('/OCRupload', methods=['POST'])
|
||||
def OCRupload():
|
||||
if 'image' not in request.files:
|
||||
return jsonify({"error": "No image file found"}), 400
|
||||
# Get the uploaded file
|
||||
file = request.files['image']
|
||||
try:
|
||||
image = Image.open(file.stream)
|
||||
image_np = np.array(image)
|
||||
result = ocr.ocr(image_np)
|
||||
# Extract text
|
||||
extracted_text = []
|
||||
for line in result[0]:
|
||||
extracted_text.append(line[1][0])
|
||||
return render_template("add_account.html", username=extracted_text[2], password=extracted_text[3])
|
||||
except Exception as e:
|
||||
return jsonify({"error": str(e)}), 500
|
||||
if app.config.get("OCR_ENABLED"):
|
||||
@app.route('/OCRupload', methods=['POST'])
|
||||
def OCRupload():
|
||||
if 'image' not in request.files:
|
||||
return jsonify({"error": "No image file found"}), 400
|
||||
# Get the uploaded file
|
||||
file = request.files['image']
|
||||
try:
|
||||
image = Image.open(file.stream)
|
||||
image_np = np.array(image)
|
||||
result = ocr.ocr(image_np)
|
||||
# Extract text
|
||||
extracted_text = []
|
||||
for line in result[0]:
|
||||
extracted_text.append(line[1][0])
|
||||
return render_template("add_account.html", username=extracted_text[2], password=extracted_text[3])
|
||||
except Exception as e:
|
||||
return jsonify({"error": str(e)}), 500
|
||||
|
||||
if __name__ == "__main__":
|
||||
app.run(debug=app.config["DEBUG"], host=app.config["HOST"], port=app.config["PORT"])
|
||||
|
@ -74,6 +74,7 @@
|
||||
<span id="buttonText">Add Account</span>
|
||||
</button>
|
||||
</form>
|
||||
{% if ocr_enabled %}
|
||||
<hr>
|
||||
<h2>Load Details Via OCR</h2>
|
||||
<form action="/OCRupload" method="POST" enctype="multipart/form-data" onsubmit="showLoadingOCR()">
|
||||
@ -86,6 +87,7 @@
|
||||
<span id="ocrButtonText">Load Details</span>
|
||||
</button>
|
||||
</form>
|
||||
{% endif %}
|
||||
|
||||
</main>
|
||||
<footer class="bg-dark text-white text-center py-3 mt-5">
|
||||
|
Loading…
x
Reference in New Issue
Block a user