Spaces:
Sleeping
Sleeping
Commit
·
3b86270
1
Parent(s):
773423a
update char images
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- app.py +32 -12
- chars//343/201/202.png +0 -0
- chars//343/201/204.png +0 -0
- chars//343/201/206.png +0 -0
- chars//343/201/210.png +0 -0
- chars//343/201/212.png +0 -0
- chars//343/201/213.png +0 -0
- chars//343/201/215.png +0 -0
- chars//343/201/217.png +0 -0
- chars//343/201/221.png +0 -0
- chars//343/201/223.png +0 -0
- chars//343/201/225.png +0 -0
- chars//343/201/227.png +0 -0
- chars//343/201/231.png +0 -0
- chars//343/201/233.png +0 -0
- chars//343/201/235.png +0 -0
- chars//343/201/237.png +0 -0
- chars//343/201/241.png +0 -0
- chars//343/201/244.png +0 -0
- chars//343/201/246.png +0 -0
- chars//343/201/250.png +0 -0
- chars//343/201/252.png +0 -0
- chars//343/201/253.png +0 -0
- chars//343/201/254.png +0 -0
- chars//343/201/255.png +0 -0
- chars//343/201/256.png +0 -0
- chars//343/201/257.png +0 -0
- chars//343/201/262.png +0 -0
- chars//343/201/265.png +0 -0
- chars//343/201/270.png +0 -0
- chars//343/201/273.png +0 -0
- chars//343/201/276.png +0 -0
- chars//343/201/277.png +0 -0
- chars//343/202/200.png +0 -0
- chars//343/202/201.png +0 -0
- chars//343/202/202.png +0 -0
- chars//343/202/204.png +0 -0
- chars//343/202/206.png +0 -0
- chars//343/202/210.png +0 -0
- chars//343/202/211.png +0 -0
- chars//343/202/212.png +0 -0
- chars//343/202/213.png +0 -0
- chars//343/202/214.png +0 -0
- chars//343/202/215.png +0 -0
- chars//343/202/217.png +0 -0
- chars//343/202/222.png +0 -0
- chars//343/202/223.png +0 -0
- chars//343/202/242.png +0 -0
- chars//343/202/244.png +0 -0
- chars//343/202/246.png +0 -0
app.py
CHANGED
@@ -1,30 +1,50 @@
|
|
|
|
|
|
|
|
1 |
import gradio as gr
|
2 |
import numpy as np
|
3 |
|
4 |
from ocr import Recognizer
|
5 |
|
6 |
-
|
|
|
|
|
|
|
|
|
|
|
7 |
recog = Recognizer("model/model.xml", "model/char_list.txt")
|
8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
with gr.Row():
|
10 |
-
|
11 |
-
|
12 |
-
result = gr.TextArea()
|
13 |
-
check = gr.Button()
|
14 |
|
15 |
def parse_item(item):
|
16 |
prob = item["prob"]
|
17 |
char = item["char"]
|
18 |
-
return f"{char}: {prob}"
|
19 |
|
20 |
def do_recog(img: dict[str, np.ndarray]):
|
21 |
-
|
22 |
-
|
|
|
|
|
|
|
23 |
|
24 |
-
def
|
25 |
-
return
|
26 |
|
27 |
-
|
28 |
-
|
29 |
|
30 |
app.launch()
|
|
|
1 |
+
import os
|
2 |
+
import random
|
3 |
+
|
4 |
import gradio as gr
|
5 |
import numpy as np
|
6 |
|
7 |
from ocr import Recognizer
|
8 |
|
9 |
+
chars = [os.path.join(dn, fn) for dn, _, ff in os.walk("chars") for fn in ff]
|
10 |
+
|
11 |
+
font = gr.themes.GoogleFont("Noto Sans")
|
12 |
+
theme = gr.themes.Soft(font=font)
|
13 |
+
|
14 |
+
with gr.Blocks(theme=theme, title="Kana Writer") as app:
|
15 |
recog = Recognizer("model/model.xml", "model/char_list.txt")
|
16 |
|
17 |
+
brush = gr.Brush(default_color="#111", default_size=15)
|
18 |
+
sketch = gr.Sketchpad(
|
19 |
+
random.choice(chars),
|
20 |
+
type="numpy",
|
21 |
+
brush=brush,
|
22 |
+
layers=False,
|
23 |
+
image_mode="RGB",
|
24 |
+
label="寫字練習",
|
25 |
+
)
|
26 |
+
result = gr.TextArea(label="辨識結果", lines=1)
|
27 |
+
|
28 |
with gr.Row():
|
29 |
+
check_btn = gr.Button("辨識")
|
30 |
+
rand_btn = gr.Button("隨機")
|
|
|
|
|
31 |
|
32 |
def parse_item(item):
|
33 |
prob = item["prob"]
|
34 |
char = item["char"]
|
35 |
+
return f"{char}: {prob:.2%}"
|
36 |
|
37 |
def do_recog(img: dict[str, np.ndarray]):
|
38 |
+
img: np.ndarray = img["layers"][0]
|
39 |
+
img[img == 0] = 255
|
40 |
+
img[img != 255] = 0
|
41 |
+
_, nbest = recog(img)
|
42 |
+
return "\n".join(parse_item(i) for item in nbest for i in item if i["prob"] > 1e-2)
|
43 |
|
44 |
+
def rand_char():
|
45 |
+
return random.choice(chars)
|
46 |
|
47 |
+
check_btn.click(do_recog, sketch, result)
|
48 |
+
rand_btn.click(rand_char, None, sketch)
|
49 |
|
50 |
app.launch()
|
chars//343/201/202.png
ADDED
![]() |
chars//343/201/204.png
ADDED
![]() |
chars//343/201/206.png
ADDED
![]() |
chars//343/201/210.png
ADDED
![]() |
chars//343/201/212.png
ADDED
![]() |
chars//343/201/213.png
ADDED
![]() |
chars//343/201/215.png
ADDED
![]() |
chars//343/201/217.png
ADDED
![]() |
chars//343/201/221.png
ADDED
![]() |
chars//343/201/223.png
ADDED
![]() |
chars//343/201/225.png
ADDED
![]() |
chars//343/201/227.png
ADDED
![]() |
chars//343/201/231.png
ADDED
![]() |
chars//343/201/233.png
ADDED
![]() |
chars//343/201/235.png
ADDED
![]() |
chars//343/201/237.png
ADDED
![]() |
chars//343/201/241.png
ADDED
![]() |
chars//343/201/244.png
ADDED
![]() |
chars//343/201/246.png
ADDED
![]() |
chars//343/201/250.png
ADDED
![]() |
chars//343/201/252.png
ADDED
![]() |
chars//343/201/253.png
ADDED
![]() |
chars//343/201/254.png
ADDED
![]() |
chars//343/201/255.png
ADDED
![]() |
chars//343/201/256.png
ADDED
![]() |
chars//343/201/257.png
ADDED
![]() |
chars//343/201/262.png
ADDED
![]() |
chars//343/201/265.png
ADDED
![]() |
chars//343/201/270.png
ADDED
![]() |
chars//343/201/273.png
ADDED
![]() |
chars//343/201/276.png
ADDED
![]() |
chars//343/201/277.png
ADDED
![]() |
chars//343/202/200.png
ADDED
![]() |
chars//343/202/201.png
ADDED
![]() |
chars//343/202/202.png
ADDED
![]() |
chars//343/202/204.png
ADDED
![]() |
chars//343/202/206.png
ADDED
![]() |
chars//343/202/210.png
ADDED
![]() |
chars//343/202/211.png
ADDED
![]() |
chars//343/202/212.png
ADDED
![]() |
chars//343/202/213.png
ADDED
![]() |
chars//343/202/214.png
ADDED
![]() |
chars//343/202/215.png
ADDED
![]() |
chars//343/202/217.png
ADDED
![]() |
chars//343/202/222.png
ADDED
![]() |
chars//343/202/223.png
ADDED
![]() |
chars//343/202/242.png
ADDED
![]() |
chars//343/202/244.png
ADDED
![]() |
chars//343/202/246.png
ADDED
![]() |