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
|
@@ -14,6 +14,8 @@ from torchvision.transforms import functional as F
|
|
14 |
import tempfile
|
15 |
import time
|
16 |
import requests
|
|
|
|
|
17 |
|
18 |
# Инициализация клиента для модели HuggingFaceH4/zephyr-7b-beta
|
19 |
client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
|
@@ -22,36 +24,6 @@ client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
|
|
22 |
model = fasterrcnn_resnet50_fpn(pretrained=True)
|
23 |
model.eval()
|
24 |
|
25 |
-
# API для модели NSFW
|
26 |
-
API_URL = "https://api-inference.huggingface.co/models/Falconsai/nsfw_image_detection"
|
27 |
-
headers = {"Authorization": "Bearer hf_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"} # Замените на ваш API-токен
|
28 |
-
|
29 |
-
# Функция для определения NSFW в изображении
|
30 |
-
def detect_nsfw(image):
|
31 |
-
if image is None:
|
32 |
-
return "Изображение не загружено."
|
33 |
-
|
34 |
-
# Сохраняем изображение во временный файл
|
35 |
-
with tempfile.NamedTemporaryFile(suffix=".jpg", delete=False) as tmp_file:
|
36 |
-
image.save(tmp_file.name)
|
37 |
-
filename = tmp_file.name
|
38 |
-
|
39 |
-
# Отправка изображения в модель NSFW через API
|
40 |
-
try:
|
41 |
-
with open(filename, "rb") as f:
|
42 |
-
data = f.read()
|
43 |
-
response = requests.post(API_URL, headers=headers, data=data)
|
44 |
-
result = response.json()
|
45 |
-
|
46 |
-
# Обработка результата
|
47 |
-
if isinstance(result, list) and len(result) > 0 and "score" in result[0]:
|
48 |
-
nsfw_score = result[0]["score"]
|
49 |
-
return f"Процент NSFW: {nsfw_score * 100:.2f}%"
|
50 |
-
else:
|
51 |
-
return "Не удалось определить NSFW. Попробуйте другое изображение."
|
52 |
-
except Exception as e:
|
53 |
-
return f"Ошибка при обработке изображения: {str(e)}"
|
54 |
-
|
55 |
# Функция для обработки PDF
|
56 |
def process_pdf(file):
|
57 |
pdf_reader = PyPDF2.PdfReader(file)
|
@@ -199,6 +171,37 @@ def analyze_txt(file):
|
|
199 |
text = process_txt(file)
|
200 |
return f"Содержимое файла:\n{text}"
|
201 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
202 |
# Создание интерфейса
|
203 |
with gr.Blocks() as demo:
|
204 |
# Заголовок с изображением
|
@@ -253,13 +256,15 @@ with gr.Blocks() as demo:
|
|
253 |
convert_button = gr.Button("Конвертировать")
|
254 |
convert_button.click(fn=convert_image, inputs=[img_input, img_format], outputs=img_output)
|
255 |
|
256 |
-
# Вкладка Felguk
|
257 |
-
with gr.Tab("Felguk
|
258 |
-
gr.Markdown("## Felguk
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
|
|
|
|
263 |
|
264 |
# Интерфейс чата
|
265 |
chat_interface = gr.ChatInterface(
|
|
|
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
|
|
|
14 |
import tempfile
|
15 |
import time
|
16 |
import requests
|
17 |
+
import zipfile
|
18 |
+
import os
|
19 |
|
20 |
# Инициализация клиента для модели HuggingFaceH4/zephyr-7b-beta
|
21 |
client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
|
|
|
24 |
model = fasterrcnn_resnet50_fpn(pretrained=True)
|
25 |
model.eval()
|
26 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
# Функция для обработки PDF
|
28 |
def process_pdf(file):
|
29 |
pdf_reader = PyPDF2.PdfReader(file)
|
|
|
171 |
text = process_txt(file)
|
172 |
return f"Содержимое файла:\n{text}"
|
173 |
|
174 |
+
# Функция для генерации изображения с текстом и шрифтом
|
175 |
+
def generate_text_image(text, font_file, font_size=40):
|
176 |
+
if not text:
|
177 |
+
return "Введите текст."
|
178 |
+
|
179 |
+
# Если шрифт не загружен, используем стандартный
|
180 |
+
if font_file is None:
|
181 |
+
font = ImageFont.load_default()
|
182 |
+
else:
|
183 |
+
# Если шрифт в архиве, извлекаем его
|
184 |
+
if font_file.name.endswith(".zip"):
|
185 |
+
with zipfile.ZipFile(font_file.name, 'r') as zip_ref:
|
186 |
+
zip_ref.extractall("temp_fonts")
|
187 |
+
font_files = [f for f in os.listdir("temp_fonts") if f.endswith(('.ttf', '.otf'))]
|
188 |
+
if not font_files:
|
189 |
+
return "В архиве нет файлов шрифтов (.ttf, .otf)."
|
190 |
+
font_path = os.path.join("temp_fonts", font_files[0])
|
191 |
+
font = ImageFont.truetype(font_path, font_size)
|
192 |
+
else:
|
193 |
+
font = ImageFont.truetype(font_file.name, font_size)
|
194 |
+
|
195 |
+
# Создаем изображение с текстом
|
196 |
+
image = Image.new("RGB", (800, 200), color="white")
|
197 |
+
draw = ImageDraw.Draw(image)
|
198 |
+
draw.text((10, 10), text, font=font, fill="black")
|
199 |
+
|
200 |
+
# Сохраняем изображение во временный файл
|
201 |
+
with tempfile.NamedTemporaryFile(suffix=".png", delete=False) as tmp_file:
|
202 |
+
image.save(tmp_file.name)
|
203 |
+
return tmp_file.name
|
204 |
+
|
205 |
# Создание интерфейса
|
206 |
with gr.Blocks() as demo:
|
207 |
# Заголовок с изображением
|
|
|
256 |
convert_button = gr.Button("Конвертировать")
|
257 |
convert_button.click(fn=convert_image, inputs=[img_input, img_format], outputs=img_output)
|
258 |
|
259 |
+
# Вкладка Felguk Fonts
|
260 |
+
with gr.Tab("Felguk Fonts"):
|
261 |
+
gr.Markdown("## Felguk Fonts: Генерация текста с шрифтом")
|
262 |
+
text_input = gr.Textbox(label="Введите текст", placeholder="Введите текст здесь...")
|
263 |
+
font_input = gr.File(label="Загрузите шрифт (.ttf, .otf, .zip)", file_types=[".ttf", ".otf", ".zip"])
|
264 |
+
font_size_input = gr.Slider(minimum=10, maximum=100, value=40, label="Размер шрифта")
|
265 |
+
generate_button = gr.Button("Сгенерировать изображение")
|
266 |
+
image_output = gr.Image(label="Результат", type="filepath")
|
267 |
+
generate_button.click(fn=generate_text_image, inputs=[text_input, font_input, font_size_input], outputs=image_output)
|
268 |
|
269 |
# Интерфейс чата
|
270 |
chat_interface = gr.ChatInterface(
|