| |
| |
| |
|
|
| from pathlib import Path |
| from typing import List, Union |
|
|
| import onnxruntime as ort |
|
|
| |
| from paddleocr_convert import PaddleOCRModelConvert |
|
|
| import onnx |
| from onnx import ModelProto |
|
|
|
|
| class ONNXMetaOp: |
| @classmethod |
| def add_meta( |
| cls, |
| model_path: Union[str, Path], |
| key: str, |
| value: List[str], |
| delimiter: str = "\n", |
| ) -> ModelProto: |
| model = onnx.load_model(model_path) |
| meta = model.metadata_props.add() |
| meta.key = key |
| meta.value = delimiter.join(value) |
| return model |
|
|
| @classmethod |
| def get_meta( |
| cls, model_path: Union[str, Path], key: str, split_sym: str = "\n" |
| ) -> List[str]: |
| sess = ort.InferenceSession(model_path) |
| meta_map = sess.get_modelmeta().custom_metadata_map |
| key_content = meta_map.get(key) |
| key_list = key_content.split(split_sym) |
| return key_list |
|
|
| @classmethod |
| def del_meta(cls, model_path: Union[str, Path]) -> ModelProto: |
| model = onnx.load_model(model_path) |
| del model.metadata_props[:] |
| return model |
|
|
| @classmethod |
| def save_model(cls, save_path: Union[str, Path], model: ModelProto): |
| onnx.save_model(model, save_path) |
|
|
|
|
| model_list = [ |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| ( |
| "https://paddleocr.bj.bcebos.com/PP-OCRv4/multilingual/ta_PP-OCRv4_rec_infer.tar", |
| "paddle/PP-OCRv4/rec/ta_PP-OCRv4_rec_infer/ta_dict.txt", |
| ), |
| ( |
| "https://paddleocr.bj.bcebos.com/PP-OCRv4/multilingual/te_PP-OCRv4_rec_infer.tar", |
| "paddle/PP-OCRv4/rec/te_PP-OCRv4_rec_infer/te_dict.txt", |
| ), |
| ( |
| "https://paddleocr.bj.bcebos.com/PP-OCRv4/multilingual/ka_PP-OCRv4_rec_infer.tar", |
| "paddle/PP-OCRv4/rec/kannada_PP-OCRv4_rec_infer/ka_dict.txt", |
| ), |
| ( |
| "https://paddleocr.bj.bcebos.com/PP-OCRv3/multilingual/latin_PP-OCRv3_rec_infer.tar", |
| "paddle/PP-OCRv4/rec/latin_PP-OCRv3_rec_infer/latin_dict.txt", |
| ), |
| ( |
| "https://paddleocr.bj.bcebos.com/PP-OCRv4/multilingual/arabic_PP-OCRv4_rec_infer.tar", |
| "paddle/PP-OCRv4/rec/arabic_PP-OCRv4_rec_infer/arabic_dict.txt", |
| ), |
| ( |
| "https://paddleocr.bj.bcebos.com/PP-OCRv3/multilingual/cyrillic_PP-OCRv3_rec_infer.tar", |
| "paddle/PP-OCRv4/rec/cyrillic_PP-OCRv3_rec_infer/cyrillic_dict.txt", |
| ), |
| ( |
| "https://paddleocr.bj.bcebos.com/PP-OCRv4/multilingual/devanagari_PP-OCRv4_rec_infer.tar", |
| "paddle/PP-OCRv4/rec/devanagari_PP-OCRv4_rec_infer/devanagari_dict.txt", |
| ), |
| ] |
|
|
| converter = PaddleOCRModelConvert() |
| save_dir = "onnx/PP-OCRv4/rec" |
|
|
| for model in model_list: |
| url, txt_url = model |
| converter(url, save_dir, txt_path=txt_url) |
|
|