引言

在文本识别时,识别的每一种语言,都有一个对应的字典,用来还原识别的文本内容。例如英文识别模型的字典就是26个英文字母的大小写以及常用符号,中文识别模型的字典一般包括常用汉字、字母和符号等。

受启发于issue #42,目前基于ONNXRuntime的推理引擎rapidocr_onnxruntime库已经将字典写入到onnx模型中,无需额外指定字典TXT文件。

以下将对这一部分做详细讲解,感兴趣小伙伴,可自行取用。

将字典内容写入到ONNX中

  import onnx

model = onnx.load_model('/path/to/model.onnx')

# 添加dictionary对应的值
meta = model.metadata_props.add()
meta.key = 'dictionary'
meta.value = open('/path/to/ppocr_keys_v1.txt', 'r', -1, 'u8').read()

# 添加shape对应的值
meta = model.metadata_props.add()
meta.key = 'shape'
meta.value = '[3,48,320]'

onnx.save_model(model, '/path/to/model.onnx')
  

获取字典内容

  import json
import onnxruntime as ort

sess = ort.InferenceSession('/path/to/model.onnx')
metamap = sess.get_modelmeta().custom_metadata_map

# 读取dictionary键对应的值
chars = metamap['dictionary'].splitlines()

# 读取shape键对应的值
input_shape = json.loads(metamap['shape'])
  

Last updated 24 Apr 2024, 09:27 +0800 . history