paddlehub 文本检测使用

PaddleHub负责模型的管理、获取和预训练模型的使用。

参考:https://github.com/PaddlePaddle/PaddleHub/tree/develop/modules/image/text_recognition/chinese_text_detection_db_server

复制代码
 
import paddlehub as hub
import cv2
# from utils import  cv_show
import numpy as np


def cv_show(img):
    '''
    展示图片
    @param img:
    @param name:
    @return:
    '''
    cv2.namedWindow('name', cv2.WINDOW_KEEPRATIO)  # cv2.WINDOW_NORMAL | cv2.WINDOW_KEEPRATIO
    cv2.imshow('name', img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

# 输入图片路径
image_path = 'pic/img.jpg' 
image = cv2.imread(image_path)


gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
gray_padding = cv2.cvtColor( np.pad(gray, ((100, 100), (0, 0)), 'constant', constant_values=(255)), cv2.COLOR_GRAY2BGR)


# 检测+识别
paddle_ocr = hub.Module(name="ch_pp-ocrv3")  #SVTR_LCNet     # mkldnn加速仅在CPU下有效 , enable_mkldnn=True
paddle_ocr.recognize_text(images=[gray_padding]   )

ocr = hub.Module(name="chinese_ocr_db_crnn_server")#CRNN
r = ocr.recognize_text(images=[cv2.cvtColor(gray[:,:1250], cv2.COLOR_GRAY2BGR)],
                   # paths=[],
                   use_gpu=False,
                   output_dir='ocr_result',
                   visualization=True,
                   box_thresh=0.5,
                   text_thresh=0.5,
                   angle_classification_thresh=0.9)

# def recognize_text(images=[],
#                    paths=[],
#                    use_gpu=False,
#                    output_dir='ocr_result',
#                    visualization=False,
#                    box_thresh=0.6,
#                    text_thresh=0.5,
#                    angle_classification_thresh=0.9,
#                    det_db_unclip_ratio=1.5,
#                    det_db_score_mode="fast"):
# print('text',[[''.join(y['text'] for y in x['data'])]  for x in results])

# 检测
text_detector_v3 = hub.Module(name="ch_pp-ocrv3_det")
result = text_detector_v3.detect_text(images=[gray_padding],
                             output_dir='detection_result',
                              box_thresh=0.6,
                              visualization=True,
                             det_db_unclip_ratio=2,#1.5
                             det_db_score_mode='slow',
                             )
box = result[0]['data'][1]
cv_show( gray_padding[box[0][1]:box[2][1],box[0][0]:box[1][0]])

text_detector = hub.Module(name='chinese_text_detection_db_server')
result = text_detector.detect_text(images=[gray_padding] ,
                                   output_dir='detection_result',
                                   visualization = 'True',
                                   box_thresh=0.5,#0.6
                                   text_thresh=0.5,#0.6
                                   )
#det_db_thresh=0.1, det_db_box_thresh=0.4, det_db_unclip_ratio=2.0,det_db_score_mode='slow', use_dilation='True'
# def detect_text(images=[],
#                 paths=[],
#                 use_gpu=False,
#                 output_dir='detection_result',
#                 visualization=False,
#                 box_thresh=0.6,
#                 det_db_unclip_ratio=1.5,
#                 det_db_score_mode="fast")

#可视框
for box in result[0]['data']:
    img = gray_padding[box[0][1]:box[2][1],box[0][0]:box[1][0]]
    cv_show(img)



# for result in results:
#     data = result['data']
#     save_path = result['save_path']
#     for infomation in data:
#         print('text: ', infomation['text'], '\nconfidence: ', infomation['confidence'], '\ntext_box_position: ', infomation['text_box_position'])
相关推荐
baidu_huihui9 个月前
PaddleHub 首页图像 - 文字识别chinese_ocr_db_crnn_server
paddlehub·chinese_ocr