Package: agentocr
AgentOCR Package 使用说明1 快速上手1.1 安装pip 安装：# 安装 AgentOCR$pipinstallagentocr# 根据设备平台安装合适版本的 ONNXRuntime$pipinstallonnxruntimewhl 包安装：下载 whl 包：链接安装 whl 包：# 安装 AgentOCR$pipinstallagentocr-x.x.x-py3-none-any.whl# 根据设备平台安装合适版本的 ONNXRuntime$pipinstallonnxruntime源码安装：# 同步 AgentOCR 代码$gitclonehttps://github.com/AgentMaker/AgentOCR# 安装 AgentOCR$cdAgentOCR&&pythonsetup.pyinstall# 根据设备平台安装合适版本的 ONNXRuntime$pipinstallonnxruntime2 使用AgentOCR Package 会自动下载 PaddleOCR 中/英文轻量级模型作为默认模型可通过切换其他内置配置文件或自定义配置文件进行模型和参数自定义在 API 接口的使用上，基本和 PPOCR Package 保持一致2.1 代码使用2.1.1 API 接口接口介绍：classOCRSystem:def__init__(self,config='ch',warmup=True,**kwargs):'''The Inference OCR System of AgentOCR.Params:config: 配置文件名称或路径, 默认为 'ch'.warmup: 初始化时进行模型预热, 默认为 True.**kwargs: 更多配置参数，这些参数会覆盖配置文件中的相同配置.'''defocr(self,img,det=True,cls=False,rec=True,return_cls=False):'''Params:img: 图片路径或者图片数组.det: 文本位置定位, 默认为 True.cls: 文本方向分类, 默认为 False.rec: 文本内容识别, 默认为 True.return_cls: 返回文本方向分类结果, 默认为 False.'''2.1.2 使用样例检测 + 方向分类器 + 识别全流程fromagentocrimportOCRSystem# 通过 config 参数来进行模型配置，内置多国语言的配置文件# 也可以根据 3.1 配置文件中的选项，指定自定义配置，比如通过下面的代码指定运行后端：# ocr = OCRSystem(config='ch', providers='cuda,cpu')ocr=OCRSystem(config='ch')# 设置测试图片路径img_path='test.jpg'# 调用 OCR API 进行全流程识别result=ocr.ocr(img_path,cls=True)# 结果是一个list，每个item包含了文本框，文字和识别置信度
  [[[24.0, 36.0], [304.0, 34.0], [304.0, 72.0], [24.0, 74.0]], ['纯臻营养护发素', 0.964739]]
  [[[24.0, 80.0], [172.0, 80.0], [172.0, 104.0], [24.0, 104.0]], ['产品信息/参数', 0.98069626]]
  [[[24.0, 109.0], [333.0, 109.0], [333.0, 136.0], [24.0, 136.0]], ['（45元/每公斤，100公斤起订）', 0.9676722]]
  ......检测 + 识别fromagentocrimportOCRSystemocr=OCRSystem(config='ch')img_path='test.jpg'# 关闭分类选项result=ocr.ocr(img_path,cls=False)# 结果是一个list，每个item包含了文本框，文字和识别置信度
  [[[24.0, 36.0], [304.0, 34.0], [304.0, 72.0], [24.0, 74.0]], ['纯臻营养护发素', 0.964739]]
  [[[24.0, 80.0], [172.0, 80.0], [172.0, 104.0], [24.0, 104.0]], ['产品信息/参数', 0.98069626]]
  [[[24.0, 109.0], [333.0, 109.0], [333.0, 136.0], [24.0, 136.0]], ['（45元/每公斤，100公斤起订）', 0.9676722]]
  ......方向分类器 + 识别fromagentocrimportOCRSystemocr=OCRSystem(config='ch')img_path='test.jpg'# 关闭检测并开启分类选项result=ocr.ocr(img_path,det=False,cls=True)# 结果是一个list，每个item只包含识别结果和识别置信度

  ['韩国小馆', 0.9907421]单独执行检测fromagentocrimportOCRSystemocr=OCRSystem(config='ch')img_path='test.jpg'# 关闭识别选项result=ocr.ocr(img_path,rec=False)# 结果是一个list，每个item只包含文本框
  [[26.0, 457.0], [137.0, 457.0], [137.0, 477.0], [26.0, 477.0]]
  [[25.0, 425.0], [372.0, 425.0], [372.0, 448.0], [25.0, 448.0]]
  [[128.0, 397.0], [273.0, 397.0], [273.0, 414.0], [128.0, 414.0]]
  ......单独执行识别fromagentocrimportOCRSystemocr=OCRSystem(config='ch')img_path='test.jpg'# 关闭检测选项result=ocr.ocr(img_path,det=False)# 结果是一个list，每个item只包含识别结果和识别置信度
  ['韩国小馆', 0.9907421]单独执行方向分类器fromagentocrimportOCRSystemocr=OCRSystem(config='ch')img_path='test.jpg'# 关闭检测、识别并开启分类选项result=ocr.ocr(img_path,det=False,cls=True,rec=False)# 结果是一个list，每个item只包含分类结果和分类置信度
  ['0', 0.9999924]2.2 服务器部署2.2.1 启动 OCR 服务通过命令行启动：# config 配置文件 / host 监听地址 / port 监听接口 / 其他配置参数$agentocrserver\--configch\--host127.0.0.1\--port5000\--providerscpu2.2.2 接口调用接口地址：http://{host}:{port}/ocr请求类型：Post使用 Python 调用 OCR 服务接口：importcv2importjsonimportbase64importrequests# 图片 Base64 编码defcv2_to_base64(image):data=cv2.imencode('.jpg',image)[1]image_base64=base64.b64encode(data.tobytes()).decode('UTF-8')returnimage_base64# 读取图片image=cv2.imread('test.jpg')image_base64=cv2_to_base64(image)# 构建请求数据data={'image':image_base64,'det':True,'cls':True,'rec':True}# 发送请求url="http://127.0.0.1:5000/ocr"r=requests.post(url=url,data=json.dumps(data))# 打印预测结果print(r.json())3 配置AgentOCR 使用 json 格式的配置文件来配置各种模型和各项参数也同时内置了多个语言的预设参数配置，可通过对应的语言缩写进行快速调用具体的语言和缩写的对应情况，请参考主页的【预设配置选项】表格更多 PPOCR 的预训练模型，请跳转至主页【预训练模型】处下载3.1 配置文件快速配置：可通过如下几个选项快速配置不同的模型文件、字典和可视化字体{"det_model_dir":"ch_ppocr_mobile_v2.0_det","rec_model_dir":"ch_ppocr_mobile_v2.0_rec","rec_char_type":"ch","rec_char_dict_path":"ppocr_keys_v1","vis_font_path":"simfang","cls_model_dir":"ch_ppocr_mobile_v2.0_cls"}完整配置：详细的参数介绍请参考下一小节的内容{"providers":"auto","det_algorithm":"DB","det_model_dir":"ch_ppocr_mobile_v2.0_det","det_limit_side_len":960,"det_limit_type":"max","det_db_thresh":0.3,"det_db_box_thresh":0.6,"det_db_unclip_ratio":1.5,"use_dilation":false,"det_db_score_mode":"fast","det_east_score_thresh":0.8,"det_east_cover_thresh":0.1,"det_east_nms_thresh":0.2,"det_sast_score_thresh":0.5,"det_sast_nms_thresh":0.2,"det_sast_polygon":false,"rec_algorithm":"CRNN","rec_model_dir":"ch_ppocr_mobile_v2.0_rec","rec_image_shape":"3, 32, 320","rec_char_type":"ch","rec_batch_num":8,"max_text_length":25,"rec_char_dict_path":"ppocr_keys_v1","use_space_char":true,"vis_font_path":"simfang","drop_score":0.5,"cls_model_dir":"ch_ppocr_mobile_v2.0_cls","cls_image_shape":"3, 48, 192","label_list":["0","180"],"cls_batch_num":8,"cls_thresh":0.9,"total_process_num":1,"show_log":true}3.2 参数说明字段说明默认值providers使用的计算后端，使用字符串设定使用顺序，使用逗号分隔，不区分大小写，如 “cuda,cpu”，默认自动选择所有可用后端（可能并非最佳顺序）autodet_algorithm使用的检测算法类型DBdet_model_dir检测模型文件,文件名或文件路径ch_ppocr_mobile_v2.0_detdet_max_side_len检测算法前向时图片长边的最大尺寸，当长边超出这个值时会将长边resize到这个大小，短边等比例缩放960det_limit_type检测的限制类型maxdet_db_threshDB模型输出预测图的二值化阈值0.3det_db_box_threshDB模型输出框的阈值，低于此值的预测框会被丢弃0.6det_db_unclip_ratioDB模型输出框扩大的比例1.5use_dilation是否使用空洞卷积Falsedet_db_score_modeDB 分数计算模式（slow or fast）fastdet_east_score_threshEAST模型输出预测图的二值化阈值0.8det_east_cover_threshEAST模型输出框的阈值，低于此值的预测框会被丢弃0.1det_east_nms_threshEAST模型输出框NMS的阈值0.2det_sast_polygon是否使用 SAST polygonFalserec_algorithm使用的识别算法类型CRNNrec_model_dir识别模型文件，文件名或文件路径ch_ppocr_mobile_v2.0_recrec_image_shape识别算法的输入图片尺寸3,32,320rec_char_type识别算法的字符类型，中英文(ch)、英文(en)、法语(french)、德语(german)、韩语(korean)、日语(japan)chrec_batch_num进行识别时，同时前向的图片数8max_text_length识别算法能识别的最大文字长度25rec_char_dict_path识别模型字典，文件名或文件路径ppocr_keys_v1use_space_char是否识别空格Truevis_font_path可视化字体，文件名或者文件路径simfangdrop_score对输出按照分数（来自于识别模型）进行过滤，低于此分数的不返回0.5cls_model_dir分类模型文件（文件名或者文件路径）ch_ppocr_mobile_v2.0_clscls_image_shape分类算法的输入图片尺寸3, 48, 192label_list分类算法的标签列表['0', '180']cls_batch_num进行分类时，同时前向的图片数8cls_thresh分类器阈值0.9total_process_num进程数量1show_log是否打印 logFalse