lava-reader / app.py
Daewolf's picture
Update app.py
231a9d3 verified
from flask import Flask, render_template, request, jsonify
import PyPDF2
import os
import re
app = Flask(__name__)
UPLOAD_FOLDER = os.path.join('static', 'uploads')
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
def nettoyer_texte(texte):
if not texte:
return ""
# 1. Remplacer les retours à la ligne par des espaces
texte = texte.replace('\n', ' ')
# 2. Supprimer les numéros de page isolés (ex: " 12 ", " Page 12 ")
# Cette regex cherche des chiffres entourés d'espaces ou en début de ligne
texte = re.sub(r'\b\d+\b', '', texte)
# 3. Supprimer les espaces multiples créés par le nettoyage
texte = re.sub(r'\s+', ' ', texte).strip()
return texte
@app.route("/")
def index():
return render_template("index.html")
@app.route("/upload", methods=["POST"])
def upload_pdf():
if 'file' not in request.files:
return jsonify({"error": "Aucun fichier"})
file = request.files['file']
if file:
if not os.path.exists(app.config['UPLOAD_FOLDER']):
os.makedirs(app.config['UPLOAD_FOLDER'])
filepath = os.path.join(app.config['UPLOAD_FOLDER'], file.filename)
file.save(filepath)
pages_data = []
try:
with open(filepath, 'rb') as f:
reader = PyPDF2.PdfReader(f)
for i, page in enumerate(reader.pages):
t = page.extract_text()
# On applique le nettoyage ici !
t_propre = nettoyer_texte(t)
if t_propre:
pages_data.append({"num": i + 1, "texte": t_propre})
return jsonify({
"pdf_url": f"/static/uploads/{file.filename}",
"pages": pages_data
})
except Exception as e:
return jsonify({"error": str(e)})
if __name__ == "__main__":
# On force le port 7860 et l'hôte 0.0.0.0 pour Hugging Face
app.run(host="0.0.0.0", port=7860, debug=False)