|
@@ -16,15 +16,15 @@ __all__ = [
|
|
|
__StrBase = "qwertyuioplkjhgfdsazxcvbnm1234567890ZXCVBNMLKJHGFDSAQWERTYUIOP"
|
|
|
__StrBaseLen = len(__StrBase) - 1
|
|
|
__AcceptExtNames = ["jpg", "jpeg", "bmp", "png", "rgb", "tif", "tiff", "gif", "pdf"]
|
|
|
+__EngineNum = 2
|
|
|
__Engines = [PaddleOCR(
|
|
|
use_gpu=False,
|
|
|
enable_mkldnn=True,
|
|
|
det_model_dir="models/det/",
|
|
|
rec_model_dir="models/rec/",
|
|
|
cls_model_dir="models/cls/",
|
|
|
- use_angle_cls=True,
|
|
|
- use_space_char=True
|
|
|
-) for _ in range(4)]
|
|
|
+ use_angle_cls=True
|
|
|
+) for _ in range(__EngineNum)]
|
|
|
|
|
|
|
|
|
class Args:
|
|
@@ -97,11 +97,11 @@ def Response(message: "str" = None, data=None):
|
|
|
|
|
|
|
|
|
def _rec(img, which: "int" = 0) -> "tuple[list, tuple]":
|
|
|
- return __Engines[which % 4].ocr(img)[0], img.shape
|
|
|
+ return __Engines[which % __EngineNum].ocr(img)[0], img.shape
|
|
|
|
|
|
|
|
|
def rec_multi(images: "list[np.ndarray]") -> "list[tuple]": # list[_rec]
|
|
|
- pool = ThreadPoolExecutor(4)
|
|
|
+ pool = ThreadPoolExecutor(__EngineNum)
|
|
|
tasks = [pool.submit(_rec, one, i) for i, one in enumerate(images)]
|
|
|
|
|
|
return [task.result() for task in tasks]
|
|
@@ -121,7 +121,7 @@ def draw_img(shape: "tuple", data: "list[dict]", path: "str", drop: "float" = 0.
|
|
|
if one["rate"] < drop:
|
|
|
continue
|
|
|
color = (randint(0, 255), randint(0, 255), randint(0, 255))
|
|
|
- text = draw_box_txt_fine((shape[1], shape[0]), one["pos"], one["word"], font_path="static/simfang.ttf")
|
|
|
+ text = draw_box_txt_fine((shape[1], shape[0]), one["pos"], one["word"], font_path="static/ppocr/simfang.ttf")
|
|
|
pts = np.array(one["pos"], np.int32).reshape((-1, 1, 2))
|
|
|
cv2.polylines(text, [pts], True, color, 1) # noqa
|
|
|
img = cv2.bitwise_and(img, text) # noqa
|