From 420b097a61a52f6eea892caf5974c4941e674e47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A3=8E=E9=9A=8F=E5=BF=83=E5=8A=A8?= Date: Thu, 11 Jul 2024 21:01:04 +0800 Subject: [PATCH] fix(rapidocr_api): Fixed returned formatting errors (#200) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * rapidocr api rapidocr_onnxruntime 版本 1.3.23 api返回格式需要格式化 --- api/demo.py | 4 ++-- api/rapidocr_api/api.py | 19 +++++++++++++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/api/demo.py b/api/demo.py index 0dddf9836..a3af37b94 100644 --- a/api/demo.py +++ b/api/demo.py @@ -5,10 +5,10 @@ import requests url = 'http://localhost:9003/ocr' -img_path = '../python/tests/test_files/ch_en_num.jpg' +img_path = '/tmp/page1_image1.jpg' with open(img_path, 'rb') as f: file_dict = {'image_file': (img_path, f, 'image/png')} response = requests.post(url, files=file_dict, timeout=60) -print(response.text) +print(response.text) \ No newline at end of file diff --git a/api/rapidocr_api/api.py b/api/rapidocr_api/api.py index 234116e5f..e7902252e 100644 --- a/api/rapidocr_api/api.py +++ b/api/rapidocr_api/api.py @@ -23,8 +23,8 @@ def __init__(self) -> None: def __call__(self, img: Image.Image) -> Dict: img = np.array(img) - ocr_res, _ = self.ocr(img) + if not ocr_res: return {} @@ -32,8 +32,23 @@ def __call__(self, img: Image.Image) -> Dict: str(i): {"rec_txt": rec, "dt_boxes": dt_box, "score": score} for i, (dt_box, rec, score) in enumerate(ocr_res) } - return out_dict + return self.convert_to_json(out_dict) + + def convert_to_json(self, data): + """Recursively convert NumPy types to Python types.""" + if isinstance(data, np.ndarray): + return data.tolist() + elif isinstance(data, np.generic): + return data.item() + elif isinstance(data, (list, tuple)): + return [self.convert_to_json(item) for item in data] + elif isinstance(data, dict): + return {k: self.convert_to_json(v) for k, v in data.items()} + elif isinstance(data, np.bool_): + return bool(data) + else: + return data app = FastAPI() processor = OCRAPIUtils()