[PaddlePaddle/PaddleOCR]使用PPOCR-V3模型识别经常漏行

2024-05-13 552 views
6

使用ppocr-v3模型过程中经常出现漏行的情况,版面很整齐的图片都会无故漏一两行,也换了其它的det模型,也都是有同样的情况,请问这是什么问题呢,需要调整什么参数呢,能否优化? 以下是部分代码:

default_engine = PaddleOCR(use_angle_cls=True, lang="ch",
                           use_gpu=True,
                           det_db_box_thresh=0,
                           det_db_thresh=0.1,  
                           det_db_unclip_ratio=2.0, # 调整此参数可能这张图片不漏行了,另一张图片又有漏行
                           cls_model_dir="/workspace/OCR/models/PP-OCRv3/ch_ppocr_mobile_v2.0_cls_infer",
                           det_model_dir="/workspace/OCR/models/PP-OCRv3/ch_PP-OCRv3_det_infer", 
                           # det_model_dir="/workspace/OCR/models/ch_ppocr_server_v2.0_det_infer", 
                           # det_model_dir="/workspace/OCR/models/ch_ppocr_mobile_v2.0_det_infer", 
                           # det_model_dir="/workspace/OCR/models/ch_PP-OCRv2_det_infer",   
                           rec_model_dir="/workspace/OCR/models/PP-OCRv3/ch_PP-OCRv3_rec_infer")

response = default_engine .ocr(image_path)

回答

6

你好,我本地测试没问题,要不你把你的发我瞅瞅?

4
微信图片_20230719110137
4

你好,我本地测试没问题,要不你把你的发我瞅瞅?

已发送至您的qq邮箱155203340@qq.com,麻烦帮看看,谢谢

0
搞定了,det_limit_side_len 设置问题,图片最长边不应该超过这个设置,如果不设置默认为960.

|  det_limit_side_len | int | 960 | 检测的图像边长限制 |

5
测试代码
from paddleocr import PaddleOCR
from pprint import pprint

default_engine = PaddleOCR(use_angle_cls=True, lang="ch",
                           use_gpu=False,
                           det_db_box_thresh=0,
                           det_db_thresh=0.1,  
                           det_limit_side_len=4000,
                           det_db_unclip_ratio=1.5, # 调整此参数可能这张图片不漏行了,另一张图片又有漏行
                           cls_model_dir="d:/ocr/ch_ppocr_mobile_v2.0_cls_infer",
                           det_model_dir="d:/ocr/ch_PP-OCRv3_det_infer", 
                           rec_model_dir="d:/ocr/ch_PP-OCRv3_rec_infer")

response = default_engine .ocr('d:/pic/漏第9行.jpg')

pprint(response)
pprint(len(response[0]))

图片尺寸超过det_limit_side_len设置就会出现漏行

4

那是不是说把这个参数设置到一个很大的数值,就可以通用了?

4

那是不是说把这个参数设置到一个很大的数值,就可以通用了?

并不是,刚刚测试,det_limit_side_len设置越大,检测耗时越长,设置过大也会有文字遗漏

4

那是不是可以添加一个函数出来,用来更新这个值,因为加载模型,创建推理器只会执行一次,后面都是复用的

9

那是不是可以添加一个函数出来,用来更新这个值,因为加载模型,创建推理器只会执行一次,后面都是复用的

估计不行,要更新这个参数值,需要重新初始化加载模型,因为初始化时这个值就已经固定了

1

那是不是可以添加一个函数出来,用来更新这个值,因为加载模型,创建推理器只会执行一次,后面都是复用的

对呀

5

那是不是可以添加一个函数出来,用来更新这个值,因为加载模型,创建推理器只会执行一次,后面都是复用的

对呀

上 pr

4

因为不同图像的紧密程度不同,越紧密的图像如果设置det_db_unclip_ratio大,检测框膨胀率就大,那么两行容易合并成一行,就会导致两行检测不出来,放大图像也是同理,图像大,能容忍的膨胀率就大,但是不适合所有图像。建议密集的图像可以设置的膨胀率小,图像尺度大。

9

因为不同图像的紧密程度不同,越紧密的图像如果设置det_db_unclip_ratio大,检测框膨胀率就大,那么两行容易合并成一行,就会导致两行检测不出来,放大图像也是同理,图像大,能容忍的膨胀率就大,但是不适合所有图像。建议密集的图像可以设置的膨胀率小,图像尺度大。

请问图像尺度是哪个参数呢

8

det_limit_len