Spaces:
Running
Running
# from flask import Flask, render_template, request, send_from_directory | |
# from paddleocr import PaddleOCR | |
# import os | |
# app = Flask(__name__) | |
# # Upload folder | |
# UPLOAD_FOLDER = 'uploads' | |
# app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER | |
# if not os.path.exists(UPLOAD_FOLDER): | |
# os.makedirs(UPLOAD_FOLDER) | |
# # Initialize OCR | |
# ocr = PaddleOCR(use_angle_cls=True, lang='en') | |
# @app.route('/', methods=['GET', 'POST']) | |
# def upload_file(): | |
# text = None | |
# filename = None | |
# if request.method == 'POST': | |
# file = request.files.get('file') | |
# if not file or file.filename == '': | |
# return render_template('index.html', error="No file selected") | |
# filepath = os.path.join(app.config['UPLOAD_FOLDER'], file.filename) | |
# file.save(filepath) | |
# # Run OCR | |
# result = ocr.ocr(filepath, cls=True) | |
# extracted_text = "" | |
# for line in result: | |
# for word_info in line: | |
# extracted_text += word_info[1][0] + " " | |
# text = extracted_text | |
# filename = file.filename | |
# return render_template('index.html', text=text, filename=filename) | |
# @app.route('/uploads/<filename>') | |
# def uploaded_file(filename): | |
# return send_from_directory(app.config['UPLOAD_FOLDER'], filename) | |
# if __name__ == '__main__': | |
# port = int(os.environ.get('PORT', 5000)) # <-- IMPORTANT | |
# app.run(host='0.0.0.0', port=port) | |
from flask import Flask, render_template, request | |
import os | |
import time | |
app = Flask(__name__) | |
# Lightweight OCR loader | |
def get_ocr(): | |
from paddleocr import PaddleOCR | |
return PaddleOCR( | |
lang='en', | |
use_angle_cls=False, | |
use_gpu=False, | |
det_limit_side_len=480, | |
thread_num=1 | |
) | |
def upload_file(): | |
if request.method == 'POST': | |
file = request.files.get('file') | |
if not file or file.filename == '': | |
return render_template('index.html', error="Please select a file") | |
try: | |
# Verify file size | |
file.seek(0, os.SEEK_END) | |
if file.tell() > 300000: | |
return render_template('index.html', error="Max 300KB file size") | |
file.seek(0) | |
# Process with OCR | |
ocr = get_ocr() | |
result = ocr.ocr(file.stream, cls=False) | |
text = ' '.join([word[1][0] for line in result[0] for word in line if len(word) >= 2]) | |
return render_template('index.html', text=text) | |
except Exception as e: | |
return render_template('index.html', error="Processing error") | |
return render_template('index.html') | |
if __name__ == '__main__': | |
port = int(os.environ.get('PORT', 5000)) | |
app.run(host='0.0.0.0', port=port) |