Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
|
@@ -7,10 +7,9 @@ from docx import Document
|
|
| 7 |
from fpdf import FPDF
|
| 8 |
from langdetect import detect
|
| 9 |
import urllib.request
|
| 10 |
-
import gradio.themes.base as base_theme
|
| 11 |
|
| 12 |
|
| 13 |
-
# === 🗂️
|
| 14 |
os.makedirs("/app/models", exist_ok=True)
|
| 15 |
FONT_PATH = "DejaVuSans.ttf"
|
| 16 |
|
|
@@ -22,7 +21,7 @@ if not os.path.exists(FONT_PATH):
|
|
| 22 |
)
|
| 23 |
|
| 24 |
|
| 25 |
-
# === ⚙️
|
| 26 |
def load_model(task, model_name):
|
| 27 |
print(f"🔹 Загружается модель: {model_name}")
|
| 28 |
return pipeline(task, model=model_name, cache_dir="/app/models")
|
|
@@ -34,7 +33,7 @@ summarizers = {
|
|
| 34 |
}
|
| 35 |
|
| 36 |
|
| 37 |
-
# === 📄 Чтение
|
| 38 |
def read_file(file):
|
| 39 |
if not file:
|
| 40 |
return ""
|
|
@@ -78,8 +77,8 @@ def summarize_text(text):
|
|
| 78 |
model = summarizers.get(lang, summarizers["en"])
|
| 79 |
flags = {"ru": "🇷🇺 Русский", "kz": "🇰🇿 Қазақ тілі", "en": "🇬🇧 English"}
|
| 80 |
lang_label = flags.get(lang, "🌍 Unknown")
|
| 81 |
-
|
| 82 |
model_label = model.model.name_or_path if hasattr(model.model, "name_or_path") else "Custom"
|
|
|
|
| 83 |
chunk_size = 2500
|
| 84 |
overlap = 200
|
| 85 |
summaries = []
|
|
@@ -126,7 +125,7 @@ def save_summary_as_pdf(summary_text):
|
|
| 126 |
return path
|
| 127 |
|
| 128 |
|
| 129 |
-
# === 🚀
|
| 130 |
def summarize_file(file):
|
| 131 |
text = read_file(file)
|
| 132 |
if text.startswith("⚠️"):
|
|
@@ -144,16 +143,13 @@ def summarize_file(file):
|
|
| 144 |
return summary, lang_label, model_label, src_len, sum_len, compression, txt_path, docx_path, pdf_path
|
| 145 |
|
| 146 |
|
| 147 |
-
# ===
|
| 148 |
-
|
| 149 |
-
|
| 150 |
-
|
| 151 |
-
)
|
|
|
|
| 152 |
|
| 153 |
-
with gr.Blocks(theme=theme) as demo:
|
| 154 |
-
gr.Markdown("## 🧠 Eroha Summarizer PRO (автономная версия)")
|
| 155 |
-
gr.Markdown("🚀 Определяет язык (🇷🇺 / 🇰🇿 / 🇬🇧), создаёт краткое резюме и сохраняет в TXT, DOCX, PDF с поддержкой кириллицы.")
|
| 156 |
-
|
| 157 |
file_input = gr.File(label="📂 Загрузите документ (.pdf, .docx, .txt)")
|
| 158 |
run_btn = gr.Button("🔍 Сгенерировать резюме", variant="primary")
|
| 159 |
|
|
|
|
| 7 |
from fpdf import FPDF
|
| 8 |
from langdetect import detect
|
| 9 |
import urllib.request
|
|
|
|
| 10 |
|
| 11 |
|
| 12 |
+
# === 🗂️ Инициализация ===
|
| 13 |
os.makedirs("/app/models", exist_ok=True)
|
| 14 |
FONT_PATH = "DejaVuSans.ttf"
|
| 15 |
|
|
|
|
| 21 |
)
|
| 22 |
|
| 23 |
|
| 24 |
+
# === ⚙️ Модели ===
|
| 25 |
def load_model(task, model_name):
|
| 26 |
print(f"🔹 Загружается модель: {model_name}")
|
| 27 |
return pipeline(task, model=model_name, cache_dir="/app/models")
|
|
|
|
| 33 |
}
|
| 34 |
|
| 35 |
|
| 36 |
+
# === 📄 Чтение файлов ===
|
| 37 |
def read_file(file):
|
| 38 |
if not file:
|
| 39 |
return ""
|
|
|
|
| 77 |
model = summarizers.get(lang, summarizers["en"])
|
| 78 |
flags = {"ru": "🇷🇺 Русский", "kz": "🇰🇿 Қазақ тілі", "en": "🇬🇧 English"}
|
| 79 |
lang_label = flags.get(lang, "🌍 Unknown")
|
|
|
|
| 80 |
model_label = model.model.name_or_path if hasattr(model.model, "name_or_path") else "Custom"
|
| 81 |
+
|
| 82 |
chunk_size = 2500
|
| 83 |
overlap = 200
|
| 84 |
summaries = []
|
|
|
|
| 125 |
return path
|
| 126 |
|
| 127 |
|
| 128 |
+
# === 🚀 Основная функция ===
|
| 129 |
def summarize_file(file):
|
| 130 |
text = read_file(file)
|
| 131 |
if text.startswith("⚠️"):
|
|
|
|
| 143 |
return summary, lang_label, model_label, src_len, sum_len, compression, txt_path, docx_path, pdf_path
|
| 144 |
|
| 145 |
|
| 146 |
+
# === 🧩 Интерфейс (универсальный для любых версий Gradio 4.4+) ===
|
| 147 |
+
with gr.Blocks() as demo:
|
| 148 |
+
gr.Markdown(
|
| 149 |
+
"<h2 style='text-align:center'>🧠 Eroha Summarizer PRO</h2>"
|
| 150 |
+
"<p style='text-align:center'>Определяет язык (🇷🇺 / 🇰🇿 / 🇬🇧), создаёт краткое резюме и сохраняет в TXT, DOCX, PDF</p>"
|
| 151 |
+
)
|
| 152 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 153 |
file_input = gr.File(label="📂 Загрузите документ (.pdf, .docx, .txt)")
|
| 154 |
run_btn = gr.Button("🔍 Сгенерировать резюме", variant="primary")
|
| 155 |
|