Update app.py
Browse files
app.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
import gradio as gr
|
2 |
from huggingface_hub import InferenceClient
|
3 |
import PyPDF2
|
4 |
-
from PIL import Image,
|
5 |
import cv2
|
6 |
import numpy as np
|
7 |
from pydub import AudioSegment
|
@@ -24,7 +24,7 @@ from googletrans import Translator
|
|
24 |
client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
|
25 |
|
26 |
# Загрузка предобученной модели для обнаружения объектов
|
27 |
-
model = fasterrcnn_resnet50_fpn(
|
28 |
model.eval()
|
29 |
|
30 |
# Функция для обработки PDF
|
@@ -174,92 +174,6 @@ def analyze_txt(file):
|
|
174 |
text = process_txt(file)
|
175 |
return f"Содержимое файла:\n{text}"
|
176 |
|
177 |
-
# Функция для генерации изображения с текстом и шрифтом
|
178 |
-
def generate_text_image(text, font_file, font_size=40, bg_color="#FFFFFF", text_color="#000000"):
|
179 |
-
if not text:
|
180 |
-
return "Введите текст."
|
181 |
-
|
182 |
-
# Если шрифт не загружен, используем стандартный
|
183 |
-
if font_file is None:
|
184 |
-
font = ImageFont.load_default()
|
185 |
-
else:
|
186 |
-
# Если шрифт в архиве, извлекаем его
|
187 |
-
if font_file.name.endswith(".zip"):
|
188 |
-
with zipfile.ZipFile(font_file.name, 'r') as zip_ref:
|
189 |
-
zip_ref.extractall("temp_fonts")
|
190 |
-
font_files = [f for f in os.listdir("temp_fonts") if f.endswith(('.ttf', '.otf'))]
|
191 |
-
if not font_files:
|
192 |
-
return "В архиве нет файлов шрифтов (.ttf, .otf)."
|
193 |
-
font_path = os.path.join("temp_fonts", font_files[0])
|
194 |
-
font = ImageFont.truetype(font_path, font_size)
|
195 |
-
else:
|
196 |
-
font = ImageFont.truetype(font_file.name, font_size)
|
197 |
-
|
198 |
-
# Создаем изображение с текстом
|
199 |
-
image = Image.new("RGB", (800, 200), color=bg_color)
|
200 |
-
draw = ImageDraw.Draw(image)
|
201 |
-
|
202 |
-
# Рассчитываем позицию текста (по центру)
|
203 |
-
text_width, text_height = draw.textsize(text, font=font)
|
204 |
-
x = (800 - text_width) / 2
|
205 |
-
y = (200 - text_height) / 2
|
206 |
-
|
207 |
-
# Рисуем текст на изображении
|
208 |
-
draw.text((x, y), text, font=font, fill=text_color)
|
209 |
-
|
210 |
-
# Сохраняем изображение во временный файл
|
211 |
-
with tempfile.NamedTemporaryFile(suffix=".png", delete=False) as tmp_file:
|
212 |
-
image.save(tmp_file.name)
|
213 |
-
return tmp_file.name
|
214 |
-
|
215 |
-
# Функция для улучшения качества изображения
|
216 |
-
def enhance_image(image, contrast_factor=1.5, brightness_factor=1.2, sharpness_factor=1.5):
|
217 |
-
if image is None:
|
218 |
-
return None
|
219 |
-
|
220 |
-
img = Image.open(image.name)
|
221 |
-
|
222 |
-
# Улучшение контраста
|
223 |
-
enhancer = ImageEnhance.Contrast(img)
|
224 |
-
img = enhancer.enhance(contrast_factor)
|
225 |
-
|
226 |
-
# Улучшение яркости
|
227 |
-
enhancer = ImageEnhance.Brightness(img)
|
228 |
-
img = enhancer.enhance(brightness_factor)
|
229 |
-
|
230 |
-
# Улучшение резкости
|
231 |
-
enhancer = ImageEnhance.Sharpness(img)
|
232 |
-
img = enhancer.enhance(sharpness_factor)
|
233 |
-
|
234 |
-
# Сохраняем изображение во временный файл
|
235 |
-
with tempfile.NamedTemporaryFile(delete=False, suffix=".jpg") as tmp_file:
|
236 |
-
img.save(tmp_file.name)
|
237 |
-
return tmp_file.name
|
238 |
-
|
239 |
-
# Функция для обрезки аудио
|
240 |
-
def trim_audio(file, start_time: float, end_time: float):
|
241 |
-
if file is None:
|
242 |
-
return "Файл не загружен."
|
243 |
-
|
244 |
-
audio = AudioSegment.from_file(file.name)
|
245 |
-
trimmed_audio = audio[start_time * 1000:end_time * 1000]
|
246 |
-
|
247 |
-
# Сохраняем обрезанное аудио во временный файл
|
248 |
-
with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as tmp_file:
|
249 |
-
trimmed_audio.export(tmp_file.name, format="wav")
|
250 |
-
return tmp_file.name
|
251 |
-
|
252 |
-
# Функция для суммаризации текста
|
253 |
-
def summarize_text(text: str, max_length: int = 100):
|
254 |
-
summarizer = pipeline("summarization", model="facebook/bart-large-cnn")
|
255 |
-
summary = summarizer(text, max_length=max_length, min_length=30, do_sample=False)
|
256 |
-
return summary[0]['summary_text']
|
257 |
-
|
258 |
-
# Функция для поиска пространства на Hugging Face
|
259 |
-
def search_space(author: str, space_name: str):
|
260 |
-
url = f"https://huggingface.co/space/{author}/{space_name}"
|
261 |
-
return url
|
262 |
-
|
263 |
# Функция для изменения размера изображения
|
264 |
def resize_image(image, width: int, height: int):
|
265 |
if image is None:
|
@@ -387,15 +301,6 @@ with gr.Blocks() as demo:
|
|
387 |
convert_button = gr.Button("Конвертировать")
|
388 |
convert_button.click(fn=convert_image, inputs=[img_input, img_format], outputs=img_output)
|
389 |
|
390 |
-
# Вкладка Felguk-SpaceSearcher
|
391 |
-
with gr.Tab("Felguk-SpaceSearcher"):
|
392 |
-
gr.Markdown("## Felguk-SpaceSearcher: Поиск пространства на Hugging Face")
|
393 |
-
author_input = gr.Textbox(label="Имя автора")
|
394 |
-
space_name_input = gr.Textbox(label="Название пространства")
|
395 |
-
search_button = gr.Button("Найти пространство")
|
396 |
-
space_url_output = gr.Textbox(label="Ссылка на пространство", interactive=False)
|
397 |
-
search_button.click(fn=search_space, inputs=[author_input, space_name_input], outputs=space_url_output)
|
398 |
-
|
399 |
# Вкладка Felguk-ImageResizer
|
400 |
with gr.Tab("Felguk-ImageResizer"):
|
401 |
gr.Markdown("## Felguk-ImageResizer: Изменение размера изображения")
|
@@ -445,7 +350,7 @@ with gr.Blocks() as demo:
|
|
445 |
# Вкладка Felguk-PDFMerger
|
446 |
with gr.Tab("Felguk-PDFMerger"):
|
447 |
gr.Markdown("## Felguk-PDFMerger: Объединение PDF-файлов")
|
448 |
-
pdf_files_input = gr.
|
449 |
merge_button = gr.Button("Объединить PDF")
|
450 |
merged_pdf_output = gr.File(label="Результат")
|
451 |
merge_button.click(fn=merge_pdfs, inputs=pdf_files_input, outputs=merged_pdf_output)
|
|
|
1 |
import gradio as gr
|
2 |
from huggingface_hub import InferenceClient
|
3 |
import PyPDF2
|
4 |
+
from PIL import Image, ImageFont, ImageDraw
|
5 |
import cv2
|
6 |
import numpy as np
|
7 |
from pydub import AudioSegment
|
|
|
24 |
client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
|
25 |
|
26 |
# Загрузка предобученной модели для обнаружения объектов
|
27 |
+
model = fasterrcnn_resnet50_fpn(weights="DEFAULT")
|
28 |
model.eval()
|
29 |
|
30 |
# Функция для обработки PDF
|
|
|
174 |
text = process_txt(file)
|
175 |
return f"Содержимое файла:\n{text}"
|
176 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
177 |
# Функция для изменения размера изображения
|
178 |
def resize_image(image, width: int, height: int):
|
179 |
if image is None:
|
|
|
301 |
convert_button = gr.Button("Конвертировать")
|
302 |
convert_button.click(fn=convert_image, inputs=[img_input, img_format], outputs=img_output)
|
303 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
304 |
# Вкладка Felguk-ImageResizer
|
305 |
with gr.Tab("Felguk-ImageResizer"):
|
306 |
gr.Markdown("## Felguk-ImageResizer: Изменение размера изображения")
|
|
|
350 |
# Вкладка Felguk-PDFMerger
|
351 |
with gr.Tab("Felguk-PDFMerger"):
|
352 |
gr.Markdown("## Felguk-PDFMerger: Объединение PDF-файлов")
|
353 |
+
pdf_files_input = gr.Files(label="Загрузите PDF-файлы", file_types=[".pdf"])
|
354 |
merge_button = gr.Button("Объединить PDF")
|
355 |
merged_pdf_output = gr.File(label="Результат")
|
356 |
merge_button.click(fn=merge_pdfs, inputs=pdf_files_input, outputs=merged_pdf_output)
|