Download cvt_model.py from ml-resources/RapidOCR: direct link, hf CLI and curl.
- Browser
- Download file 3.32 kB
-
https://huggingface.co/ml-resources/RapidOCR/resolve/main/cvt_model.py
- Command line
-
hf download hf://ml-resources/RapidOCR/cvt_model.py
-
curl -L -o cvt_model.py https://huggingface.co/ml-resources/RapidOCR/resolve/main/cvt_model.py
3.32 kB
| # -*- encoding: utf-8 -*- | |
| # @Author: SWHL | |
| # @Contact: liekkaskono@163.com | |
| from pathlib import Path | |
| from typing import List, Union | |
| import onnxruntime as ort | |
| # 0.0.19 | |
| from paddleocr_convert import PaddleOCRModelConvert | |
| import onnx | |
| from onnx import ModelProto | |
| class ONNXMetaOp: | |
| 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 | |
| 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 | |
| def del_meta(cls, model_path: Union[str, Path]) -> ModelProto: | |
| model = onnx.load_model(model_path) | |
| del model.metadata_props[:] | |
| return model | |
| 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/korean_PP-OCRv4_rec_infer.tar", | |
| # "paddle/PP-OCRv4/rec/korean_PP-OCRv4_rec_infer/korean_dict.txt", | |
| # ), | |
| # ( | |
| # "https://paddleocr.bj.bcebos.com/PP-OCRv4/multilingual/japan_PP-OCRv4_rec_infer.tar", | |
| # "paddle/PP-OCRv4/rec/japan_PP-OCRv4_rec_infer/japan_dict.txt", | |
| # ), | |
| # ( | |
| # "https://paddleocr.bj.bcebos.com/PP-OCRv3/multilingual/chinese_cht_PP-OCRv3_rec_infer.tar", | |
| # "paddle/PP-OCRv4/rec/chinese_cht_PP-OCRv3_rec_infer/chinese_cht_dict.txt", | |
| # ), | |
| ( | |
| "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) | |