Spaces:
Runtime error
Runtime error
JustinLin610
commited on
Commit
•
0509ee0
1
Parent(s):
8c40668
debug
Browse files
app.py
CHANGED
@@ -8,8 +8,6 @@ os.system('cd fairseq;'
|
|
8 |
os.system('cd ezocr;'
|
9 |
'pip install .; cd ..')
|
10 |
|
11 |
-
os.system('pip install https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.14.0-py3-none-any.whl;'
|
12 |
-
'pip install "modelscope[cv]" -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html')
|
13 |
|
14 |
import torch
|
15 |
import numpy as np
|
@@ -24,10 +22,6 @@ from typing import List, Tuple
|
|
24 |
import cv2
|
25 |
from easyocrlite import ReaderLite
|
26 |
import gradio as gr
|
27 |
-
from modelscope.pipelines import pipeline
|
28 |
-
from modelscope.utils.constant import Tasks
|
29 |
-
from modelscope.outputs import OutputKeys
|
30 |
-
from modelscope.preprocessors.image import load_image
|
31 |
|
32 |
|
33 |
# Register refcoco task
|
@@ -120,8 +114,7 @@ def patch_resize_transform(patch_image_size=480, is_document=False):
|
|
120 |
return _patch_resize_transform
|
121 |
|
122 |
|
123 |
-
|
124 |
-
ocr_detection = pipeline(Tasks.ocr_detection, model='damo/cv_resnet18_ocr-detection-line-level_damo')
|
125 |
|
126 |
overrides={"eval_cider": False, "beam": 5, "max_len_b": 64, "patch_image_size": 480,
|
127 |
"orig_patch_image_size": 224, "no_repeat_ngram_size": 0, "seed": 42}
|
@@ -173,51 +166,37 @@ def apply_half(t):
|
|
173 |
return t
|
174 |
|
175 |
|
176 |
-
def ocr(img):
|
177 |
-
boxes = ocr_detection(img)[OutputKeys.POLYGONS]
|
178 |
-
image = cv2.imread(img)
|
179 |
out_img = Image.open(img)
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
|
|
|
|
|
|
|
|
191 |
sample = utils.move_to_cuda(sample) if use_cuda else sample
|
192 |
sample = utils.apply_to_sample(apply_half, sample) if use_fp16 else sample
|
193 |
|
194 |
with torch.no_grad():
|
195 |
result, scores = eval_step(task, generator, models, sample)
|
196 |
ocr_result.append([str(i+1), result[0]['ocr'].replace(' ', '')])
|
|
|
197 |
result = pd.DataFrame(ocr_result, columns=['Box ID', 'Text'])
|
198 |
-
# results = get_images(img, reader, text_confidence=0.7, text_threshold=0.4,
|
199 |
-
# link_threshold=0.43, slope_ths=0., add_margin=0.02)
|
200 |
-
# box_list, image_list = zip(*results)
|
201 |
-
draw_boxes(out_img, boxes)
|
202 |
-
#
|
203 |
-
# ocr_result = []
|
204 |
-
# for i, (box, image) in enumerate(zip(box_list, image_list)):
|
205 |
-
# image = Image.fromarray(image)
|
206 |
-
# sample = construct_sample(task, image, cfg.task.patch_image_size)
|
207 |
-
# sample = utils.move_to_cuda(sample) if use_cuda else sample
|
208 |
-
# sample = utils.apply_to_sample(apply_half, sample) if use_fp16 else sample
|
209 |
-
#
|
210 |
-
# with torch.no_grad():
|
211 |
-
# result, scores = eval_step(task, generator, models, sample)
|
212 |
-
# ocr_result.append([str(i+1), result[0]['ocr'].replace(' ', '')])
|
213 |
-
#
|
214 |
-
# result = pd.DataFrame(ocr_result, columns=['Box ID', 'Text'])
|
215 |
|
216 |
return out_img, result
|
217 |
|
218 |
|
219 |
title = "Chinese OCR"
|
220 |
-
description = "Gradio Demo for Chinese OCR based on OFA. "\
|
221 |
"Upload your own image or click any one of the examples, and click " \
|
222 |
"\"Submit\" and then wait for the generated OCR result. " \
|
223 |
"\n中文OCR体验区。欢迎上传图片,静待检测文字返回~"
|
@@ -225,7 +204,8 @@ article = "<p style='text-align: center'><a href='https://github.com/OFA-Sys/OFA
|
|
225 |
"Repo</a></p> "
|
226 |
examples = [['shupai.png'], ['chinese.jpg'], ['gaidao.jpeg'], ['qiaodaima.png'],
|
227 |
['benpao.jpeg'], ['wanli.png'], ['xsd.jpg']]
|
228 |
-
io = gr.Interface(fn=ocr, inputs=gr.inputs.Image(type='filepath', label='Image'),
|
|
|
229 |
outputs=[gr.outputs.Image(type='pil', label='Image'),
|
230 |
gr.outputs.Dataframe(headers=['Box ID', 'Text'], type='pandas', label='OCR Results')],
|
231 |
title=title, description=description, article=article, examples=examples)
|
|
|
8 |
os.system('cd ezocr;'
|
9 |
'pip install .; cd ..')
|
10 |
|
|
|
|
|
11 |
|
12 |
import torch
|
13 |
import numpy as np
|
|
|
22 |
import cv2
|
23 |
from easyocrlite import ReaderLite
|
24 |
import gradio as gr
|
|
|
|
|
|
|
|
|
25 |
|
26 |
|
27 |
# Register refcoco task
|
|
|
114 |
return _patch_resize_transform
|
115 |
|
116 |
|
117 |
+
reader = ReaderLite(gpu=True)
|
|
|
118 |
|
119 |
overrides={"eval_cider": False, "beam": 5, "max_len_b": 64, "patch_image_size": 480,
|
120 |
"orig_patch_image_size": 224, "no_repeat_ngram_size": 0, "seed": 42}
|
|
|
166 |
return t
|
167 |
|
168 |
|
169 |
+
def ocr(img, task):
|
|
|
|
|
170 |
out_img = Image.open(img)
|
171 |
+
if task == "General":
|
172 |
+
results = get_images(img, reader, text_confidence=0.7, text_threshold=0.43,
|
173 |
+
link_threshold=0.43, slope_ths=0., add_margin=0.02)
|
174 |
+
elif task == "Document":
|
175 |
+
results = get_images(img, reader, text_threshold=0.3, sharp=1.2,
|
176 |
+
contrast=1.2, space_ths=1.8)
|
177 |
+
else:
|
178 |
+
raise NotImplementedError
|
179 |
+
box_list, image_list = zip(*results)
|
180 |
+
draw_boxes(out_img, box_list)
|
181 |
+
|
182 |
+
ocr_result = []
|
183 |
+
for i, (box, image) in enumerate(zip(box_list, image_list)):
|
184 |
+
image = Image.fromarray(image)
|
185 |
+
sample = construct_sample(task, image, cfg.task.patch_image_size)
|
186 |
sample = utils.move_to_cuda(sample) if use_cuda else sample
|
187 |
sample = utils.apply_to_sample(apply_half, sample) if use_fp16 else sample
|
188 |
|
189 |
with torch.no_grad():
|
190 |
result, scores = eval_step(task, generator, models, sample)
|
191 |
ocr_result.append([str(i+1), result[0]['ocr'].replace(' ', '')])
|
192 |
+
|
193 |
result = pd.DataFrame(ocr_result, columns=['Box ID', 'Text'])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
194 |
|
195 |
return out_img, result
|
196 |
|
197 |
|
198 |
title = "Chinese OCR"
|
199 |
+
description = "Gradio Demo for Chinese OCR based on OFA-Base. "\
|
200 |
"Upload your own image or click any one of the examples, and click " \
|
201 |
"\"Submit\" and then wait for the generated OCR result. " \
|
202 |
"\n中文OCR体验区。欢迎上传图片,静待检测文字返回~"
|
|
|
204 |
"Repo</a></p> "
|
205 |
examples = [['shupai.png'], ['chinese.jpg'], ['gaidao.jpeg'], ['qiaodaima.png'],
|
206 |
['benpao.jpeg'], ['wanli.png'], ['xsd.jpg']]
|
207 |
+
io = gr.Interface(fn=ocr, inputs=[gr.inputs.Image(type='filepath', label='Image'),
|
208 |
+
gr.inputs.Radio(choices=["General", "Document"], type="value", default="General", label="Domain")],
|
209 |
outputs=[gr.outputs.Image(type='pil', label='Image'),
|
210 |
gr.outputs.Dataframe(headers=['Box ID', 'Text'], type='pandas', label='OCR Results')],
|
211 |
title=title, description=description, article=article, examples=examples)
|