123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- # -*- coding:utf-8 -*-
- import os
- import sys
- import time
- import numpy as np
- import cv2 as cv
- import json
- from BaseLog import CBaseLog
- from OptionConfig import COptionConfig
- from ssat_sdk import OCRConvert, ImageCMP, getSATTmpDIR
- class COptionOCR(CBaseLog):
- # 创建OCR对象
- __ocr = OCRConvert()
- # 图片切割对象
- __imgCMP = ImageCMP()
- def __init__(self, optionConfig, optionExcel):
- CBaseLog.__init__(self)
- # COptionConfig对象;
- self.__optionConfig = optionConfig
- if self.__optionConfig is None:
- self.error("configManger对象空")
- # 路径对象;
- self.__optionExcel = optionExcel
- '''
- 函数:获取指定原图中指定的文本区域内的文本内容;
- 参数:
- optionName: Option名称;
- src_pid: 原图文件路径;
- texb_box: 原图中要获取文本内容的区域坐标;
- ocr_config: 使用何种方式识别文本; 示例:{"lan": "ChinesePRC+English", "type": 4}
- 返回:
- 返回文本内容;
- '''
- def getOptionText(self, optionName, src_pic, text_box, ocr_config):
- src_img = src_pic
- # 如果是字符串,认为是路径;
- if type(src_pic) == str:
- src_img = cv.imread(src_pic)
- # 判断图片对象是否空;
- if src_img is None:
- self.error(u"读取图片失败:%s" % src_pic)
- return None
- return self.__getOptionText(optionName, src_img, text_box, ocr_config)
- '''
- 函数:获取指定原图中指定的文本区域内的文本内容;
- 参数:
- optionName: Option名称;
- src_img: 原图图片对象(cv2.imread的结果值);
- texb_box: 原图中要获取文本内容的区域坐标;
- ocr_config: 使用何种方式识别文本; 示例:{"lan": "ChinesePRC+English", "type": 4}
- 返回:
- 返回文本内容;
- '''
- def __getOptionText(self, optionName, src_img, text_box, ocr_config):
- if text_box.__len__() == 0:
- self.error(u"【%s】文本区域空" % optionName)
- return None
- # 配置文本图片路径,保存文本区域截图;
- text_pic = os.path.join(getSATTmpDIR(), "meuttree_area_text.png")
- COptionOCR.__imgCMP.saveCropImage(src_img, text_pic, text_box)
- # 判断文本图片是否存在;
- if not os.path.exists(text_pic):
- self.error(u"【%s】保存文本区域截图失败" % optionName)
- return None
- # 获取ocr识别时阈值(疑似问题:不是使用optionName,而是对应的first_parent)
- # 示例:threshold = {"Threshold":[25,255,0]}
- threshold = self.__optionConfig.getThresholdDict(optionName)
- # 识别文本图片内容;
- optionText = COptionOCR.__ocr.getStrWithImgProcess(text_pic, threshold, ocr_config['lan'], ocr_config['type'],
- reconTimes=1)
- self.info(u"【%s】识别结果=%s" % (optionName, optionText))
- # 返回结果;
- return optionText
- '''
- 函数:识别指定图片文件的文本内容;
- 参数:
- text_pic: 要识别文本的图片路径;
- ocr_config: 使用何种方式识别文本; 示例:{"lan": "ChinesePRC+English", "type": 4}
- threshold: orc识别时的阈值,示例:{"Threshold":[25,255,0]}
- 返回:
- '''
- def getImageText(self, text_pic, ocr_config, threshold):
- # 判断文本图片是否存在;
- if not os.path.exists(text_pic):
- self.error(u"【%s】文本图片不存在" % text_pic)
- return None
- # 识别文本图片内容;
- imgText = COptionOCR.__ocr.getStrWithImgProcess(text_pic, threshold, ocr_config['lan'], ocr_config['type'],
- reconTimes=1)
- self.info(u"【%s】识别结果=%s" % (text_pic, imgText))
- # 返回结果;
- return imgText
- # end-class
- if __name__ == "__main__":
- pass
|