PaddleOCR
不完全代码
# !/user/bin/env python
# -*- coding: utf-8 -*-
import os
import sys
import cv2
sys.path.append('I:/PaddleOCR/tools/infer/')
sys.path.append('I:/PaddleOCR/')
from PyQt5.QtCore import QRect, QPoint
import argparse
from predict_system import *
def get_args(image_file):
def str2bool(v):
return v.lower() in ("true", "t", "1")
parser = argparse.ArgumentParser()
# params for prediction engine
parser.add_argument("--use_gpu", type=str2bool, default=False)
parser.add_argument("--ir_optim", type=str2bool, default=True)
parser.add_argument("--use_tensorrt", type=str2bool, default=False)
parser.add_argument("--gpu_mem", type=int, default=8000)
# params for text detector
parser.add_argument("--image_dir", type=str, default=image_file)
parser.add_argument("--det_algorithm", type=str, default='DB')
parser.add_argument("--det_model_dir", type=str, default='I:/PaddleOCR/inference/ch_det_mv3_db/')
parser.add_argument("--det_max_side_len", type=float, default=960)
# DB parmas
parser.add_argument("--det_db_thresh", type=float, default=0.3)
parser.add_argument("--det_db_box_thresh", type=float, default=0.5)
parser.add_argument("--det_db_unclip_ratio", type=float, default=2.0)
# EAST parmas
parser.add_argument("--det_east_score_thresh", type=float, default=0.8)
parser.add_argument("--det_east_cover_thresh", type=float, default=0.1)
parser.add_argument("--det_east_nms_thresh", type=float, default=0.2)
# params for text recognizer
parser.add_argument("--rec_algorithm", type=str, default='CRNN')
parser.add_argument("--rec_model_dir", type=str, default='I:/PaddleOCR/inference/ch_rec_mv3_crnn/')
parser.add_argument("--rec_image_shape", type=str, default="3, 32, 320")
parser.add_argument("--rec_char_type", type=str, default='ch')
parser.add_argument("--rec_batch_num", type=int, default=30)
parser.add_argument(
"--rec_char_dict_path",
type=str,
default="I:/PaddleOCR/ppocr/utils/ppocr_keys_v1.txt")
parser.add_argument("--use_space_char", type=bool, default=True)
parser.add_argument("--enable_mkldnn", type=bool, default=False)
return parser.parse_args()
def search_text(image_file, find_text):
args = get_args(image_file)
text_sys = TextSystem(args)
img = cv2.imread(image_file)
starttime = time.time()
dt_boxes, rec_res = text_sys(img)
elapse = time.time() - starttime
print("Predict time of %s: %.3fs" % (image_file, elapse))
point_list = []
dt_num = len(dt_boxes)
for dno in range(dt_num):
text, score = rec_res[dno]
if score >= 0.5 and text.find(find_text) != -1:
points = dt_boxes[dno]
w = points[1][0] - points[0][0]
h = points[2][1] - points[1][1]
rect = QRect(points[0][0], points[0][1], w, h)
point_list.append(rect.center())
return point_list
参考
开源地址