1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- # Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- # pylint: disable=doc-string-missing
- from paddle_serving_client import Client
- import sys
- import numpy as np
- import base64
- import os
- import cv2
- from paddle_serving_app.reader import Sequential, URL2Image, ResizeByFactor
- from paddle_serving_app.reader import Div, Normalize, Transpose
- from ocr_reader import OCRReader
- import codecs
- client = Client()
- # TODO:load_client need to load more than one client model.
- # this need to figure out some details.
- client.load_client_config(sys.argv[1:])
- client.connect(["127.0.0.1:8181"])
- import paddle
- test_img_dir = "../../doc/imgs/1.jpg"
- ocr_reader = OCRReader(char_dict_path="../../ppocr/utils/ppocr_keys_v1.txt")
- def cv2_to_base64(image):
- return base64.b64encode(image).decode(
- 'utf8') #data.tostring()).decode('utf8')
- def _check_image_file(path):
- img_end = {'jpg', 'bmp', 'png', 'jpeg', 'rgb', 'tif', 'tiff', 'gif'}
- return any([path.lower().endswith(e) for e in img_end])
- test_img_list = []
- if os.path.isfile(test_img_dir) and _check_image_file(test_img_dir):
- test_img_list.append(test_img_dir)
- elif os.path.isdir(test_img_dir):
- for single_file in os.listdir(test_img_dir):
- file_path = os.path.join(test_img_dir, single_file)
- if os.path.isfile(file_path) and _check_image_file(file_path):
- test_img_list.append(file_path)
- if len(test_img_list) == 0:
- raise Exception("not found any img file in {}".format(test_img_dir))
- for img_file in test_img_list:
- with open(img_file, 'rb') as file:
- image_data = file.read()
- image = cv2_to_base64(image_data)
- res_list = []
- fetch_map = client.predict(feed={"x": image}, fetch=[], batch=True)
- if fetch_map is None:
- print('no results')
- else:
- if "text" in fetch_map:
- for x in fetch_map["text"]:
- x = codecs.encode(x)
- words = base64.b64decode(x).decode('utf-8')
- res_list.append(words)
- else:
- try:
- one_batch_res = ocr_reader.postprocess(
- fetch_map, with_score=True)
- for res in one_batch_res:
- res_list.append(res[0])
- except:
- print('no results')
- res = {"res": str(res_list)}
- print(res)
|