文章目录
- paddleocr简介
- paddleocr安装
- paddleocr使用
paddleocr简介
飞桨首次开源文字识别模型套件PaddleOCR
,目标是打造丰富、领先、实用的文本识别模型/工具库。
最新开源的超轻量PP-OCRv3
模型大小仅为16.2M
。同时支持中英文识别;支持倾斜、竖排等多种方向文字识别;支持GPU、CPU
预测;用户既可以通过PaddleHub
很便捷的直接使用该超轻量模型,也可以使用PaddleOCR
开源套件训练自己的超轻量模型。
PaddleOCR
是基于PaddlePaddle
深度学习框架的开源OCR
工具,但它提供了推理模型/训练模型/预训练模型,用户可以直接使用推理模型进行识别,也可以对训练模型或预训练模型进行再训练。支持约80
种语言的文本识别,并具有较高的准确性和速度。
paddleocr安装
pip install paddleocr
paddleocr使用
将文件路径传递到glob
库中,批量处理识别图像中的文字。即可得到对应的文本和置信度。
paddleocr
的识别效果很不错,对于视频底部字幕caption
的识别准确性很高。如果图像右上方存在水印,或者图片本身也存在一些文字,可能会对paddleocr
的识别造成一定的干扰。
from paddleocr import PaddleOCR, draw_ocr
import glob
# Paddleocr目前支持中英文、英文、法语、德语、韩语、日语,可以通过修改lang参数进行切换
# 参数依次为`ch`, `en`, `french`, `german`, `korean`, `japan`。
ocr = PaddleOCR(use_angle_cls=True, lang="ch") # need to run only once to download and load model into memory
img_path = glob.glob('Images_frames/*.png')
print(img_path)
for path in img_path:
result = ocr.ocr(path, cls=True)
for line in result:
text,confidence = line[0][1]
print('文本:',text,'置信度:',confidence)
[2024/03/19 11:19:05] ppocr DEBUG: Namespace(alpha=1.0, benchmark=False, beta=1.0, cls_batch_num=6, cls_image_shape='3, 48, 192', cls_model_dir='C:\\Users\\lenovo/.paddleocr/whl\\cls\\ch_ppocr_mobile_v2.0_cls_infer', cls_thresh=0.9, cpu_threads=10, crop_res_save_dir='./output', det=True, det_algorithm='DB', det_box_type='quad', det_db_box_thresh=0.6, det_db_score_mode='fast', det_db_thresh=0.3, det_db_unclip_ratio=1.5, det_east_cover_thresh=0.1, det_east_nms_thresh=0.2, det_east_score_thresh=0.8, det_limit_side_len=960, det_limit_type='max', det_model_dir='C:\\Users\\lenovo/.paddleocr/whl\\det\\ch\\ch_PP-OCRv4_det_infer', det_pse_box_thresh=0.85, det_pse_min_area=16, det_pse_scale=1, det_pse_thresh=0, det_sast_nms_thresh=0.2, det_sast_score_thresh=0.5, draw_img_save_dir='./inference_results', drop_score=0.5, e2e_algorithm='PGNet', e2e_char_dict_path='./ppocr/utils/ic15_dict.txt', e2e_limit_side_len=768, e2e_limit_type='max', e2e_model_dir=None, e2e_pgnet_mode='fast', e2e_pgnet_score_thresh=0.5, e2e_pgnet_valid_set='totaltext', enable_mkldnn=False, fourier_degree=5, gpu_id=0, gpu_mem=500, help='==SUPPRESS==', image_dir=None, image_orientation=False, ir_optim=True, kie_algorithm='LayoutXLM', label_list=['0', '180'], lang='ch', layout=True, layout_dict_path=None, layout_model_dir=None, layout_nms_threshold=0.5, layout_score_threshold=0.5, max_batch_size=10, max_text_length=25, merge_no_span_structure=True, min_subgraph_size=15, mode='structure', ocr=True, ocr_order_method=None, ocr_version='PP-OCRv4', output='./output', page_num=0, precision='fp32', process_id=0, re_model_dir=None, rec=True, rec_algorithm='SVTR_LCNet', rec_batch_num=6, rec_char_dict_path='e:\\python3.7\\lib\\site-packages\\paddleocr\\ppocr\\utils\\ppocr_keys_v1.txt', rec_image_inverse=True, rec_image_shape='3, 48, 320', rec_model_dir='C:\\Users\\lenovo/.paddleocr/whl\\rec\\ch\\ch_PP-OCRv4_rec_infer', recovery=False, return_word_box=False, save_crop_res=False, save_log_path='./log_output/', scales=[8, 16, 32], ser_dict_path='../train_data/XFUND/class_list_xfun.txt', ser_model_dir=None, show_log=True, sr_batch_num=1, sr_image_shape='3, 32, 128', sr_model_dir=None, structure_version='PP-StructureV2', table=True, table_algorithm='TableAttn', table_char_dict_path=None, table_max_len=488, table_model_dir=None, total_process_num=1, type='ocr', use_angle_cls=True, use_dilation=False, use_gpu=False, use_mp=False, use_npu=False, use_onnx=False, use_pdf2docx_api=False, use_pdserving=False, use_space_char=True, use_tensorrt=False, use_visual_backbone=True, use_xpu=False, vis_font_path='./doc/fonts/simfang.ttf', warmup=False)
['Images_frames\\frame0.png', 'Images_frames\\frame24.png', 'Images_frames\\frame48.png', 'Images_frames\\frame72.png']
[2024/03/19 11:19:06] ppocr DEBUG: dt_boxes num : 1, elapse : 0.28324270248413086
[2024/03/19 11:19:07] ppocr DEBUG: cls num : 1, elapse : 0.021940231323242188
[2024/03/19 11:19:07] ppocr DEBUG: rec_res num : 1, elapse : 0.25235795974731445
文本: 我们精挑细选之后呢 置信度: 0.9981216788291931
[2024/03/19 11:19:07] ppocr DEBUG: dt_boxes num : 1, elapse : 0.2612645626068115
[2024/03/19 11:19:07] ppocr DEBUG: cls num : 1, elapse : 0.017951488494873047
[2024/03/19 11:19:07] ppocr DEBUG: rec_res num : 1, elapse : 0.1545870304107666
文本: 入手了这台 置信度: 0.9989045262336731
[2024/03/19 11:19:07] ppocr DEBUG: dt_boxes num : 2, elapse : 0.26225733757019043
[2024/03/19 11:19:08] ppocr DEBUG: cls num : 2, elapse : 0.032912492752075195
[2024/03/19 11:19:08] ppocr DEBUG: rec_res num : 2, elapse : 0.6083700656890869
文本: 华为打印机PixLabV1 置信度: 0.94902104139328
[2024/03/19 11:19:08] ppocr DEBUG: dt_boxes num : 2, elapse : 0.27226996421813965
[2024/03/19 11:19:08] ppocr DEBUG: cls num : 2, elapse : 0.03195309638977051
[2024/03/19 11:19:09] ppocr DEBUG: rec_res num : 2, elapse : 0.5345678329467773
文本: 华为打印机PixLabV1 置信度: 0.9729145765304565
通过指定需要提取的图像,传入paddleocr
的对应参数,即可完成文字识别。