Spaces:
Running
Running
Commit
·
c53f752
1
Parent(s):
2804140
fix: add werkzeug dependency
Browse files
app.py
CHANGED
@@ -46,30 +46,29 @@
|
|
46 |
# app.run(host='0.0.0.0', port=port)
|
47 |
|
48 |
from flask import Flask, render_template, request, send_from_directory
|
49 |
-
from paddleocr import PaddleOCR
|
50 |
import os
|
51 |
import time
|
52 |
-
import logging
|
53 |
|
54 |
app = Flask(__name__)
|
55 |
|
56 |
-
# Configure minimal
|
57 |
-
|
58 |
-
|
59 |
-
# Upload folder
|
60 |
-
UPLOAD_FOLDER = 'uploads'
|
61 |
os.makedirs(UPLOAD_FOLDER, exist_ok=True)
|
62 |
|
63 |
-
#
|
64 |
def get_ocr():
|
|
|
65 |
return PaddleOCR(
|
66 |
lang='en',
|
67 |
-
use_angle_cls=False,
|
68 |
use_gpu=False,
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
|
|
|
|
|
|
73 |
)
|
74 |
|
75 |
@app.route('/', methods=['GET', 'POST'])
|
@@ -77,40 +76,35 @@ def upload_file():
|
|
77 |
if request.method == 'POST':
|
78 |
file = request.files.get('file')
|
79 |
if not file or file.filename == '':
|
80 |
-
return render_template('index.html', error="
|
81 |
|
82 |
try:
|
83 |
-
#
|
84 |
-
file.
|
85 |
-
|
86 |
-
return render_template('index.html', error="File too large (max 500KB)")
|
87 |
file.seek(0)
|
88 |
|
89 |
-
# Save
|
90 |
-
filename = f"{int(time.time())}
|
91 |
filepath = os.path.join(UPLOAD_FOLDER, filename)
|
92 |
file.save(filepath)
|
93 |
|
94 |
-
#
|
95 |
ocr = get_ocr()
|
96 |
-
|
97 |
-
|
98 |
-
result = ocr.ocr(filepath, cls=False)[0] # [0] gets first batch
|
99 |
-
text = ' '.join([word[1][0] for word in result if len(word) >= 2])
|
100 |
|
101 |
-
|
|
|
|
|
102 |
|
103 |
except Exception as e:
|
104 |
if os.path.exists(filepath):
|
105 |
os.remove(filepath)
|
106 |
-
return render_template('index.html', error=
|
107 |
|
108 |
return render_template('index.html')
|
109 |
|
110 |
-
@app.route('/uploads/<filename>')
|
111 |
-
def uploaded_file(filename):
|
112 |
-
return send_from_directory(UPLOAD_FOLDER, filename)
|
113 |
-
|
114 |
if __name__ == '__main__':
|
115 |
port = int(os.environ.get('PORT', 5000))
|
116 |
app.run(host='0.0.0.0', port=port, threaded=False)
|
|
|
46 |
# app.run(host='0.0.0.0', port=port)
|
47 |
|
48 |
from flask import Flask, render_template, request, send_from_directory
|
|
|
49 |
import os
|
50 |
import time
|
|
|
51 |
|
52 |
app = Flask(__name__)
|
53 |
|
54 |
+
# Configure minimal setup
|
55 |
+
UPLOAD_FOLDER = 'tmp_uploads'
|
|
|
|
|
|
|
56 |
os.makedirs(UPLOAD_FOLDER, exist_ok=True)
|
57 |
|
58 |
+
# Lazy-load OCR only when needed
|
59 |
def get_ocr():
|
60 |
+
from paddleocr import PaddleOCR
|
61 |
return PaddleOCR(
|
62 |
lang='en',
|
63 |
+
use_angle_cls=False,
|
64 |
use_gpu=False,
|
65 |
+
det_model_dir='en_PP-OCRv3_det_infer',
|
66 |
+
rec_model_dir='en_PP-OCRv3_rec_infer',
|
67 |
+
cls_model_dir='ch_ppocr_mobile_v2.0_cls_infer',
|
68 |
+
enable_mkldnn=True,
|
69 |
+
rec_batch_num=1,
|
70 |
+
det_limit_side_len=320,
|
71 |
+
thread_num=1
|
72 |
)
|
73 |
|
74 |
@app.route('/', methods=['GET', 'POST'])
|
|
|
76 |
if request.method == 'POST':
|
77 |
file = request.files.get('file')
|
78 |
if not file or file.filename == '':
|
79 |
+
return render_template('index.html', error="Please select a file")
|
80 |
|
81 |
try:
|
82 |
+
# 300KB file size limit
|
83 |
+
if len(file.read()) > 300000:
|
84 |
+
return render_template('index.html', error="Max 300KB file size")
|
|
|
85 |
file.seek(0)
|
86 |
|
87 |
+
# Save file
|
88 |
+
filename = f"{int(time.time())}.jpg"
|
89 |
filepath = os.path.join(UPLOAD_FOLDER, filename)
|
90 |
file.save(filepath)
|
91 |
|
92 |
+
# Process with OCR
|
93 |
ocr = get_ocr()
|
94 |
+
result = ocr.ocr(filepath, cls=False)
|
95 |
+
text = ' '.join([word[1][0] for line in result[0] for word in line if len(word) >= 2])
|
|
|
|
|
96 |
|
97 |
+
# Cleanup
|
98 |
+
os.remove(filepath)
|
99 |
+
return render_template('index.html', text=text)
|
100 |
|
101 |
except Exception as e:
|
102 |
if os.path.exists(filepath):
|
103 |
os.remove(filepath)
|
104 |
+
return render_template('index.html', error="OCR processing failed")
|
105 |
|
106 |
return render_template('index.html')
|
107 |
|
|
|
|
|
|
|
|
|
108 |
if __name__ == '__main__':
|
109 |
port = int(os.environ.get('PORT', 5000))
|
110 |
app.run(host='0.0.0.0', port=port, threaded=False)
|