Yermek68 commited on
Commit
7e47a32
·
verified ·
1 Parent(s): 5ce0ed1

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +25 -7
app.py CHANGED
@@ -2,28 +2,46 @@ import gradio as gr
2
  from transformers import pipeline
3
  import pdfplumber
4
 
5
- # Загружаем модель для суммаризации текста
6
- summarizer = pipeline("summarization", model="facebook/bart-large-cnn")
 
 
 
 
 
 
 
 
 
 
7
 
8
  # Функция обработки файла
9
  def summarize_file(file):
10
  if file is None:
11
  return "⚠️ Пожалуйста, загрузите файл."
12
 
13
- # Проверяем тип файла
14
  if file.name.endswith(".pdf"):
15
  text = ""
16
  with pdfplumber.open(file.name) as pdf:
17
  for page in pdf.pages:
18
  text += page.extract_text() or ""
19
  else:
 
20
  text = file.read().decode("utf-8", errors="ignore")
21
 
 
 
22
  # Проверяем размер текста
23
- if len(text.strip()) < 50:
24
  return "⚠️ Слишком короткий текст для суммаризации."
25
 
 
 
 
 
26
  # Создаём резюме
 
27
  summary = summarizer(text, max_length=200, min_length=50, do_sample=False)
28
  return summary[0]["summary_text"]
29
 
@@ -36,6 +54,6 @@ demo = gr.Interface(
36
  description="Загрузите документ (PDF или TXT), и модель создаст краткое резюме.",
37
  )
38
 
39
- # Запуск приложения
40
- demo.launch(server_name="0.0.0.0", server_port=7860)
41
-
 
2
  from transformers import pipeline
3
  import pdfplumber
4
 
5
+ # Ленивая инициализация модели (создадим при первом вызове)
6
+ summarizer = None
7
+
8
+ def get_summarizer():
9
+ global summarizer
10
+ if summarizer is None:
11
+ # Более лёгкая модель, чем facebook/bart-large-cnn
12
+ summarizer = pipeline(
13
+ "summarization",
14
+ model="sshleifer/distilbart-cnn-12-6"
15
+ )
16
+ return summarizer
17
 
18
  # Функция обработки файла
19
  def summarize_file(file):
20
  if file is None:
21
  return "⚠️ Пожалуйста, загрузите файл."
22
 
23
+ # Читаем текст из PDF или TXT
24
  if file.name.endswith(".pdf"):
25
  text = ""
26
  with pdfplumber.open(file.name) as pdf:
27
  for page in pdf.pages:
28
  text += page.extract_text() or ""
29
  else:
30
+ # Другие форматы считаем как текстовый файл в UTF-8
31
  text = file.read().decode("utf-8", errors="ignore")
32
 
33
+ text = text.strip()
34
+
35
  # Проверяем размер текста
36
+ if len(text) < 50:
37
  return "⚠️ Слишком короткий текст для суммаризации."
38
 
39
+ # Ограничим длину текста, чтобы не перегружать модель
40
+ if len(text) > 3000:
41
+ text = text[:3000]
42
+
43
  # Создаём резюме
44
+ summarizer = get_summarizer()
45
  summary = summarizer(text, max_length=200, min_length=50, do_sample=False)
46
  return summary[0]["summary_text"]
47
 
 
54
  description="Загрузите документ (PDF или TXT), и модель создаст краткое резюме.",
55
  )
56
 
57
+ # Запуск приложения (для Spaces достаточно просто demo.launch())
58
+ if __name__ == "__main__":
59
+ demo.launch(server_name="0.0.0.0", server_port=7860)