Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
|
@@ -1,4 +1,6 @@
|
|
| 1 |
import pandas as pd
|
|
|
|
|
|
|
| 2 |
import PIL
|
| 3 |
from PIL import Image
|
| 4 |
from PIL import ImageDraw
|
|
@@ -21,7 +23,16 @@ config['predictor']['beamsearch'] = True
|
|
| 21 |
config['device'] = 'cpu' # mps
|
| 22 |
|
| 23 |
recognitor = Predictor(config)
|
| 24 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 25 |
def draw_boxes(image, bounds, color='yellow', width=2):
|
| 26 |
draw = ImageDraw.Draw(image)
|
| 27 |
for bound in bounds:
|
|
@@ -29,7 +40,7 @@ def draw_boxes(image, bounds, color='yellow', width=2):
|
|
| 29 |
draw.line([*p0, *p1, *p2, *p3, *p0], fill=color, width=width)
|
| 30 |
return image
|
| 31 |
|
| 32 |
-
def inference(filepath, lang):
|
| 33 |
img = cv2.imread(filepath)
|
| 34 |
width, height, _ = img.shape
|
| 35 |
reader = easyocr.Reader(lang)
|
|
@@ -56,6 +67,9 @@ def inference(filepath, lang):
|
|
| 56 |
cropped_image = Image.fromarray(cropped_image)
|
| 57 |
out = recognitor.predict(cropped_image)
|
| 58 |
print(out)
|
|
|
|
|
|
|
|
|
|
| 59 |
new_bounds.append((bbox,text, out, prob))
|
| 60 |
im = PIL.Image.open(filepath)
|
| 61 |
draw_boxes(im, bounds)
|
|
@@ -72,7 +86,7 @@ choices = [
|
|
| 72 |
]
|
| 73 |
gr.Interface(
|
| 74 |
inference,
|
| 75 |
-
[gr.inputs.Image(type='filepath', label='Input'),gr.inputs.CheckboxGroup(choices, type="value", default=['vi'], label='language')],
|
| 76 |
[gr.outputs.Image(type='pil', label='Output'), gr.outputs.Dataframe(type='pandas', headers=['easyOCR','vietOCR', 'confidence'])],
|
| 77 |
title=title,
|
| 78 |
description=description,
|
|
|
|
| 1 |
import pandas as pd
|
| 2 |
+
from transformers import pipeline
|
| 3 |
+
|
| 4 |
import PIL
|
| 5 |
from PIL import Image
|
| 6 |
from PIL import ImageDraw
|
|
|
|
| 23 |
config['device'] = 'cpu' # mps
|
| 24 |
|
| 25 |
recognitor = Predictor(config)
|
| 26 |
+
classifier = pipeline("zero-shot-classification",
|
| 27 |
+
model="NDugar/debertav3-mnli-snli-anli")
|
| 28 |
+
def zero_shot(doc, candidates):
|
| 29 |
+
given_labels = candidates.split(", ")
|
| 30 |
+
dictionary = classifier(doc, given_labels)
|
| 31 |
+
new_dict = dict (zip (dictionary['labels'], dictionary['scores']))
|
| 32 |
+
max_label = max (new_dict, key=new_dict.get)
|
| 33 |
+
max_score = max(dictionary['scores'])
|
| 34 |
+
return max_label, max_score
|
| 35 |
+
|
| 36 |
def draw_boxes(image, bounds, color='yellow', width=2):
|
| 37 |
draw = ImageDraw.Draw(image)
|
| 38 |
for bound in bounds:
|
|
|
|
| 40 |
draw.line([*p0, *p1, *p2, *p3, *p0], fill=color, width=width)
|
| 41 |
return image
|
| 42 |
|
| 43 |
+
def inference(filepath, lang, labels):
|
| 44 |
img = cv2.imread(filepath)
|
| 45 |
width, height, _ = img.shape
|
| 46 |
reader = easyocr.Reader(lang)
|
|
|
|
| 67 |
cropped_image = Image.fromarray(cropped_image)
|
| 68 |
out = recognitor.predict(cropped_image)
|
| 69 |
print(out)
|
| 70 |
+
max_label, max_score = zero_shot(out, labels)
|
| 71 |
+
print(max_label)
|
| 72 |
+
print(max_score)
|
| 73 |
new_bounds.append((bbox,text, out, prob))
|
| 74 |
im = PIL.Image.open(filepath)
|
| 75 |
draw_boxes(im, bounds)
|
|
|
|
| 86 |
]
|
| 87 |
gr.Interface(
|
| 88 |
inference,
|
| 89 |
+
[gr.inputs.Image(type='filepath', label='Input'),gr.inputs.CheckboxGroup(choices, type="value", default=['vi'], label='language'), gr.inputs.Textbox(label='Labels')],
|
| 90 |
[gr.outputs.Image(type='pil', label='Output'), gr.outputs.Dataframe(type='pandas', headers=['easyOCR','vietOCR', 'confidence'])],
|
| 91 |
title=title,
|
| 92 |
description=description,
|