Phu92kt commited on
Commit
fe9b886
·
verified ·
1 Parent(s): 6517384

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +65 -0
app.py ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ import onnx
3
+ import onnxruntime as rt
4
+ from torchvision import transforms as T
5
+ from PIL import Image
6
+ from tokenizer_base import Tokenizer
7
+ import pathlib
8
+ import os
9
+ import gradio as gr
10
+ from huggingface_hub import Repository
11
+
12
+ # Параметры модели
13
+ model_file = "captcha.onnx"
14
+ img_size = (32,128)
15
+ charset = r"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~"
16
+ tokenizer_base = Tokenizer(charset)
17
+
18
+ # Преобразования для изображения
19
+ def get_transform(img_size):
20
+ transforms = [
21
+ T.Resize(img_size, T.InterpolationMode.BICUBIC),
22
+ T.ToTensor(),
23
+ T.Normalize(0.5, 0.5)
24
+ ]
25
+ return T.Compose(transforms)
26
+
27
+ # Преобразование тензора в numpy
28
+ def to_numpy(tensor):
29
+ return tensor.detach().cpu().numpy() if tensor.requires_grad else tensor.cpu().numpy()
30
+
31
+ # Инициализация модели ONNX
32
+ def initialize_model(model_file):
33
+ transform = get_transform(img_size)
34
+ onnx_model = onnx.load(model_file)
35
+ onnx.checker.check_model(onnx_model)
36
+ ort_session = rt.InferenceSession(model_file)
37
+ return transform, ort_session
38
+
39
+ # Функция для распознавания текста на изображении
40
+ def get_text(img_org):
41
+ x = transform(img_org.convert('RGB')).unsqueeze(0) # Преобразуем изображение в тензор
42
+
43
+ # Предсказание с помощью ONNX
44
+ ort_inputs = {ort_session.get_inputs()[0].name: to_numpy(x)}
45
+ logits = ort_session.run(None, ort_inputs)[0]
46
+ probs = torch.tensor(logits).softmax(-1) # Вычисляем вероятности
47
+ preds, probs = tokenizer_base.decode(probs) # Декодируем результат
48
+ preds = preds[0] # Получаем первое предсказание
49
+ return preds
50
+
51
+ # Инициализация модели
52
+ transform, ort_session = initialize_model(model_file=model_file)
53
+
54
+ # Создание Gradio интерфейса для обработки изображений
55
+ def gradio_interface():
56
+ return gr.Interface(
57
+ fn=get_text,
58
+ inputs=gr.Image(type="pil"), # Принимаем изображение в формате PIL
59
+ outputs=gr.Textbox(), # Выводим текст
60
+ title="2Captcha image", # Заголовок
61
+ description="2Captcha image.", # Описание
62
+ )
63
+
64
+ # Запуск интерфейса
65
+ gradio_interface().launch()