diff --git a/ocrweb/config.yaml b/ocrweb/config.yaml index a55a535..9eb61d1 100644 --- a/ocrweb/config.yaml +++ b/ocrweb/config.yaml @@ -3,6 +3,7 @@ Global: use_angle_cls: true print_verbose: true min_height: 30 + width_height_ratio: 8 Det: module_name: ch_ppocr_v2_det diff --git a/ocrweb/main.py b/ocrweb/main.py index 943d2bc..f792ab4 100644 --- a/ocrweb/main.py +++ b/ocrweb/main.py @@ -35,4 +35,4 @@ def ocr(): if __name__ == '__main__': - app.run(host='0.0.0.0', port=9003, debug=False, processes=True) + app.run(host='0.0.0.0', port=9003, debug=True, processes=True) diff --git a/ocrweb/rapidocr_onnxruntime/rapid_ocr_api.py b/ocrweb/rapidocr_onnxruntime/rapid_ocr_api.py index 572041f..89219ab 100644 --- a/ocrweb/rapidocr_onnxruntime/rapid_ocr_api.py +++ b/ocrweb/rapidocr_onnxruntime/rapid_ocr_api.py @@ -23,6 +23,7 @@ class TextSystem(object): self.print_verbose = global_config['print_verbose'] self.text_score = global_config['text_score'] self.min_height = global_config['min_height'] + self.width_height_ratio = global_config['width_height_ratio'] TextDetector = self.init_module(config['Det']['module_name'], config['Det']['class_name']) @@ -40,7 +41,12 @@ class TextSystem(object): def __call__(self, img: np.ndarray): h, w = img.shape[:2] - if h < self.min_height: + if self.width_height_ratio == -1: + use_limit_ratio = False + else: + use_limit_ratio = w / h > self.width_height_ratio + + if h <= self.min_height or use_limit_ratio: start_time = time.time() dt_boxes, img_crop_list = self.get_boxes_img_without_det(img, h, w) crop_elapse = time.time() - start_time diff --git a/python/README.md b/python/README.md index 0005c08..66f0b16 100755 --- a/python/README.md +++ b/python/README.md @@ -148,6 +148,7 @@ | `use_angle_cls` | `bool` | `true` | 是否使用文本行的方向分类 | | `print_verbose` | `bool` | `true` | 是否打印各个部分耗时信息 | | `min_height` | `int` | 30 | 图像最小高度(单位是像素)
低于这个值,会跳过文本检测阶段,直接进行后续识别 | + |`width_height_ratio`| `int`| 8| 如果输入图像的宽高比大于`width_height_ratio`,则会跳过文本检测,直接进行后续识别
`width_height_ratio=-1`:不用这个参数 | - `min_height`是用来过滤只有一行文本的图像(如下图),这类图像不会进入文本检测模块,直接进入后续过程。 diff --git a/python/config.yaml b/python/config.yaml index a55a535..9eb61d1 100644 --- a/python/config.yaml +++ b/python/config.yaml @@ -3,6 +3,7 @@ Global: use_angle_cls: true print_verbose: true min_height: 30 + width_height_ratio: 8 Det: module_name: ch_ppocr_v2_det diff --git a/python/rapidocr_onnxruntime/rapid_ocr_api.py b/python/rapidocr_onnxruntime/rapid_ocr_api.py index 1bb7051..9c2f8a9 100644 --- a/python/rapidocr_onnxruntime/rapid_ocr_api.py +++ b/python/rapidocr_onnxruntime/rapid_ocr_api.py @@ -26,6 +26,7 @@ class TextSystem(object): self.print_verbose = global_config['print_verbose'] self.text_score = global_config['text_score'] self.min_height = global_config['min_height'] + self.width_height_ratio = global_config['width_height_ratio'] TextDetector = self.init_module(config['Det']['module_name'], config['Det']['class_name']) @@ -43,7 +44,12 @@ class TextSystem(object): def __call__(self, img: np.ndarray): h, w = img.shape[:2] - if h <= self.min_height: + if self.width_height_ratio == -1: + use_limit_ratio = False + else: + use_limit_ratio = w / h > self.width_height_ratio + + if h <= self.min_height or use_limit_ratio: dt_boxes, img_crop_list = self.get_boxes_img_without_det(img, h, w) else: dt_boxes, elapse = self.text_detector(img) @@ -56,7 +62,7 @@ class TextSystem(object): img_crop_list = self.get_crop_img_list(img, dt_boxes) if self.use_angle_cls: - img_crop_list, angle_list, elapse = self.text_cls(img_crop_list) + img_crop_list, _, elapse = self.text_cls(img_crop_list) if self.print_verbose: print(f'cls num: {len(img_crop_list)}, elapse: {elapse}') diff --git a/python/rapidocr_openvino/rapid_ocr_api.py b/python/rapidocr_openvino/rapid_ocr_api.py index 402562d..fba75fe 100644 --- a/python/rapidocr_openvino/rapid_ocr_api.py +++ b/python/rapidocr_openvino/rapid_ocr_api.py @@ -24,6 +24,7 @@ class TextSystem(object): self.print_verbose = global_config['print_verbose'] self.text_score = global_config['text_score'] self.min_height = global_config['min_height'] + self.width_height_ratio = global_config['width_height_ratio'] TextDetector = self.init_module(config['Det']['module_name'], config['Det']['class_name']) @@ -41,7 +42,12 @@ class TextSystem(object): def __call__(self, img: np.ndarray): h, w = img.shape[:2] - if h < self.min_height: + if self.width_height_ratio == -1: + use_limit_ratio = False + else: + use_limit_ratio = w / h > self.width_height_ratio + + if h <= self.min_height or use_limit_ratio: dt_boxes, img_crop_list = self.get_boxes_img_without_det(img, h, w) else: dt_boxes, elapse = self.text_detector(img)