# -*- coding: utf8 -*-
# Copyright (c) 2017-2025 Tencent. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import warnings

from tencentcloud.common.abstract_model import AbstractModel


class AdvertiseOCRRequest(AbstractModel):
    r"""AdvertiseOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。要求图片经Base64编码后不超过 10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP格式。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。要求图片经Base64编码后不超过 10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP格式。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        """
        self._ImageBase64 = None
        self._ImageUrl = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。要求图片经Base64编码后不超过 10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP格式。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。要求图片经Base64编码后不超过 10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP格式。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class AdvertiseOCRResponse(AbstractModel):
    r"""AdvertiseOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _TextDetections: 检测到的文本信息，包括文本行内容、置信度、文本行坐标以及文本行旋转纠正后的坐标，具体内容请点击左侧链接。
        :type TextDetections: list of AdvertiseTextDetection
        :param _ImageSize: 图片分辨率信息，单位 px
        :type ImageSize: :class:`tencentcloud.ocr.v20181119.models.ImageSize`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._TextDetections = None
        self._ImageSize = None
        self._RequestId = None

    @property
    def TextDetections(self):
        r"""检测到的文本信息，包括文本行内容、置信度、文本行坐标以及文本行旋转纠正后的坐标，具体内容请点击左侧链接。
        :rtype: list of AdvertiseTextDetection
        """
        return self._TextDetections

    @TextDetections.setter
    def TextDetections(self, TextDetections):
        self._TextDetections = TextDetections

    @property
    def ImageSize(self):
        r"""图片分辨率信息，单位 px
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ImageSize`
        """
        return self._ImageSize

    @ImageSize.setter
    def ImageSize(self, ImageSize):
        self._ImageSize = ImageSize

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("TextDetections") is not None:
            self._TextDetections = []
            for item in params.get("TextDetections"):
                obj = AdvertiseTextDetection()
                obj._deserialize(item)
                self._TextDetections.append(obj)
        if params.get("ImageSize") is not None:
            self._ImageSize = ImageSize()
            self._ImageSize._deserialize(params.get("ImageSize"))
        self._RequestId = params.get("RequestId")


class AdvertiseTextDetection(AbstractModel):
    r"""广告文字识别结果

    """

    def __init__(self):
        r"""
        :param _DetectedText: 识别出的文本行内容
        :type DetectedText: str
        :param _Confidence: 置信度 0 ~100
        :type Confidence: int
        :param _Polygon: 文本行坐标，以四个顶点坐标表示
        :type Polygon: list of Coord
        :param _AdvancedInfo: 此字段为扩展字段。
GeneralBasicOcr接口返回段落信息Parag，包含ParagNo。
        :type AdvancedInfo: str
        """
        self._DetectedText = None
        self._Confidence = None
        self._Polygon = None
        self._AdvancedInfo = None

    @property
    def DetectedText(self):
        r"""识别出的文本行内容
        :rtype: str
        """
        return self._DetectedText

    @DetectedText.setter
    def DetectedText(self, DetectedText):
        self._DetectedText = DetectedText

    @property
    def Confidence(self):
        r"""置信度 0 ~100
        :rtype: int
        """
        return self._Confidence

    @Confidence.setter
    def Confidence(self, Confidence):
        self._Confidence = Confidence

    @property
    def Polygon(self):
        r"""文本行坐标，以四个顶点坐标表示
        :rtype: list of Coord
        """
        return self._Polygon

    @Polygon.setter
    def Polygon(self, Polygon):
        self._Polygon = Polygon

    @property
    def AdvancedInfo(self):
        r"""此字段为扩展字段。
GeneralBasicOcr接口返回段落信息Parag，包含ParagNo。
        :rtype: str
        """
        return self._AdvancedInfo

    @AdvancedInfo.setter
    def AdvancedInfo(self, AdvancedInfo):
        self._AdvancedInfo = AdvancedInfo


    def _deserialize(self, params):
        self._DetectedText = params.get("DetectedText")
        self._Confidence = params.get("Confidence")
        if params.get("Polygon") is not None:
            self._Polygon = []
            for item in params.get("Polygon"):
                obj = Coord()
                obj._deserialize(item)
                self._Polygon.append(obj)
        self._AdvancedInfo = params.get("AdvancedInfo")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class AirTicketInfo(AbstractModel):
    r"""航空运输电子客票行程单信息

    """

    def __init__(self):
        r"""
        :param _PassengerName: 旅客姓名
        :type PassengerName: str
        :param _ValidIdNumber: 有效身份证件号码
        :type ValidIdNumber: str
        :param _Endorsement: 签注
        :type Endorsement: str
        :param _NumberOfGPOrder: GP单号
        :type NumberOfGPOrder: str
        :param _ElectronicInvoiceAirTransportReceiptNumber: 发票号码
        :type ElectronicInvoiceAirTransportReceiptNumber: str
        :param _DetailInformationOfAirTicketTuple: 机票详细信息元组
        :type DetailInformationOfAirTicketTuple: list of DetailInformationOfAirTicketTupleList
        :param _Fare: 票价
        :type Fare: str
        :param _FuelSurcharge: 燃油附加费
        :type FuelSurcharge: str
        :param _VatRate: 增值税税率
        :type VatRate: str
        :param _VatTaxAmount: 增值税税额
        :type VatTaxAmount: str
        :param _CivilAviationDevelopmentFund: 民航发展基金
        :type CivilAviationDevelopmentFund: str
        :param _OtherTaxes: 其他税费
        :type OtherTaxes: str
        :param _TotalAmount: 合计
        :type TotalAmount: str
        :param _ElectronicTicketNum: 电子客票号码
        :type ElectronicTicketNum: str
        :param _VerificationCode: 验证码
        :type VerificationCode: str
        :param _PromptInformation: 提示信息
        :type PromptInformation: str
        :param _Insurance: 保险费
        :type Insurance: str
        :param _AgentCode: 销售网点代号
        :type AgentCode: str
        :param _IssueParty: 填开单位
        :type IssueParty: str
        :param _IssueDate: 填开时间
        :type IssueDate: str
        :param _IssuingStatus: 开具状态
        :type IssuingStatus: str
        :param _MarkingOfDomesticOrInternational: 国内国际标识
        :type MarkingOfDomesticOrInternational: str
        :param _NameOfPurchaser: 购买方名称
        :type NameOfPurchaser: str
        :param _NameOfSeller: 销售方名称
        :type NameOfSeller: str
        :param _UnifiedSocialCreditCodeOfPurchaser: 统一社会信用代码
        :type UnifiedSocialCreditCodeOfPurchaser: str
        """
        self._PassengerName = None
        self._ValidIdNumber = None
        self._Endorsement = None
        self._NumberOfGPOrder = None
        self._ElectronicInvoiceAirTransportReceiptNumber = None
        self._DetailInformationOfAirTicketTuple = None
        self._Fare = None
        self._FuelSurcharge = None
        self._VatRate = None
        self._VatTaxAmount = None
        self._CivilAviationDevelopmentFund = None
        self._OtherTaxes = None
        self._TotalAmount = None
        self._ElectronicTicketNum = None
        self._VerificationCode = None
        self._PromptInformation = None
        self._Insurance = None
        self._AgentCode = None
        self._IssueParty = None
        self._IssueDate = None
        self._IssuingStatus = None
        self._MarkingOfDomesticOrInternational = None
        self._NameOfPurchaser = None
        self._NameOfSeller = None
        self._UnifiedSocialCreditCodeOfPurchaser = None

    @property
    def PassengerName(self):
        r"""旅客姓名
        :rtype: str
        """
        return self._PassengerName

    @PassengerName.setter
    def PassengerName(self, PassengerName):
        self._PassengerName = PassengerName

    @property
    def ValidIdNumber(self):
        r"""有效身份证件号码
        :rtype: str
        """
        return self._ValidIdNumber

    @ValidIdNumber.setter
    def ValidIdNumber(self, ValidIdNumber):
        self._ValidIdNumber = ValidIdNumber

    @property
    def Endorsement(self):
        r"""签注
        :rtype: str
        """
        return self._Endorsement

    @Endorsement.setter
    def Endorsement(self, Endorsement):
        self._Endorsement = Endorsement

    @property
    def NumberOfGPOrder(self):
        r"""GP单号
        :rtype: str
        """
        return self._NumberOfGPOrder

    @NumberOfGPOrder.setter
    def NumberOfGPOrder(self, NumberOfGPOrder):
        self._NumberOfGPOrder = NumberOfGPOrder

    @property
    def ElectronicInvoiceAirTransportReceiptNumber(self):
        r"""发票号码
        :rtype: str
        """
        return self._ElectronicInvoiceAirTransportReceiptNumber

    @ElectronicInvoiceAirTransportReceiptNumber.setter
    def ElectronicInvoiceAirTransportReceiptNumber(self, ElectronicInvoiceAirTransportReceiptNumber):
        self._ElectronicInvoiceAirTransportReceiptNumber = ElectronicInvoiceAirTransportReceiptNumber

    @property
    def DetailInformationOfAirTicketTuple(self):
        r"""机票详细信息元组
        :rtype: list of DetailInformationOfAirTicketTupleList
        """
        return self._DetailInformationOfAirTicketTuple

    @DetailInformationOfAirTicketTuple.setter
    def DetailInformationOfAirTicketTuple(self, DetailInformationOfAirTicketTuple):
        self._DetailInformationOfAirTicketTuple = DetailInformationOfAirTicketTuple

    @property
    def Fare(self):
        r"""票价
        :rtype: str
        """
        return self._Fare

    @Fare.setter
    def Fare(self, Fare):
        self._Fare = Fare

    @property
    def FuelSurcharge(self):
        r"""燃油附加费
        :rtype: str
        """
        return self._FuelSurcharge

    @FuelSurcharge.setter
    def FuelSurcharge(self, FuelSurcharge):
        self._FuelSurcharge = FuelSurcharge

    @property
    def VatRate(self):
        r"""增值税税率
        :rtype: str
        """
        return self._VatRate

    @VatRate.setter
    def VatRate(self, VatRate):
        self._VatRate = VatRate

    @property
    def VatTaxAmount(self):
        r"""增值税税额
        :rtype: str
        """
        return self._VatTaxAmount

    @VatTaxAmount.setter
    def VatTaxAmount(self, VatTaxAmount):
        self._VatTaxAmount = VatTaxAmount

    @property
    def CivilAviationDevelopmentFund(self):
        r"""民航发展基金
        :rtype: str
        """
        return self._CivilAviationDevelopmentFund

    @CivilAviationDevelopmentFund.setter
    def CivilAviationDevelopmentFund(self, CivilAviationDevelopmentFund):
        self._CivilAviationDevelopmentFund = CivilAviationDevelopmentFund

    @property
    def OtherTaxes(self):
        r"""其他税费
        :rtype: str
        """
        return self._OtherTaxes

    @OtherTaxes.setter
    def OtherTaxes(self, OtherTaxes):
        self._OtherTaxes = OtherTaxes

    @property
    def TotalAmount(self):
        r"""合计
        :rtype: str
        """
        return self._TotalAmount

    @TotalAmount.setter
    def TotalAmount(self, TotalAmount):
        self._TotalAmount = TotalAmount

    @property
    def ElectronicTicketNum(self):
        r"""电子客票号码
        :rtype: str
        """
        return self._ElectronicTicketNum

    @ElectronicTicketNum.setter
    def ElectronicTicketNum(self, ElectronicTicketNum):
        self._ElectronicTicketNum = ElectronicTicketNum

    @property
    def VerificationCode(self):
        r"""验证码
        :rtype: str
        """
        return self._VerificationCode

    @VerificationCode.setter
    def VerificationCode(self, VerificationCode):
        self._VerificationCode = VerificationCode

    @property
    def PromptInformation(self):
        r"""提示信息
        :rtype: str
        """
        return self._PromptInformation

    @PromptInformation.setter
    def PromptInformation(self, PromptInformation):
        self._PromptInformation = PromptInformation

    @property
    def Insurance(self):
        r"""保险费
        :rtype: str
        """
        return self._Insurance

    @Insurance.setter
    def Insurance(self, Insurance):
        self._Insurance = Insurance

    @property
    def AgentCode(self):
        r"""销售网点代号
        :rtype: str
        """
        return self._AgentCode

    @AgentCode.setter
    def AgentCode(self, AgentCode):
        self._AgentCode = AgentCode

    @property
    def IssueParty(self):
        r"""填开单位
        :rtype: str
        """
        return self._IssueParty

    @IssueParty.setter
    def IssueParty(self, IssueParty):
        self._IssueParty = IssueParty

    @property
    def IssueDate(self):
        r"""填开时间
        :rtype: str
        """
        return self._IssueDate

    @IssueDate.setter
    def IssueDate(self, IssueDate):
        self._IssueDate = IssueDate

    @property
    def IssuingStatus(self):
        r"""开具状态
        :rtype: str
        """
        return self._IssuingStatus

    @IssuingStatus.setter
    def IssuingStatus(self, IssuingStatus):
        self._IssuingStatus = IssuingStatus

    @property
    def MarkingOfDomesticOrInternational(self):
        r"""国内国际标识
        :rtype: str
        """
        return self._MarkingOfDomesticOrInternational

    @MarkingOfDomesticOrInternational.setter
    def MarkingOfDomesticOrInternational(self, MarkingOfDomesticOrInternational):
        self._MarkingOfDomesticOrInternational = MarkingOfDomesticOrInternational

    @property
    def NameOfPurchaser(self):
        r"""购买方名称
        :rtype: str
        """
        return self._NameOfPurchaser

    @NameOfPurchaser.setter
    def NameOfPurchaser(self, NameOfPurchaser):
        self._NameOfPurchaser = NameOfPurchaser

    @property
    def NameOfSeller(self):
        r"""销售方名称
        :rtype: str
        """
        return self._NameOfSeller

    @NameOfSeller.setter
    def NameOfSeller(self, NameOfSeller):
        self._NameOfSeller = NameOfSeller

    @property
    def UnifiedSocialCreditCodeOfPurchaser(self):
        r"""统一社会信用代码
        :rtype: str
        """
        return self._UnifiedSocialCreditCodeOfPurchaser

    @UnifiedSocialCreditCodeOfPurchaser.setter
    def UnifiedSocialCreditCodeOfPurchaser(self, UnifiedSocialCreditCodeOfPurchaser):
        self._UnifiedSocialCreditCodeOfPurchaser = UnifiedSocialCreditCodeOfPurchaser


    def _deserialize(self, params):
        self._PassengerName = params.get("PassengerName")
        self._ValidIdNumber = params.get("ValidIdNumber")
        self._Endorsement = params.get("Endorsement")
        self._NumberOfGPOrder = params.get("NumberOfGPOrder")
        self._ElectronicInvoiceAirTransportReceiptNumber = params.get("ElectronicInvoiceAirTransportReceiptNumber")
        if params.get("DetailInformationOfAirTicketTuple") is not None:
            self._DetailInformationOfAirTicketTuple = []
            for item in params.get("DetailInformationOfAirTicketTuple"):
                obj = DetailInformationOfAirTicketTupleList()
                obj._deserialize(item)
                self._DetailInformationOfAirTicketTuple.append(obj)
        self._Fare = params.get("Fare")
        self._FuelSurcharge = params.get("FuelSurcharge")
        self._VatRate = params.get("VatRate")
        self._VatTaxAmount = params.get("VatTaxAmount")
        self._CivilAviationDevelopmentFund = params.get("CivilAviationDevelopmentFund")
        self._OtherTaxes = params.get("OtherTaxes")
        self._TotalAmount = params.get("TotalAmount")
        self._ElectronicTicketNum = params.get("ElectronicTicketNum")
        self._VerificationCode = params.get("VerificationCode")
        self._PromptInformation = params.get("PromptInformation")
        self._Insurance = params.get("Insurance")
        self._AgentCode = params.get("AgentCode")
        self._IssueParty = params.get("IssueParty")
        self._IssueDate = params.get("IssueDate")
        self._IssuingStatus = params.get("IssuingStatus")
        self._MarkingOfDomesticOrInternational = params.get("MarkingOfDomesticOrInternational")
        self._NameOfPurchaser = params.get("NameOfPurchaser")
        self._NameOfSeller = params.get("NameOfSeller")
        self._UnifiedSocialCreditCodeOfPurchaser = params.get("UnifiedSocialCreditCodeOfPurchaser")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class AirTransport(AbstractModel):
    r"""机票行程单

    """

    def __init__(self):
        r"""
        :param _Title: 发票名称
        :type Title: str
        :param _Number: 电子客票号码
        :type Number: str
        :param _CheckCode: 校验码
        :type CheckCode: str
        :param _SerialNumber: 印刷序号
        :type SerialNumber: str
        :param _Date: 开票日期
        :type Date: str
        :param _AgentCode: 销售单位代号
        :type AgentCode: str
        :param _AgentCodeFirst: 销售单位代号第一行
        :type AgentCodeFirst: str
        :param _AgentCodeSecond: 销售单位代号第二行
        :type AgentCodeSecond: str
        :param _UserName: 姓名
        :type UserName: str
        :param _UserID: 身份证号
        :type UserID: str
        :param _Issuer: 填开单位
        :type Issuer: str
        :param _Fare: 票价
        :type Fare: str
        :param _Tax: 合计税额
        :type Tax: str
        :param _FuelSurcharge: 燃油附加费
        :type FuelSurcharge: str
        :param _AirDevelopmentFund: 民航发展基金
        :type AirDevelopmentFund: str
        :param _Insurance: 保险费
        :type Insurance: str
        :param _Total: 合计金额（小写）
        :type Total: str
        :param _Kind: 发票消费类型
        :type Kind: str
        :param _DomesticInternationalTag: 国内国际标签
        :type DomesticInternationalTag: str
        :param _DateStart: 客票生效日期
        :type DateStart: str
        :param _DateEnd: 有效截止日期
        :type DateEnd: str
        :param _Endorsement: 签注
        :type Endorsement: str
        :param _QRCodeMark: 是否存在二维码（1：有，0：无）
        :type QRCodeMark: int
        :param _FlightItems: 条目
        :type FlightItems: list of FlightItem
        :param _PromptInformation: 提示信息
        :type PromptInformation: str
        :param _BuyerTaxID: 统一社会信用代码/纳税人识别号
        :type BuyerTaxID: str
        :param _Buyer: 购买方名称
        :type Buyer: str
        :param _ReceiptNumber: 发票号码
        :type ReceiptNumber: str
        :param _InvoiceStatus: 开票状态
        :type InvoiceStatus: str
        :param _TaxRate: 增值税税率
        :type TaxRate: str
        :param _TaxAmount: 增值税税额
        :type TaxAmount: str
        """
        self._Title = None
        self._Number = None
        self._CheckCode = None
        self._SerialNumber = None
        self._Date = None
        self._AgentCode = None
        self._AgentCodeFirst = None
        self._AgentCodeSecond = None
        self._UserName = None
        self._UserID = None
        self._Issuer = None
        self._Fare = None
        self._Tax = None
        self._FuelSurcharge = None
        self._AirDevelopmentFund = None
        self._Insurance = None
        self._Total = None
        self._Kind = None
        self._DomesticInternationalTag = None
        self._DateStart = None
        self._DateEnd = None
        self._Endorsement = None
        self._QRCodeMark = None
        self._FlightItems = None
        self._PromptInformation = None
        self._BuyerTaxID = None
        self._Buyer = None
        self._ReceiptNumber = None
        self._InvoiceStatus = None
        self._TaxRate = None
        self._TaxAmount = None

    @property
    def Title(self):
        r"""发票名称
        :rtype: str
        """
        return self._Title

    @Title.setter
    def Title(self, Title):
        self._Title = Title

    @property
    def Number(self):
        r"""电子客票号码
        :rtype: str
        """
        return self._Number

    @Number.setter
    def Number(self, Number):
        self._Number = Number

    @property
    def CheckCode(self):
        r"""校验码
        :rtype: str
        """
        return self._CheckCode

    @CheckCode.setter
    def CheckCode(self, CheckCode):
        self._CheckCode = CheckCode

    @property
    def SerialNumber(self):
        r"""印刷序号
        :rtype: str
        """
        return self._SerialNumber

    @SerialNumber.setter
    def SerialNumber(self, SerialNumber):
        self._SerialNumber = SerialNumber

    @property
    def Date(self):
        r"""开票日期
        :rtype: str
        """
        return self._Date

    @Date.setter
    def Date(self, Date):
        self._Date = Date

    @property
    def AgentCode(self):
        r"""销售单位代号
        :rtype: str
        """
        return self._AgentCode

    @AgentCode.setter
    def AgentCode(self, AgentCode):
        self._AgentCode = AgentCode

    @property
    def AgentCodeFirst(self):
        r"""销售单位代号第一行
        :rtype: str
        """
        return self._AgentCodeFirst

    @AgentCodeFirst.setter
    def AgentCodeFirst(self, AgentCodeFirst):
        self._AgentCodeFirst = AgentCodeFirst

    @property
    def AgentCodeSecond(self):
        r"""销售单位代号第二行
        :rtype: str
        """
        return self._AgentCodeSecond

    @AgentCodeSecond.setter
    def AgentCodeSecond(self, AgentCodeSecond):
        self._AgentCodeSecond = AgentCodeSecond

    @property
    def UserName(self):
        r"""姓名
        :rtype: str
        """
        return self._UserName

    @UserName.setter
    def UserName(self, UserName):
        self._UserName = UserName

    @property
    def UserID(self):
        r"""身份证号
        :rtype: str
        """
        return self._UserID

    @UserID.setter
    def UserID(self, UserID):
        self._UserID = UserID

    @property
    def Issuer(self):
        r"""填开单位
        :rtype: str
        """
        return self._Issuer

    @Issuer.setter
    def Issuer(self, Issuer):
        self._Issuer = Issuer

    @property
    def Fare(self):
        r"""票价
        :rtype: str
        """
        return self._Fare

    @Fare.setter
    def Fare(self, Fare):
        self._Fare = Fare

    @property
    def Tax(self):
        r"""合计税额
        :rtype: str
        """
        return self._Tax

    @Tax.setter
    def Tax(self, Tax):
        self._Tax = Tax

    @property
    def FuelSurcharge(self):
        r"""燃油附加费
        :rtype: str
        """
        return self._FuelSurcharge

    @FuelSurcharge.setter
    def FuelSurcharge(self, FuelSurcharge):
        self._FuelSurcharge = FuelSurcharge

    @property
    def AirDevelopmentFund(self):
        r"""民航发展基金
        :rtype: str
        """
        return self._AirDevelopmentFund

    @AirDevelopmentFund.setter
    def AirDevelopmentFund(self, AirDevelopmentFund):
        self._AirDevelopmentFund = AirDevelopmentFund

    @property
    def Insurance(self):
        r"""保险费
        :rtype: str
        """
        return self._Insurance

    @Insurance.setter
    def Insurance(self, Insurance):
        self._Insurance = Insurance

    @property
    def Total(self):
        r"""合计金额（小写）
        :rtype: str
        """
        return self._Total

    @Total.setter
    def Total(self, Total):
        self._Total = Total

    @property
    def Kind(self):
        r"""发票消费类型
        :rtype: str
        """
        return self._Kind

    @Kind.setter
    def Kind(self, Kind):
        self._Kind = Kind

    @property
    def DomesticInternationalTag(self):
        r"""国内国际标签
        :rtype: str
        """
        return self._DomesticInternationalTag

    @DomesticInternationalTag.setter
    def DomesticInternationalTag(self, DomesticInternationalTag):
        self._DomesticInternationalTag = DomesticInternationalTag

    @property
    def DateStart(self):
        r"""客票生效日期
        :rtype: str
        """
        return self._DateStart

    @DateStart.setter
    def DateStart(self, DateStart):
        self._DateStart = DateStart

    @property
    def DateEnd(self):
        r"""有效截止日期
        :rtype: str
        """
        return self._DateEnd

    @DateEnd.setter
    def DateEnd(self, DateEnd):
        self._DateEnd = DateEnd

    @property
    def Endorsement(self):
        r"""签注
        :rtype: str
        """
        return self._Endorsement

    @Endorsement.setter
    def Endorsement(self, Endorsement):
        self._Endorsement = Endorsement

    @property
    def QRCodeMark(self):
        r"""是否存在二维码（1：有，0：无）
        :rtype: int
        """
        return self._QRCodeMark

    @QRCodeMark.setter
    def QRCodeMark(self, QRCodeMark):
        self._QRCodeMark = QRCodeMark

    @property
    def FlightItems(self):
        r"""条目
        :rtype: list of FlightItem
        """
        return self._FlightItems

    @FlightItems.setter
    def FlightItems(self, FlightItems):
        self._FlightItems = FlightItems

    @property
    def PromptInformation(self):
        r"""提示信息
        :rtype: str
        """
        return self._PromptInformation

    @PromptInformation.setter
    def PromptInformation(self, PromptInformation):
        self._PromptInformation = PromptInformation

    @property
    def BuyerTaxID(self):
        r"""统一社会信用代码/纳税人识别号
        :rtype: str
        """
        return self._BuyerTaxID

    @BuyerTaxID.setter
    def BuyerTaxID(self, BuyerTaxID):
        self._BuyerTaxID = BuyerTaxID

    @property
    def Buyer(self):
        r"""购买方名称
        :rtype: str
        """
        return self._Buyer

    @Buyer.setter
    def Buyer(self, Buyer):
        self._Buyer = Buyer

    @property
    def ReceiptNumber(self):
        r"""发票号码
        :rtype: str
        """
        return self._ReceiptNumber

    @ReceiptNumber.setter
    def ReceiptNumber(self, ReceiptNumber):
        self._ReceiptNumber = ReceiptNumber

    @property
    def InvoiceStatus(self):
        r"""开票状态
        :rtype: str
        """
        return self._InvoiceStatus

    @InvoiceStatus.setter
    def InvoiceStatus(self, InvoiceStatus):
        self._InvoiceStatus = InvoiceStatus

    @property
    def TaxRate(self):
        r"""增值税税率
        :rtype: str
        """
        return self._TaxRate

    @TaxRate.setter
    def TaxRate(self, TaxRate):
        self._TaxRate = TaxRate

    @property
    def TaxAmount(self):
        r"""增值税税额
        :rtype: str
        """
        return self._TaxAmount

    @TaxAmount.setter
    def TaxAmount(self, TaxAmount):
        self._TaxAmount = TaxAmount


    def _deserialize(self, params):
        self._Title = params.get("Title")
        self._Number = params.get("Number")
        self._CheckCode = params.get("CheckCode")
        self._SerialNumber = params.get("SerialNumber")
        self._Date = params.get("Date")
        self._AgentCode = params.get("AgentCode")
        self._AgentCodeFirst = params.get("AgentCodeFirst")
        self._AgentCodeSecond = params.get("AgentCodeSecond")
        self._UserName = params.get("UserName")
        self._UserID = params.get("UserID")
        self._Issuer = params.get("Issuer")
        self._Fare = params.get("Fare")
        self._Tax = params.get("Tax")
        self._FuelSurcharge = params.get("FuelSurcharge")
        self._AirDevelopmentFund = params.get("AirDevelopmentFund")
        self._Insurance = params.get("Insurance")
        self._Total = params.get("Total")
        self._Kind = params.get("Kind")
        self._DomesticInternationalTag = params.get("DomesticInternationalTag")
        self._DateStart = params.get("DateStart")
        self._DateEnd = params.get("DateEnd")
        self._Endorsement = params.get("Endorsement")
        self._QRCodeMark = params.get("QRCodeMark")
        if params.get("FlightItems") is not None:
            self._FlightItems = []
            for item in params.get("FlightItems"):
                obj = FlightItem()
                obj._deserialize(item)
                self._FlightItems.append(obj)
        self._PromptInformation = params.get("PromptInformation")
        self._BuyerTaxID = params.get("BuyerTaxID")
        self._Buyer = params.get("Buyer")
        self._ReceiptNumber = params.get("ReceiptNumber")
        self._InvoiceStatus = params.get("InvoiceStatus")
        self._TaxRate = params.get("TaxRate")
        self._TaxAmount = params.get("TaxAmount")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class AnswerInfo(AbstractModel):
    r"""单题所有答案区域批改信息

    """

    def __init__(self):
        r"""
        :param _HandwriteInfo: 手写答案内容，比如选择题的手写的选项、填空题的手写内容
        :type HandwriteInfo: str
        :param _IsCorrect: 答案是否正确
        :type IsCorrect: bool
        :param _AnswerAnalysis: 答案分析结果

        :type AnswerAnalysis: str
        :param _HandwriteInfoPositions: 答案区域的4个角点坐标, 是个长度为8的数组

[0,1,2,3,4,5,6,7]

(0,1) 左上角坐标
(2,3) 右上角坐标
(4,5) 右下角坐标
(6,7) 左下角坐标
注意：此字段可能返回 null，表示取不到有效值。
        :type HandwriteInfoPositions: list of int
        :param _RightAnswer: 返回正确答案内容

QuestionConfigMap配置了（“TrueAnswer”：1）才生效返回
        :type RightAnswer: str
        :param _KnowledgePoints: 返回题目的知识点内容

QuestionConfigMap配置了（“KnowledgePoints”：1）才生效返回
注意：此字段可能返回 null，表示取不到有效值。
        :type KnowledgePoints: list of str
        """
        self._HandwriteInfo = None
        self._IsCorrect = None
        self._AnswerAnalysis = None
        self._HandwriteInfoPositions = None
        self._RightAnswer = None
        self._KnowledgePoints = None

    @property
    def HandwriteInfo(self):
        r"""手写答案内容，比如选择题的手写的选项、填空题的手写内容
        :rtype: str
        """
        return self._HandwriteInfo

    @HandwriteInfo.setter
    def HandwriteInfo(self, HandwriteInfo):
        self._HandwriteInfo = HandwriteInfo

    @property
    def IsCorrect(self):
        r"""答案是否正确
        :rtype: bool
        """
        return self._IsCorrect

    @IsCorrect.setter
    def IsCorrect(self, IsCorrect):
        self._IsCorrect = IsCorrect

    @property
    def AnswerAnalysis(self):
        r"""答案分析结果

        :rtype: str
        """
        return self._AnswerAnalysis

    @AnswerAnalysis.setter
    def AnswerAnalysis(self, AnswerAnalysis):
        self._AnswerAnalysis = AnswerAnalysis

    @property
    def HandwriteInfoPositions(self):
        r"""答案区域的4个角点坐标, 是个长度为8的数组

[0,1,2,3,4,5,6,7]

(0,1) 左上角坐标
(2,3) 右上角坐标
(4,5) 右下角坐标
(6,7) 左下角坐标
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of int
        """
        return self._HandwriteInfoPositions

    @HandwriteInfoPositions.setter
    def HandwriteInfoPositions(self, HandwriteInfoPositions):
        self._HandwriteInfoPositions = HandwriteInfoPositions

    @property
    def RightAnswer(self):
        r"""返回正确答案内容

QuestionConfigMap配置了（“TrueAnswer”：1）才生效返回
        :rtype: str
        """
        return self._RightAnswer

    @RightAnswer.setter
    def RightAnswer(self, RightAnswer):
        self._RightAnswer = RightAnswer

    @property
    def KnowledgePoints(self):
        r"""返回题目的知识点内容

QuestionConfigMap配置了（“KnowledgePoints”：1）才生效返回
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of str
        """
        return self._KnowledgePoints

    @KnowledgePoints.setter
    def KnowledgePoints(self, KnowledgePoints):
        self._KnowledgePoints = KnowledgePoints


    def _deserialize(self, params):
        self._HandwriteInfo = params.get("HandwriteInfo")
        self._IsCorrect = params.get("IsCorrect")
        self._AnswerAnalysis = params.get("AnswerAnalysis")
        self._HandwriteInfoPositions = params.get("HandwriteInfoPositions")
        self._RightAnswer = params.get("RightAnswer")
        self._KnowledgePoints = params.get("KnowledgePoints")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ArithmeticOCRRequest(AbstractModel):
    r"""ArithmeticOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经Base64编码后不超过 7M。图片下载时间不超过 3 秒。
图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经 Base64 编码后不超过 7M。图片下载时间不超过 3 秒。
图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。
非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        :param _SupportHorizontalImage: 用于选择是否支持横屏拍摄。打开则支持横屏拍摄图片角度判断，角度信息在返回参数的angle中，默认值为true
        :type SupportHorizontalImage: bool
        :param _RejectNonArithmeticPic: 是否拒绝非速算图，打开则拒绝非速算图(注：非速算图是指风景人物等明显不是速算图片的图片)，默认值为false
        :type RejectNonArithmeticPic: bool
        :param _EnableDispRelatedVertical: 是否展开耦合算式中的竖式计算，默认值为false
        :type EnableDispRelatedVertical: bool
        :param _EnableDispMidResult: 是否展示竖式算式的中间结果和格式控制字符，默认值为false
        :type EnableDispMidResult: bool
        :param _EnablePdfRecognize: 是否开启pdf识别，默认值为true
        :type EnablePdfRecognize: bool
        :param _PdfPageIndex: pdf页码，从0开始，默认为0
        :type PdfPageIndex: int
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._SupportHorizontalImage = None
        self._RejectNonArithmeticPic = None
        self._EnableDispRelatedVertical = None
        self._EnableDispMidResult = None
        self._EnablePdfRecognize = None
        self._PdfPageIndex = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经Base64编码后不超过 7M。图片下载时间不超过 3 秒。
图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经 Base64 编码后不超过 7M。图片下载时间不超过 3 秒。
图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。
非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def SupportHorizontalImage(self):
        r"""用于选择是否支持横屏拍摄。打开则支持横屏拍摄图片角度判断，角度信息在返回参数的angle中，默认值为true
        :rtype: bool
        """
        return self._SupportHorizontalImage

    @SupportHorizontalImage.setter
    def SupportHorizontalImage(self, SupportHorizontalImage):
        self._SupportHorizontalImage = SupportHorizontalImage

    @property
    def RejectNonArithmeticPic(self):
        r"""是否拒绝非速算图，打开则拒绝非速算图(注：非速算图是指风景人物等明显不是速算图片的图片)，默认值为false
        :rtype: bool
        """
        return self._RejectNonArithmeticPic

    @RejectNonArithmeticPic.setter
    def RejectNonArithmeticPic(self, RejectNonArithmeticPic):
        self._RejectNonArithmeticPic = RejectNonArithmeticPic

    @property
    def EnableDispRelatedVertical(self):
        r"""是否展开耦合算式中的竖式计算，默认值为false
        :rtype: bool
        """
        return self._EnableDispRelatedVertical

    @EnableDispRelatedVertical.setter
    def EnableDispRelatedVertical(self, EnableDispRelatedVertical):
        self._EnableDispRelatedVertical = EnableDispRelatedVertical

    @property
    def EnableDispMidResult(self):
        r"""是否展示竖式算式的中间结果和格式控制字符，默认值为false
        :rtype: bool
        """
        return self._EnableDispMidResult

    @EnableDispMidResult.setter
    def EnableDispMidResult(self, EnableDispMidResult):
        self._EnableDispMidResult = EnableDispMidResult

    @property
    def EnablePdfRecognize(self):
        r"""是否开启pdf识别，默认值为true
        :rtype: bool
        """
        return self._EnablePdfRecognize

    @EnablePdfRecognize.setter
    def EnablePdfRecognize(self, EnablePdfRecognize):
        self._EnablePdfRecognize = EnablePdfRecognize

    @property
    def PdfPageIndex(self):
        r"""pdf页码，从0开始，默认为0
        :rtype: int
        """
        return self._PdfPageIndex

    @PdfPageIndex.setter
    def PdfPageIndex(self, PdfPageIndex):
        self._PdfPageIndex = PdfPageIndex


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._SupportHorizontalImage = params.get("SupportHorizontalImage")
        self._RejectNonArithmeticPic = params.get("RejectNonArithmeticPic")
        self._EnableDispRelatedVertical = params.get("EnableDispRelatedVertical")
        self._EnableDispMidResult = params.get("EnableDispMidResult")
        self._EnablePdfRecognize = params.get("EnablePdfRecognize")
        self._PdfPageIndex = params.get("PdfPageIndex")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ArithmeticOCRResponse(AbstractModel):
    r"""ArithmeticOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _TextDetections: 检测到的文本信息，具体内容请点击左侧链接。
        :type TextDetections: list of TextArithmetic
        :param _Angle: 图片横屏的角度(90度或270度)
        :type Angle: float
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._TextDetections = None
        self._Angle = None
        self._RequestId = None

    @property
    def TextDetections(self):
        r"""检测到的文本信息，具体内容请点击左侧链接。
        :rtype: list of TextArithmetic
        """
        return self._TextDetections

    @TextDetections.setter
    def TextDetections(self, TextDetections):
        self._TextDetections = TextDetections

    @property
    def Angle(self):
        r"""图片横屏的角度(90度或270度)
        :rtype: float
        """
        return self._Angle

    @Angle.setter
    def Angle(self, Angle):
        self._Angle = Angle

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("TextDetections") is not None:
            self._TextDetections = []
            for item in params.get("TextDetections"):
                obj = TextArithmetic()
                obj._deserialize(item)
                self._TextDetections.append(obj)
        self._Angle = params.get("Angle")
        self._RequestId = params.get("RequestId")


class BankCardOCRRequest(AbstractModel):
    r"""BankCardOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。建议图片存储于腾讯云，可保障更高的下载速度和稳定性。
        :type ImageUrl: str
        :param _RetBorderCutImage: 是否返回预处理（精确剪裁对齐）后的银行卡图片数据，默认false。
        :type RetBorderCutImage: bool
        :param _RetCardNoImage: 是否返回卡号的切图图片数据，默认false。
        :type RetCardNoImage: bool
        :param _EnableCopyCheck: 复印件检测开关，如果输入的图片是银行卡复印件图片则返回告警，默认false。
        :type EnableCopyCheck: bool
        :param _EnableReshootCheck: 翻拍检测开关，如果输入的图片是银行卡翻拍图片则返回告警，默认false。
        :type EnableReshootCheck: bool
        :param _EnableBorderCheck: 边框遮挡检测开关，如果输入的图片是银行卡边框被遮挡则返回告警，默认false。
        :type EnableBorderCheck: bool
        :param _EnableQualityValue: 是否返回图片质量分数（图片质量分数是评价一个图片的模糊程度的标准），默认false。
        :type EnableQualityValue: bool
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._RetBorderCutImage = None
        self._RetCardNoImage = None
        self._EnableCopyCheck = None
        self._EnableReshootCheck = None
        self._EnableBorderCheck = None
        self._EnableQualityValue = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。建议图片存储于腾讯云，可保障更高的下载速度和稳定性。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def RetBorderCutImage(self):
        r"""是否返回预处理（精确剪裁对齐）后的银行卡图片数据，默认false。
        :rtype: bool
        """
        return self._RetBorderCutImage

    @RetBorderCutImage.setter
    def RetBorderCutImage(self, RetBorderCutImage):
        self._RetBorderCutImage = RetBorderCutImage

    @property
    def RetCardNoImage(self):
        r"""是否返回卡号的切图图片数据，默认false。
        :rtype: bool
        """
        return self._RetCardNoImage

    @RetCardNoImage.setter
    def RetCardNoImage(self, RetCardNoImage):
        self._RetCardNoImage = RetCardNoImage

    @property
    def EnableCopyCheck(self):
        r"""复印件检测开关，如果输入的图片是银行卡复印件图片则返回告警，默认false。
        :rtype: bool
        """
        return self._EnableCopyCheck

    @EnableCopyCheck.setter
    def EnableCopyCheck(self, EnableCopyCheck):
        self._EnableCopyCheck = EnableCopyCheck

    @property
    def EnableReshootCheck(self):
        r"""翻拍检测开关，如果输入的图片是银行卡翻拍图片则返回告警，默认false。
        :rtype: bool
        """
        return self._EnableReshootCheck

    @EnableReshootCheck.setter
    def EnableReshootCheck(self, EnableReshootCheck):
        self._EnableReshootCheck = EnableReshootCheck

    @property
    def EnableBorderCheck(self):
        r"""边框遮挡检测开关，如果输入的图片是银行卡边框被遮挡则返回告警，默认false。
        :rtype: bool
        """
        return self._EnableBorderCheck

    @EnableBorderCheck.setter
    def EnableBorderCheck(self, EnableBorderCheck):
        self._EnableBorderCheck = EnableBorderCheck

    @property
    def EnableQualityValue(self):
        r"""是否返回图片质量分数（图片质量分数是评价一个图片的模糊程度的标准），默认false。
        :rtype: bool
        """
        return self._EnableQualityValue

    @EnableQualityValue.setter
    def EnableQualityValue(self, EnableQualityValue):
        self._EnableQualityValue = EnableQualityValue


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._RetBorderCutImage = params.get("RetBorderCutImage")
        self._RetCardNoImage = params.get("RetCardNoImage")
        self._EnableCopyCheck = params.get("EnableCopyCheck")
        self._EnableReshootCheck = params.get("EnableReshootCheck")
        self._EnableBorderCheck = params.get("EnableBorderCheck")
        self._EnableQualityValue = params.get("EnableQualityValue")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class BankCardOCRResponse(AbstractModel):
    r"""BankCardOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _CardNo: 卡号
        :type CardNo: str
        :param _BankInfo: 银行信息
        :type BankInfo: str
        :param _ValidDate: 有效期，格式如：07/2023
        :type ValidDate: str
        :param _CardType: 卡类型
        :type CardType: str
        :param _CardName: 卡名字
        :type CardName: str
        :param _BorderCutImage: 切片图片数据
注意：此字段可能返回 null，表示取不到有效值。
        :type BorderCutImage: str
        :param _CardNoImage: 卡号图片数据
注意：此字段可能返回 null，表示取不到有效值。
        :type CardNoImage: str
        :param _WarningCode: WarningCode 告警码列表和释义：
-9110:银行卡日期无效; 
-9111:银行卡边框不完整; 
-9112:银行卡图片反光;
-9113:银行卡复印件;
-9114:银行卡翻拍件
（告警码可以同时存在多个）
注意：此字段可能返回 null，表示取不到有效值。
        :type WarningCode: list of int
        :param _QualityValue: 图片质量分数，请求EnableQualityValue时返回（取值范围：0-100，分数越低越模糊，建议阈值≥50）。
注意：此字段可能返回 null，表示取不到有效值。
        :type QualityValue: int
        :param _CardCategory: 卡类别， 如： 标准实体银行卡、电子银行卡信息截图
        :type CardCategory: str
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._CardNo = None
        self._BankInfo = None
        self._ValidDate = None
        self._CardType = None
        self._CardName = None
        self._BorderCutImage = None
        self._CardNoImage = None
        self._WarningCode = None
        self._QualityValue = None
        self._CardCategory = None
        self._RequestId = None

    @property
    def CardNo(self):
        r"""卡号
        :rtype: str
        """
        return self._CardNo

    @CardNo.setter
    def CardNo(self, CardNo):
        self._CardNo = CardNo

    @property
    def BankInfo(self):
        r"""银行信息
        :rtype: str
        """
        return self._BankInfo

    @BankInfo.setter
    def BankInfo(self, BankInfo):
        self._BankInfo = BankInfo

    @property
    def ValidDate(self):
        r"""有效期，格式如：07/2023
        :rtype: str
        """
        return self._ValidDate

    @ValidDate.setter
    def ValidDate(self, ValidDate):
        self._ValidDate = ValidDate

    @property
    def CardType(self):
        r"""卡类型
        :rtype: str
        """
        return self._CardType

    @CardType.setter
    def CardType(self, CardType):
        self._CardType = CardType

    @property
    def CardName(self):
        r"""卡名字
        :rtype: str
        """
        return self._CardName

    @CardName.setter
    def CardName(self, CardName):
        self._CardName = CardName

    @property
    def BorderCutImage(self):
        r"""切片图片数据
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._BorderCutImage

    @BorderCutImage.setter
    def BorderCutImage(self, BorderCutImage):
        self._BorderCutImage = BorderCutImage

    @property
    def CardNoImage(self):
        r"""卡号图片数据
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._CardNoImage

    @CardNoImage.setter
    def CardNoImage(self, CardNoImage):
        self._CardNoImage = CardNoImage

    @property
    def WarningCode(self):
        r"""WarningCode 告警码列表和释义：
-9110:银行卡日期无效; 
-9111:银行卡边框不完整; 
-9112:银行卡图片反光;
-9113:银行卡复印件;
-9114:银行卡翻拍件
（告警码可以同时存在多个）
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of int
        """
        return self._WarningCode

    @WarningCode.setter
    def WarningCode(self, WarningCode):
        self._WarningCode = WarningCode

    @property
    def QualityValue(self):
        r"""图片质量分数，请求EnableQualityValue时返回（取值范围：0-100，分数越低越模糊，建议阈值≥50）。
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._QualityValue

    @QualityValue.setter
    def QualityValue(self, QualityValue):
        self._QualityValue = QualityValue

    @property
    def CardCategory(self):
        r"""卡类别， 如： 标准实体银行卡、电子银行卡信息截图
        :rtype: str
        """
        return self._CardCategory

    @CardCategory.setter
    def CardCategory(self, CardCategory):
        self._CardCategory = CardCategory

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._CardNo = params.get("CardNo")
        self._BankInfo = params.get("BankInfo")
        self._ValidDate = params.get("ValidDate")
        self._CardType = params.get("CardType")
        self._CardName = params.get("CardName")
        self._BorderCutImage = params.get("BorderCutImage")
        self._CardNoImage = params.get("CardNoImage")
        self._WarningCode = params.get("WarningCode")
        self._QualityValue = params.get("QualityValue")
        self._CardCategory = params.get("CardCategory")
        self._RequestId = params.get("RequestId")


class BankSlip(AbstractModel):
    r"""银行回单

    """

    def __init__(self):
        r"""
        :param _BankSlipInfos: 银行回单信息
注意：此字段可能返回 null，表示取不到有效值。
        :type BankSlipInfos: list of BankSlipInfo
        :param _CommonBankSlipInfos: 银行回单信息常用字段
        :type CommonBankSlipInfos: list of BankSlipInfo
        """
        self._BankSlipInfos = None
        self._CommonBankSlipInfos = None

    @property
    def BankSlipInfos(self):
        r"""银行回单信息
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of BankSlipInfo
        """
        return self._BankSlipInfos

    @BankSlipInfos.setter
    def BankSlipInfos(self, BankSlipInfos):
        self._BankSlipInfos = BankSlipInfos

    @property
    def CommonBankSlipInfos(self):
        r"""银行回单信息常用字段
        :rtype: list of BankSlipInfo
        """
        return self._CommonBankSlipInfos

    @CommonBankSlipInfos.setter
    def CommonBankSlipInfos(self, CommonBankSlipInfos):
        self._CommonBankSlipInfos = CommonBankSlipInfos


    def _deserialize(self, params):
        if params.get("BankSlipInfos") is not None:
            self._BankSlipInfos = []
            for item in params.get("BankSlipInfos"):
                obj = BankSlipInfo()
                obj._deserialize(item)
                self._BankSlipInfos.append(obj)
        if params.get("CommonBankSlipInfos") is not None:
            self._CommonBankSlipInfos = []
            for item in params.get("CommonBankSlipInfos"):
                obj = BankSlipInfo()
                obj._deserialize(item)
                self._CommonBankSlipInfos.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class BankSlipInfo(AbstractModel):
    r"""银行回单识别出的字段

    """

    def __init__(self):
        r"""
        :param _Name: 识别出的字段名称(关键字)，支持以下字段：
付款开户行、收款开户行、付款账号、收款账号、回单类型、回单编号、币种、流水号、凭证号码、交易机构、交易金额、手续费、日期等字段信息。
        :type Name: str
        :param _Value: 识别出的字段名称对应的值，也就是字段Name对应的字符串结果。
        :type Value: str
        :param _Rect: 文本行在旋转纠正之后的图像中的像素坐标。
        :type Rect: :class:`tencentcloud.ocr.v20181119.models.Rect`
        """
        self._Name = None
        self._Value = None
        self._Rect = None

    @property
    def Name(self):
        r"""识别出的字段名称(关键字)，支持以下字段：
付款开户行、收款开户行、付款账号、收款账号、回单类型、回单编号、币种、流水号、凭证号码、交易机构、交易金额、手续费、日期等字段信息。
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Value(self):
        r"""识别出的字段名称对应的值，也就是字段Name对应的字符串结果。
        :rtype: str
        """
        return self._Value

    @Value.setter
    def Value(self, Value):
        self._Value = Value

    @property
    def Rect(self):
        r"""文本行在旋转纠正之后的图像中的像素坐标。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Rect`
        """
        return self._Rect

    @Rect.setter
    def Rect(self, Rect):
        self._Rect = Rect


    def _deserialize(self, params):
        self._Name = params.get("Name")
        self._Value = params.get("Value")
        if params.get("Rect") is not None:
            self._Rect = Rect()
            self._Rect._deserialize(params.get("Rect"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class BankSlipOCRRequest(AbstractModel):
    r"""BankSlipOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。要求图片经Base64编码后不超过 7M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。
图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。要求图片经Base64编码后不超过 7M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。
建议图片存储于腾讯云，可保障更高的下载速度和稳定性。
        :type ImageUrl: str
        :param _IsPdf: 是否开启PDF识别，默认值为true，开启后可同时支持图片和PDF的识别。
        :type IsPdf: bool
        :param _PdfPageNumber: 需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :type PdfPageNumber: int
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._IsPdf = None
        self._PdfPageNumber = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。要求图片经Base64编码后不超过 7M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。
图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。要求图片经Base64编码后不超过 7M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。
建议图片存储于腾讯云，可保障更高的下载速度和稳定性。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def IsPdf(self):
        r"""是否开启PDF识别，默认值为true，开启后可同时支持图片和PDF的识别。
        :rtype: bool
        """
        return self._IsPdf

    @IsPdf.setter
    def IsPdf(self, IsPdf):
        self._IsPdf = IsPdf

    @property
    def PdfPageNumber(self):
        r"""需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :rtype: int
        """
        return self._PdfPageNumber

    @PdfPageNumber.setter
    def PdfPageNumber(self, PdfPageNumber):
        self._PdfPageNumber = PdfPageNumber


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._IsPdf = params.get("IsPdf")
        self._PdfPageNumber = params.get("PdfPageNumber")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class BankSlipOCRResponse(AbstractModel):
    r"""BankSlipOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _BankSlipInfos: 银行回单识别结果，具体内容请点击左侧链接。
        :type BankSlipInfos: list of BankSlipInfo
        :param _Angle: 图片旋转角度（角度制），文本的水平方向为0°，顺时针为正，逆时针为负。
        :type Angle: float
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._BankSlipInfos = None
        self._Angle = None
        self._RequestId = None

    @property
    def BankSlipInfos(self):
        r"""银行回单识别结果，具体内容请点击左侧链接。
        :rtype: list of BankSlipInfo
        """
        return self._BankSlipInfos

    @BankSlipInfos.setter
    def BankSlipInfos(self, BankSlipInfos):
        self._BankSlipInfos = BankSlipInfos

    @property
    def Angle(self):
        r"""图片旋转角度（角度制），文本的水平方向为0°，顺时针为正，逆时针为负。
        :rtype: float
        """
        return self._Angle

    @Angle.setter
    def Angle(self, Angle):
        self._Angle = Angle

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("BankSlipInfos") is not None:
            self._BankSlipInfos = []
            for item in params.get("BankSlipInfos"):
                obj = BankSlipInfo()
                obj._deserialize(item)
                self._BankSlipInfos.append(obj)
        self._Angle = params.get("Angle")
        self._RequestId = params.get("RequestId")


class BizLicenseOCRRequest(AbstractModel):
    r"""BizLicenseOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经Base64编码后不超过 7M。图片下载时间不超过 3 秒。
图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经 Base64 编码后不超过 7M。图片下载时间不超过 3 秒。
图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。
非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        :param _EnableCopyWarn: 是否返回告警码，默认为false
        :type EnableCopyWarn: bool
        :param _EnablePeriodComplete: 是否返回自动拼接的有效期，默认为true
        :type EnablePeriodComplete: bool
        :param _EnableBusinessCertificate: 是否支持营业类证件识别（包括营业执照和非营业执照的其他证件），默认为false
        :type EnableBusinessCertificate: bool
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._EnableCopyWarn = None
        self._EnablePeriodComplete = None
        self._EnableBusinessCertificate = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经Base64编码后不超过 7M。图片下载时间不超过 3 秒。
图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经 Base64 编码后不超过 7M。图片下载时间不超过 3 秒。
图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。
非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def EnableCopyWarn(self):
        r"""是否返回告警码，默认为false
        :rtype: bool
        """
        return self._EnableCopyWarn

    @EnableCopyWarn.setter
    def EnableCopyWarn(self, EnableCopyWarn):
        self._EnableCopyWarn = EnableCopyWarn

    @property
    def EnablePeriodComplete(self):
        r"""是否返回自动拼接的有效期，默认为true
        :rtype: bool
        """
        return self._EnablePeriodComplete

    @EnablePeriodComplete.setter
    def EnablePeriodComplete(self, EnablePeriodComplete):
        self._EnablePeriodComplete = EnablePeriodComplete

    @property
    def EnableBusinessCertificate(self):
        r"""是否支持营业类证件识别（包括营业执照和非营业执照的其他证件），默认为false
        :rtype: bool
        """
        return self._EnableBusinessCertificate

    @EnableBusinessCertificate.setter
    def EnableBusinessCertificate(self, EnableBusinessCertificate):
        self._EnableBusinessCertificate = EnableBusinessCertificate


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._EnableCopyWarn = params.get("EnableCopyWarn")
        self._EnablePeriodComplete = params.get("EnablePeriodComplete")
        self._EnableBusinessCertificate = params.get("EnableBusinessCertificate")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class BizLicenseOCRResponse(AbstractModel):
    r"""BizLicenseOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _RegNum: 统一社会信用代码（三合一之前为注册号）
        :type RegNum: str
        :param _Name: 公司名称
        :type Name: str
        :param _Capital: 注册资本
        :type Capital: str
        :param _Person: 法定代表人
        :type Person: str
        :param _Address: 地址
        :type Address: str
        :param _Business: 经营范围
        :type Business: str
        :param _Type: 主体类型
        :type Type: str
        :param _Period: 营业期限
        :type Period: str
        :param _ComposingForm: 组成形式
        :type ComposingForm: str
        :param _SetDate: 成立日期
        :type SetDate: str
        :param _RecognizeWarnCode: Code 告警码列表和释义：
-9102 黑白复印件告警
-9104 翻拍件告警
        :type RecognizeWarnCode: list of int
        :param _RecognizeWarnMsg: 告警码说明：
WARN_COPY_CARD 黑白复印件告警
WARN_RESHOOT_CARD翻拍件告警
        :type RecognizeWarnMsg: list of str
        :param _IsDuplication: 是否为副本。1为是，-1为不是。
        :type IsDuplication: int
        :param _RegistrationDate: 登记日期
        :type RegistrationDate: str
        :param _Angle:  图片旋转角度(角度制)，文本的水平方向为0度；顺时针为正，角度范围是0-360度


        :type Angle: float
        :param _NationalEmblem: 是否有国徽。false为没有，true为有。
        :type NationalEmblem: bool
        :param _QRCode: 是否有二维码。false为没有，true为有。
        :type QRCode: bool
        :param _Seal: 是否有印章。false为没有，true为有。
        :type Seal: bool
        :param _Title: 标题
        :type Title: str
        :param _SerialNumber: 编号
        :type SerialNumber: str
        :param _RegistrationAuthority: 登记机关
        :type RegistrationAuthority: str
        :param _Electronic: 是否是电子营业执照。false为没有，true为有。
        :type Electronic: bool
        :param _BusinessCertificate: 非营业执照的营业类证件识别结果，将以结构化形式呈现。
        :type BusinessCertificate: list of BusinessCertificateInfo
        :param _Important: 重要提示字段
        :type Important: str
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._RegNum = None
        self._Name = None
        self._Capital = None
        self._Person = None
        self._Address = None
        self._Business = None
        self._Type = None
        self._Period = None
        self._ComposingForm = None
        self._SetDate = None
        self._RecognizeWarnCode = None
        self._RecognizeWarnMsg = None
        self._IsDuplication = None
        self._RegistrationDate = None
        self._Angle = None
        self._NationalEmblem = None
        self._QRCode = None
        self._Seal = None
        self._Title = None
        self._SerialNumber = None
        self._RegistrationAuthority = None
        self._Electronic = None
        self._BusinessCertificate = None
        self._Important = None
        self._RequestId = None

    @property
    def RegNum(self):
        r"""统一社会信用代码（三合一之前为注册号）
        :rtype: str
        """
        return self._RegNum

    @RegNum.setter
    def RegNum(self, RegNum):
        self._RegNum = RegNum

    @property
    def Name(self):
        r"""公司名称
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Capital(self):
        r"""注册资本
        :rtype: str
        """
        return self._Capital

    @Capital.setter
    def Capital(self, Capital):
        self._Capital = Capital

    @property
    def Person(self):
        r"""法定代表人
        :rtype: str
        """
        return self._Person

    @Person.setter
    def Person(self, Person):
        self._Person = Person

    @property
    def Address(self):
        r"""地址
        :rtype: str
        """
        return self._Address

    @Address.setter
    def Address(self, Address):
        self._Address = Address

    @property
    def Business(self):
        r"""经营范围
        :rtype: str
        """
        return self._Business

    @Business.setter
    def Business(self, Business):
        self._Business = Business

    @property
    def Type(self):
        r"""主体类型
        :rtype: str
        """
        return self._Type

    @Type.setter
    def Type(self, Type):
        self._Type = Type

    @property
    def Period(self):
        r"""营业期限
        :rtype: str
        """
        return self._Period

    @Period.setter
    def Period(self, Period):
        self._Period = Period

    @property
    def ComposingForm(self):
        r"""组成形式
        :rtype: str
        """
        return self._ComposingForm

    @ComposingForm.setter
    def ComposingForm(self, ComposingForm):
        self._ComposingForm = ComposingForm

    @property
    def SetDate(self):
        r"""成立日期
        :rtype: str
        """
        return self._SetDate

    @SetDate.setter
    def SetDate(self, SetDate):
        self._SetDate = SetDate

    @property
    def RecognizeWarnCode(self):
        r"""Code 告警码列表和释义：
-9102 黑白复印件告警
-9104 翻拍件告警
        :rtype: list of int
        """
        return self._RecognizeWarnCode

    @RecognizeWarnCode.setter
    def RecognizeWarnCode(self, RecognizeWarnCode):
        self._RecognizeWarnCode = RecognizeWarnCode

    @property
    def RecognizeWarnMsg(self):
        r"""告警码说明：
WARN_COPY_CARD 黑白复印件告警
WARN_RESHOOT_CARD翻拍件告警
        :rtype: list of str
        """
        return self._RecognizeWarnMsg

    @RecognizeWarnMsg.setter
    def RecognizeWarnMsg(self, RecognizeWarnMsg):
        self._RecognizeWarnMsg = RecognizeWarnMsg

    @property
    def IsDuplication(self):
        r"""是否为副本。1为是，-1为不是。
        :rtype: int
        """
        return self._IsDuplication

    @IsDuplication.setter
    def IsDuplication(self, IsDuplication):
        self._IsDuplication = IsDuplication

    @property
    def RegistrationDate(self):
        r"""登记日期
        :rtype: str
        """
        return self._RegistrationDate

    @RegistrationDate.setter
    def RegistrationDate(self, RegistrationDate):
        self._RegistrationDate = RegistrationDate

    @property
    def Angle(self):
        r""" 图片旋转角度(角度制)，文本的水平方向为0度；顺时针为正，角度范围是0-360度


        :rtype: float
        """
        return self._Angle

    @Angle.setter
    def Angle(self, Angle):
        self._Angle = Angle

    @property
    def NationalEmblem(self):
        r"""是否有国徽。false为没有，true为有。
        :rtype: bool
        """
        return self._NationalEmblem

    @NationalEmblem.setter
    def NationalEmblem(self, NationalEmblem):
        self._NationalEmblem = NationalEmblem

    @property
    def QRCode(self):
        r"""是否有二维码。false为没有，true为有。
        :rtype: bool
        """
        return self._QRCode

    @QRCode.setter
    def QRCode(self, QRCode):
        self._QRCode = QRCode

    @property
    def Seal(self):
        r"""是否有印章。false为没有，true为有。
        :rtype: bool
        """
        return self._Seal

    @Seal.setter
    def Seal(self, Seal):
        self._Seal = Seal

    @property
    def Title(self):
        r"""标题
        :rtype: str
        """
        return self._Title

    @Title.setter
    def Title(self, Title):
        self._Title = Title

    @property
    def SerialNumber(self):
        r"""编号
        :rtype: str
        """
        return self._SerialNumber

    @SerialNumber.setter
    def SerialNumber(self, SerialNumber):
        self._SerialNumber = SerialNumber

    @property
    def RegistrationAuthority(self):
        r"""登记机关
        :rtype: str
        """
        return self._RegistrationAuthority

    @RegistrationAuthority.setter
    def RegistrationAuthority(self, RegistrationAuthority):
        self._RegistrationAuthority = RegistrationAuthority

    @property
    def Electronic(self):
        r"""是否是电子营业执照。false为没有，true为有。
        :rtype: bool
        """
        return self._Electronic

    @Electronic.setter
    def Electronic(self, Electronic):
        self._Electronic = Electronic

    @property
    def BusinessCertificate(self):
        r"""非营业执照的营业类证件识别结果，将以结构化形式呈现。
        :rtype: list of BusinessCertificateInfo
        """
        return self._BusinessCertificate

    @BusinessCertificate.setter
    def BusinessCertificate(self, BusinessCertificate):
        self._BusinessCertificate = BusinessCertificate

    @property
    def Important(self):
        r"""重要提示字段
        :rtype: str
        """
        return self._Important

    @Important.setter
    def Important(self, Important):
        self._Important = Important

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._RegNum = params.get("RegNum")
        self._Name = params.get("Name")
        self._Capital = params.get("Capital")
        self._Person = params.get("Person")
        self._Address = params.get("Address")
        self._Business = params.get("Business")
        self._Type = params.get("Type")
        self._Period = params.get("Period")
        self._ComposingForm = params.get("ComposingForm")
        self._SetDate = params.get("SetDate")
        self._RecognizeWarnCode = params.get("RecognizeWarnCode")
        self._RecognizeWarnMsg = params.get("RecognizeWarnMsg")
        self._IsDuplication = params.get("IsDuplication")
        self._RegistrationDate = params.get("RegistrationDate")
        self._Angle = params.get("Angle")
        self._NationalEmblem = params.get("NationalEmblem")
        self._QRCode = params.get("QRCode")
        self._Seal = params.get("Seal")
        self._Title = params.get("Title")
        self._SerialNumber = params.get("SerialNumber")
        self._RegistrationAuthority = params.get("RegistrationAuthority")
        self._Electronic = params.get("Electronic")
        if params.get("BusinessCertificate") is not None:
            self._BusinessCertificate = []
            for item in params.get("BusinessCertificate"):
                obj = BusinessCertificateInfo()
                obj._deserialize(item)
                self._BusinessCertificate.append(obj)
        self._Important = params.get("Important")
        self._RequestId = params.get("RequestId")


class BusInvoice(AbstractModel):
    r"""汽车票

    """

    def __init__(self):
        r"""
        :param _Title: 发票名称
        :type Title: str
        :param _QRCodeMark: 是否存在二维码（1：有，0：无）
        :type QRCodeMark: int
        :param _Number: 发票号码
        :type Number: str
        :param _Code: 发票代码
        :type Code: str
        :param _Date: 开票日期
        :type Date: str
        :param _TimeGetOn: 乘车时间
        :type TimeGetOn: str
        :param _DateGetOn: 乘车日期
        :type DateGetOn: str
        :param _StationGetOn: 出发车站
        :type StationGetOn: str
        :param _StationGetOff: 到达车站
        :type StationGetOff: str
        :param _Total: 票价
        :type Total: str
        :param _UserName: 姓名
        :type UserName: str
        :param _Kind: 消费类型
        :type Kind: str
        :param _UserID: 身份证号
        :type UserID: str
        :param _Province: 省
        :type Province: str
        :param _City: 市
        :type City: str
        :param _PlaceGetOn: 乘车地点
        :type PlaceGetOn: str
        :param _GateNumber: 检票口
        :type GateNumber: str
        :param _TicketType: 客票类型
        :type TicketType: str
        :param _VehicleType: 车型
        :type VehicleType: str
        :param _SeatNumber: 座位号
        :type SeatNumber: str
        :param _TrainNumber: 车次
        :type TrainNumber: str
        """
        self._Title = None
        self._QRCodeMark = None
        self._Number = None
        self._Code = None
        self._Date = None
        self._TimeGetOn = None
        self._DateGetOn = None
        self._StationGetOn = None
        self._StationGetOff = None
        self._Total = None
        self._UserName = None
        self._Kind = None
        self._UserID = None
        self._Province = None
        self._City = None
        self._PlaceGetOn = None
        self._GateNumber = None
        self._TicketType = None
        self._VehicleType = None
        self._SeatNumber = None
        self._TrainNumber = None

    @property
    def Title(self):
        r"""发票名称
        :rtype: str
        """
        return self._Title

    @Title.setter
    def Title(self, Title):
        self._Title = Title

    @property
    def QRCodeMark(self):
        r"""是否存在二维码（1：有，0：无）
        :rtype: int
        """
        return self._QRCodeMark

    @QRCodeMark.setter
    def QRCodeMark(self, QRCodeMark):
        self._QRCodeMark = QRCodeMark

    @property
    def Number(self):
        r"""发票号码
        :rtype: str
        """
        return self._Number

    @Number.setter
    def Number(self, Number):
        self._Number = Number

    @property
    def Code(self):
        r"""发票代码
        :rtype: str
        """
        return self._Code

    @Code.setter
    def Code(self, Code):
        self._Code = Code

    @property
    def Date(self):
        r"""开票日期
        :rtype: str
        """
        return self._Date

    @Date.setter
    def Date(self, Date):
        self._Date = Date

    @property
    def TimeGetOn(self):
        r"""乘车时间
        :rtype: str
        """
        return self._TimeGetOn

    @TimeGetOn.setter
    def TimeGetOn(self, TimeGetOn):
        self._TimeGetOn = TimeGetOn

    @property
    def DateGetOn(self):
        r"""乘车日期
        :rtype: str
        """
        return self._DateGetOn

    @DateGetOn.setter
    def DateGetOn(self, DateGetOn):
        self._DateGetOn = DateGetOn

    @property
    def StationGetOn(self):
        r"""出发车站
        :rtype: str
        """
        return self._StationGetOn

    @StationGetOn.setter
    def StationGetOn(self, StationGetOn):
        self._StationGetOn = StationGetOn

    @property
    def StationGetOff(self):
        r"""到达车站
        :rtype: str
        """
        return self._StationGetOff

    @StationGetOff.setter
    def StationGetOff(self, StationGetOff):
        self._StationGetOff = StationGetOff

    @property
    def Total(self):
        r"""票价
        :rtype: str
        """
        return self._Total

    @Total.setter
    def Total(self, Total):
        self._Total = Total

    @property
    def UserName(self):
        r"""姓名
        :rtype: str
        """
        return self._UserName

    @UserName.setter
    def UserName(self, UserName):
        self._UserName = UserName

    @property
    def Kind(self):
        r"""消费类型
        :rtype: str
        """
        return self._Kind

    @Kind.setter
    def Kind(self, Kind):
        self._Kind = Kind

    @property
    def UserID(self):
        r"""身份证号
        :rtype: str
        """
        return self._UserID

    @UserID.setter
    def UserID(self, UserID):
        self._UserID = UserID

    @property
    def Province(self):
        r"""省
        :rtype: str
        """
        return self._Province

    @Province.setter
    def Province(self, Province):
        self._Province = Province

    @property
    def City(self):
        r"""市
        :rtype: str
        """
        return self._City

    @City.setter
    def City(self, City):
        self._City = City

    @property
    def PlaceGetOn(self):
        r"""乘车地点
        :rtype: str
        """
        return self._PlaceGetOn

    @PlaceGetOn.setter
    def PlaceGetOn(self, PlaceGetOn):
        self._PlaceGetOn = PlaceGetOn

    @property
    def GateNumber(self):
        r"""检票口
        :rtype: str
        """
        return self._GateNumber

    @GateNumber.setter
    def GateNumber(self, GateNumber):
        self._GateNumber = GateNumber

    @property
    def TicketType(self):
        r"""客票类型
        :rtype: str
        """
        return self._TicketType

    @TicketType.setter
    def TicketType(self, TicketType):
        self._TicketType = TicketType

    @property
    def VehicleType(self):
        r"""车型
        :rtype: str
        """
        return self._VehicleType

    @VehicleType.setter
    def VehicleType(self, VehicleType):
        self._VehicleType = VehicleType

    @property
    def SeatNumber(self):
        r"""座位号
        :rtype: str
        """
        return self._SeatNumber

    @SeatNumber.setter
    def SeatNumber(self, SeatNumber):
        self._SeatNumber = SeatNumber

    @property
    def TrainNumber(self):
        r"""车次
        :rtype: str
        """
        return self._TrainNumber

    @TrainNumber.setter
    def TrainNumber(self, TrainNumber):
        self._TrainNumber = TrainNumber


    def _deserialize(self, params):
        self._Title = params.get("Title")
        self._QRCodeMark = params.get("QRCodeMark")
        self._Number = params.get("Number")
        self._Code = params.get("Code")
        self._Date = params.get("Date")
        self._TimeGetOn = params.get("TimeGetOn")
        self._DateGetOn = params.get("DateGetOn")
        self._StationGetOn = params.get("StationGetOn")
        self._StationGetOff = params.get("StationGetOff")
        self._Total = params.get("Total")
        self._UserName = params.get("UserName")
        self._Kind = params.get("Kind")
        self._UserID = params.get("UserID")
        self._Province = params.get("Province")
        self._City = params.get("City")
        self._PlaceGetOn = params.get("PlaceGetOn")
        self._GateNumber = params.get("GateNumber")
        self._TicketType = params.get("TicketType")
        self._VehicleType = params.get("VehicleType")
        self._SeatNumber = params.get("SeatNumber")
        self._TrainNumber = params.get("TrainNumber")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class BusinessCardInfo(AbstractModel):
    r"""名片识别结果

    """

    def __init__(self):
        r"""
        :param _Name: 识别出的字段名称（关键字，可能重复，比如多个手机），能识别的字段名为：
姓名、英文姓名、英文地址、公司、英文公司、职位、英文职位、部门、英文部门、手机、电话、传真、社交账号、QQ、MSN、微信、微博、邮箱、邮编、网址、公司账号、其他。
        :type Name: str
        :param _Value: 识别出的字段名称对应的值，也就是字段name对应的字符串结果。
        :type Value: str
        :param _ItemCoord: 文本行在旋转纠正之后的图像中的像素坐标，表示为（左上角x, 左上角y，宽width，高height）
        :type ItemCoord: :class:`tencentcloud.ocr.v20181119.models.ItemCoord`
        """
        self._Name = None
        self._Value = None
        self._ItemCoord = None

    @property
    def Name(self):
        r"""识别出的字段名称（关键字，可能重复，比如多个手机），能识别的字段名为：
姓名、英文姓名、英文地址、公司、英文公司、职位、英文职位、部门、英文部门、手机、电话、传真、社交账号、QQ、MSN、微信、微博、邮箱、邮编、网址、公司账号、其他。
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Value(self):
        r"""识别出的字段名称对应的值，也就是字段name对应的字符串结果。
        :rtype: str
        """
        return self._Value

    @Value.setter
    def Value(self, Value):
        self._Value = Value

    @property
    def ItemCoord(self):
        r"""文本行在旋转纠正之后的图像中的像素坐标，表示为（左上角x, 左上角y，宽width，高height）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ItemCoord`
        """
        return self._ItemCoord

    @ItemCoord.setter
    def ItemCoord(self, ItemCoord):
        self._ItemCoord = ItemCoord


    def _deserialize(self, params):
        self._Name = params.get("Name")
        self._Value = params.get("Value")
        if params.get("ItemCoord") is not None:
            self._ItemCoord = ItemCoord()
            self._ItemCoord._deserialize(params.get("ItemCoord"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class BusinessCardOCRRequest(AbstractModel):
    r"""BusinessCardOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经Base64编码后不超过 7M。图片下载时间不超过 3 秒。
图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经 Base64 编码后不超过 7M。图片下载时间不超过 3 秒。
图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。
非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        :param _Config: 可选字段，根据需要选择是否请求对应字段。
目前支持的字段为：
RetImageType-“PROPROCESS” 图像预处理，string 类型。
图像预处理功能为，检测图片倾斜的角度，将原本倾斜的图片围绕中心点转正，最终输出一张正的名片抠图。

SDK 设置方式参考：
Config = Json.stringify({"RetImageType":"PROPROCESS"})
API 3.0 Explorer 设置方式参考：
Config = {"RetImageType":"PROPROCESS"}
        :type Config: str
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._Config = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经Base64编码后不超过 7M。图片下载时间不超过 3 秒。
图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经 Base64 编码后不超过 7M。图片下载时间不超过 3 秒。
图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。
非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def Config(self):
        r"""可选字段，根据需要选择是否请求对应字段。
目前支持的字段为：
RetImageType-“PROPROCESS” 图像预处理，string 类型。
图像预处理功能为，检测图片倾斜的角度，将原本倾斜的图片围绕中心点转正，最终输出一张正的名片抠图。

SDK 设置方式参考：
Config = Json.stringify({"RetImageType":"PROPROCESS"})
API 3.0 Explorer 设置方式参考：
Config = {"RetImageType":"PROPROCESS"}
        :rtype: str
        """
        return self._Config

    @Config.setter
    def Config(self, Config):
        self._Config = Config


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._Config = params.get("Config")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class BusinessCardOCRResponse(AbstractModel):
    r"""BusinessCardOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _BusinessCardInfos: 名片识别结果，具体内容请点击左侧链接。
        :type BusinessCardInfos: list of BusinessCardInfo
        :param _RetImageBase64: 返回图像预处理后的图片，图像预处理未开启时返回内容为空。
        :type RetImageBase64: str
        :param _Angle: 图片旋转角度（角度制），文本的水平方向为0°；顺时针为正，逆时针为负。点击查看<a href="https://cloud.tencent.com/document/product/866/45139">如何纠正倾斜文本</a>
        :type Angle: float
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._BusinessCardInfos = None
        self._RetImageBase64 = None
        self._Angle = None
        self._RequestId = None

    @property
    def BusinessCardInfos(self):
        r"""名片识别结果，具体内容请点击左侧链接。
        :rtype: list of BusinessCardInfo
        """
        return self._BusinessCardInfos

    @BusinessCardInfos.setter
    def BusinessCardInfos(self, BusinessCardInfos):
        self._BusinessCardInfos = BusinessCardInfos

    @property
    def RetImageBase64(self):
        r"""返回图像预处理后的图片，图像预处理未开启时返回内容为空。
        :rtype: str
        """
        return self._RetImageBase64

    @RetImageBase64.setter
    def RetImageBase64(self, RetImageBase64):
        self._RetImageBase64 = RetImageBase64

    @property
    def Angle(self):
        r"""图片旋转角度（角度制），文本的水平方向为0°；顺时针为正，逆时针为负。点击查看<a href="https://cloud.tencent.com/document/product/866/45139">如何纠正倾斜文本</a>
        :rtype: float
        """
        return self._Angle

    @Angle.setter
    def Angle(self, Angle):
        self._Angle = Angle

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("BusinessCardInfos") is not None:
            self._BusinessCardInfos = []
            for item in params.get("BusinessCardInfos"):
                obj = BusinessCardInfo()
                obj._deserialize(item)
                self._BusinessCardInfos.append(obj)
        self._RetImageBase64 = params.get("RetImageBase64")
        self._Angle = params.get("Angle")
        self._RequestId = params.get("RequestId")


class BusinessCertificateInfo(AbstractModel):
    r"""非营业执照的营业类证件识别结果，将以结构化形式呈现。

    """

    def __init__(self):
        r"""
        :param _Name: 识别出的名称
        :type Name: str
        :param _Value: 识别出的字段名称对应的值
        :type Value: str
        :param _Rect: 坐标
        :type Rect: :class:`tencentcloud.ocr.v20181119.models.Rect`
        """
        self._Name = None
        self._Value = None
        self._Rect = None

    @property
    def Name(self):
        r"""识别出的名称
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Value(self):
        r"""识别出的字段名称对应的值
        :rtype: str
        """
        return self._Value

    @Value.setter
    def Value(self, Value):
        self._Value = Value

    @property
    def Rect(self):
        r"""坐标
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Rect`
        """
        return self._Rect

    @Rect.setter
    def Rect(self, Rect):
        self._Rect = Rect


    def _deserialize(self, params):
        self._Name = params.get("Name")
        self._Value = params.get("Value")
        if params.get("Rect") is not None:
            self._Rect = Rect()
            self._Rect._deserialize(params.get("Rect"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class CandWord(AbstractModel):
    r"""候选字符集(包含候选字Character以及置信度Confidence)

    """

    def __init__(self):
        r"""
        :param _CandWords: 候选字符集的单词信息（包括单词Character和单词置信度confidence）
        :type CandWords: list of Words
        """
        self._CandWords = None

    @property
    def CandWords(self):
        r"""候选字符集的单词信息（包括单词Character和单词置信度confidence）
        :rtype: list of Words
        """
        return self._CandWords

    @CandWords.setter
    def CandWords(self, CandWords):
        self._CandWords = CandWords


    def _deserialize(self, params):
        if params.get("CandWords") is not None:
            self._CandWords = []
            for item in params.get("CandWords"):
                obj = Words()
                obj._deserialize(item)
                self._CandWords.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class CarInvoiceInfo(AbstractModel):
    r"""购车发票识别结果

    """

    def __init__(self):
        r"""
        :param _Name: 识别出的字段名称(关键字)，支持以下字段：
发票代码、 机打代码、 发票号码、 发动机号码、 合格证号、 机打号码、 价税合计(小写)、 销货单位名称、 身份证号码/组织机构代码、 购买方名称、 销售方纳税人识别号、 购买方纳税人识别号、主管税务机关、 主管税务机关代码、 开票日期、 不含税价(小写)、 吨位、增值税税率或征收率、 车辆识别代号/车架号码、 增值税税额、 厂牌型号、 省、 市、 发票消费类型、 销售方电话、 销售方账号、 产地、 进口证明书号、 车辆类型、 机器编号、备注、开票人、限乘人数、商检单号、销售方地址、销售方开户银行、价税合计、发票类型。
        :type Name: str
        :param _Value: 识别出的字段名称对应的值，也就是字段name对应的字符串结果。
        :type Value: str
        :param _Rect: 字段在旋转纠正之后的图像中的像素坐标。
        :type Rect: :class:`tencentcloud.ocr.v20181119.models.Rect`
        :param _Polygon: 字段在原图中的四点坐标。
注意：此字段可能返回 null，表示取不到有效值。
注意：此字段可能返回 null，表示取不到有效值。
        :type Polygon: :class:`tencentcloud.ocr.v20181119.models.Polygon`
        """
        self._Name = None
        self._Value = None
        self._Rect = None
        self._Polygon = None

    @property
    def Name(self):
        r"""识别出的字段名称(关键字)，支持以下字段：
发票代码、 机打代码、 发票号码、 发动机号码、 合格证号、 机打号码、 价税合计(小写)、 销货单位名称、 身份证号码/组织机构代码、 购买方名称、 销售方纳税人识别号、 购买方纳税人识别号、主管税务机关、 主管税务机关代码、 开票日期、 不含税价(小写)、 吨位、增值税税率或征收率、 车辆识别代号/车架号码、 增值税税额、 厂牌型号、 省、 市、 发票消费类型、 销售方电话、 销售方账号、 产地、 进口证明书号、 车辆类型、 机器编号、备注、开票人、限乘人数、商检单号、销售方地址、销售方开户银行、价税合计、发票类型。
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Value(self):
        r"""识别出的字段名称对应的值，也就是字段name对应的字符串结果。
        :rtype: str
        """
        return self._Value

    @Value.setter
    def Value(self, Value):
        self._Value = Value

    @property
    def Rect(self):
        r"""字段在旋转纠正之后的图像中的像素坐标。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Rect`
        """
        return self._Rect

    @Rect.setter
    def Rect(self, Rect):
        self._Rect = Rect

    @property
    def Polygon(self):
        r"""字段在原图中的四点坐标。
注意：此字段可能返回 null，表示取不到有效值。
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Polygon`
        """
        return self._Polygon

    @Polygon.setter
    def Polygon(self, Polygon):
        self._Polygon = Polygon


    def _deserialize(self, params):
        self._Name = params.get("Name")
        self._Value = params.get("Value")
        if params.get("Rect") is not None:
            self._Rect = Rect()
            self._Rect._deserialize(params.get("Rect"))
        if params.get("Polygon") is not None:
            self._Polygon = Polygon()
            self._Polygon._deserialize(params.get("Polygon"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class CarInvoiceOCRRequest(AbstractModel):
    r"""CarInvoiceOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        :param _IsPdf: 是否开启PDF识别，默认值为true，开启后可同时支持图片和PDF的识别。
        :type IsPdf: bool
        :param _PdfPageNumber: 需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :type PdfPageNumber: int
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._IsPdf = None
        self._PdfPageNumber = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def IsPdf(self):
        r"""是否开启PDF识别，默认值为true，开启后可同时支持图片和PDF的识别。
        :rtype: bool
        """
        return self._IsPdf

    @IsPdf.setter
    def IsPdf(self, IsPdf):
        self._IsPdf = IsPdf

    @property
    def PdfPageNumber(self):
        r"""需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :rtype: int
        """
        return self._PdfPageNumber

    @PdfPageNumber.setter
    def PdfPageNumber(self, PdfPageNumber):
        self._PdfPageNumber = PdfPageNumber


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._IsPdf = params.get("IsPdf")
        self._PdfPageNumber = params.get("PdfPageNumber")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class CarInvoiceOCRResponse(AbstractModel):
    r"""CarInvoiceOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _CarInvoiceInfos: 购车发票识别结果，具体内容请点击左侧链接。
        :type CarInvoiceInfos: list of CarInvoiceInfo
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._CarInvoiceInfos = None
        self._RequestId = None

    @property
    def CarInvoiceInfos(self):
        r"""购车发票识别结果，具体内容请点击左侧链接。
        :rtype: list of CarInvoiceInfo
        """
        return self._CarInvoiceInfos

    @CarInvoiceInfos.setter
    def CarInvoiceInfos(self, CarInvoiceInfos):
        self._CarInvoiceInfos = CarInvoiceInfos

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("CarInvoiceInfos") is not None:
            self._CarInvoiceInfos = []
            for item in params.get("CarInvoiceInfos"):
                obj = CarInvoiceInfo()
                obj._deserialize(item)
                self._CarInvoiceInfos.append(obj)
        self._RequestId = params.get("RequestId")


class CardWarnInfo(AbstractModel):
    r"""卡证告警信息返回

    """

    def __init__(self):
        r"""
        :param _BorderCheck: 证件边缘是否完整
0：正常
1：边缘不完整
        :type BorderCheck: int
        :param _OcclusionCheck: 证件是否被遮挡
0：正常
1：有遮挡
        :type OcclusionCheck: int
        :param _CopyCheck: 是否复印
0:正常
1:复印件
        :type CopyCheck: int
        :param _ReshootCheck: 是否屏幕翻拍
0:正常
1:翻拍
        :type ReshootCheck: int
        :param _PSCheck: 证件是否有PS
0：正常
1：有PS
        :type PSCheck: int
        :param _BlurCheck: 是否模糊：
0:正常
1:模糊
        :type BlurCheck: int
        :param _BlurScore: 模糊分数， 范围：0.0-1.0，分数越高越模糊，建议阈值为0.5
        :type BlurScore: float
        :param _ElectronCheck: 是否电子身份证
0：否
1：是电子身份证
        :type ElectronCheck: int
        """
        self._BorderCheck = None
        self._OcclusionCheck = None
        self._CopyCheck = None
        self._ReshootCheck = None
        self._PSCheck = None
        self._BlurCheck = None
        self._BlurScore = None
        self._ElectronCheck = None

    @property
    def BorderCheck(self):
        r"""证件边缘是否完整
0：正常
1：边缘不完整
        :rtype: int
        """
        return self._BorderCheck

    @BorderCheck.setter
    def BorderCheck(self, BorderCheck):
        self._BorderCheck = BorderCheck

    @property
    def OcclusionCheck(self):
        r"""证件是否被遮挡
0：正常
1：有遮挡
        :rtype: int
        """
        return self._OcclusionCheck

    @OcclusionCheck.setter
    def OcclusionCheck(self, OcclusionCheck):
        self._OcclusionCheck = OcclusionCheck

    @property
    def CopyCheck(self):
        r"""是否复印
0:正常
1:复印件
        :rtype: int
        """
        return self._CopyCheck

    @CopyCheck.setter
    def CopyCheck(self, CopyCheck):
        self._CopyCheck = CopyCheck

    @property
    def ReshootCheck(self):
        r"""是否屏幕翻拍
0:正常
1:翻拍
        :rtype: int
        """
        return self._ReshootCheck

    @ReshootCheck.setter
    def ReshootCheck(self, ReshootCheck):
        self._ReshootCheck = ReshootCheck

    @property
    def PSCheck(self):
        r"""证件是否有PS
0：正常
1：有PS
        :rtype: int
        """
        return self._PSCheck

    @PSCheck.setter
    def PSCheck(self, PSCheck):
        self._PSCheck = PSCheck

    @property
    def BlurCheck(self):
        r"""是否模糊：
0:正常
1:模糊
        :rtype: int
        """
        return self._BlurCheck

    @BlurCheck.setter
    def BlurCheck(self, BlurCheck):
        self._BlurCheck = BlurCheck

    @property
    def BlurScore(self):
        r"""模糊分数， 范围：0.0-1.0，分数越高越模糊，建议阈值为0.5
        :rtype: float
        """
        return self._BlurScore

    @BlurScore.setter
    def BlurScore(self, BlurScore):
        self._BlurScore = BlurScore

    @property
    def ElectronCheck(self):
        r"""是否电子身份证
0：否
1：是电子身份证
        :rtype: int
        """
        return self._ElectronCheck

    @ElectronCheck.setter
    def ElectronCheck(self, ElectronCheck):
        self._ElectronCheck = ElectronCheck


    def _deserialize(self, params):
        self._BorderCheck = params.get("BorderCheck")
        self._OcclusionCheck = params.get("OcclusionCheck")
        self._CopyCheck = params.get("CopyCheck")
        self._ReshootCheck = params.get("ReshootCheck")
        self._PSCheck = params.get("PSCheck")
        self._BlurCheck = params.get("BlurCheck")
        self._BlurScore = params.get("BlurScore")
        self._ElectronCheck = params.get("ElectronCheck")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class CellContent(AbstractModel):
    r"""单元格识别结果

    """

    def __init__(self):
        r"""
        :param _ParagNo: 段落编号
注意：此字段可能返回 null，表示取不到有效值。
        :type ParagNo: int
        :param _WordSize: 字体大小
注意：此字段可能返回 null，表示取不到有效值。
        :type WordSize: int
        """
        self._ParagNo = None
        self._WordSize = None

    @property
    def ParagNo(self):
        r"""段落编号
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._ParagNo

    @ParagNo.setter
    def ParagNo(self, ParagNo):
        self._ParagNo = ParagNo

    @property
    def WordSize(self):
        r"""字体大小
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._WordSize

    @WordSize.setter
    def WordSize(self, WordSize):
        self._WordSize = WordSize


    def _deserialize(self, params):
        self._ParagNo = params.get("ParagNo")
        self._WordSize = params.get("WordSize")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ClassifyDetectInfo(AbstractModel):
    r"""卡证智能分类结果

    """

    def __init__(self):
        r"""
        :param _Name: 分类名称，包括：身份证、护照、名片、银行卡、行驶证、驾驶证、港澳台通行证、户口本、港澳台来往内地通行证、港澳台居住证、不动产证、营业执照
        :type Name: str
        :param _Type: 分类类型
注意：此字段可能返回 null，表示取不到有效值。
        :type Type: str
        :param _Rect: 位置坐标
        :type Rect: :class:`tencentcloud.ocr.v20181119.models.Rect`
        """
        self._Name = None
        self._Type = None
        self._Rect = None

    @property
    def Name(self):
        r"""分类名称，包括：身份证、护照、名片、银行卡、行驶证、驾驶证、港澳台通行证、户口本、港澳台来往内地通行证、港澳台居住证、不动产证、营业执照
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Type(self):
        r"""分类类型
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Type

    @Type.setter
    def Type(self, Type):
        self._Type = Type

    @property
    def Rect(self):
        r"""位置坐标
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Rect`
        """
        return self._Rect

    @Rect.setter
    def Rect(self, Rect):
        self._Rect = Rect


    def _deserialize(self, params):
        self._Name = params.get("Name")
        self._Type = params.get("Type")
        if params.get("Rect") is not None:
            self._Rect = Rect()
            self._Rect._deserialize(params.get("Rect"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ClassifyDetectOCRRequest(AbstractModel):
    r"""ClassifyDetectOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        :param _DiscernType: 可以指定要识别的票证类型,指定后不出现在此列表的票证将不返回类型。不指定时默认返回所有支持类别票证的识别信息。

以下是当前支持的类型：
IDCardFront: 身份证正面识别
IDCardBack: 身份证背面识别
Passport: 护照
BusinessCard: 名片识别
BankCard: 银行卡识别
VehicleLicenseFront: 行驶证主页识别
VehicleLicenseBack: 行驶证副页识别
DriverLicenseFront: 驾驶证主页识别
DriverLicenseBack: 驾驶证副页识别
PermitFront: 港澳台通行证正面
ResidenceBooklet: 户口本资料页
MainlandPermitFront: 港澳台来往内地通行证正面
HmtResidentPermitFront: 港澳台居住证正面
HmtResidentPermitBack: 港澳台居住证背面
EstateCert: 不动产证
BizLicense: 营业执照
ForeignPermanentResidentFront: 外国人永居证正面识别
ForeignPermanentResidentBack: 外国人永居证背面识别
        :type DiscernType: list of str
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._DiscernType = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def DiscernType(self):
        r"""可以指定要识别的票证类型,指定后不出现在此列表的票证将不返回类型。不指定时默认返回所有支持类别票证的识别信息。

以下是当前支持的类型：
IDCardFront: 身份证正面识别
IDCardBack: 身份证背面识别
Passport: 护照
BusinessCard: 名片识别
BankCard: 银行卡识别
VehicleLicenseFront: 行驶证主页识别
VehicleLicenseBack: 行驶证副页识别
DriverLicenseFront: 驾驶证主页识别
DriverLicenseBack: 驾驶证副页识别
PermitFront: 港澳台通行证正面
ResidenceBooklet: 户口本资料页
MainlandPermitFront: 港澳台来往内地通行证正面
HmtResidentPermitFront: 港澳台居住证正面
HmtResidentPermitBack: 港澳台居住证背面
EstateCert: 不动产证
BizLicense: 营业执照
ForeignPermanentResidentFront: 外国人永居证正面识别
ForeignPermanentResidentBack: 外国人永居证背面识别
        :rtype: list of str
        """
        return self._DiscernType

    @DiscernType.setter
    def DiscernType(self, DiscernType):
        self._DiscernType = DiscernType


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._DiscernType = params.get("DiscernType")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ClassifyDetectOCRResponse(AbstractModel):
    r"""ClassifyDetectOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _ClassifyDetectInfos: 智能卡证分类结果。当图片类型不支持分类识别或者识别出的类型不在请求参数DiscernType指定的范围内时，返回结果中的Type字段将为空字符串，Name字段将返回"其它"
        :type ClassifyDetectInfos: list of ClassifyDetectInfo
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._ClassifyDetectInfos = None
        self._RequestId = None

    @property
    def ClassifyDetectInfos(self):
        r"""智能卡证分类结果。当图片类型不支持分类识别或者识别出的类型不在请求参数DiscernType指定的范围内时，返回结果中的Type字段将为空字符串，Name字段将返回"其它"
        :rtype: list of ClassifyDetectInfo
        """
        return self._ClassifyDetectInfos

    @ClassifyDetectInfos.setter
    def ClassifyDetectInfos(self, ClassifyDetectInfos):
        self._ClassifyDetectInfos = ClassifyDetectInfos

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("ClassifyDetectInfos") is not None:
            self._ClassifyDetectInfos = []
            for item in params.get("ClassifyDetectInfos"):
                obj = ClassifyDetectInfo()
                obj._deserialize(item)
                self._ClassifyDetectInfos.append(obj)
        self._RequestId = params.get("RequestId")


class ClassifyStoreNameRequest(AbstractModel):
    r"""ClassifyStoreName请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: <p>图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。支持的图片像素：需介于20-10000px之间。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。</p>
        :type ImageBase64: str
        :param _ImageUrl: <p>图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。支持的图片像素：需介于20-10000px之间。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。</p>
        :type ImageUrl: str
        :param _SceneType: <p>是否输出具体场景标签。注：开启后耗时会增加。</p>
        :type SceneType: bool
        :param _StoreInfo: <p>输入商户名称，辅助判断具体场景标签。注：仅SceneType配置为true时支持。</p>
        :type StoreInfo: str
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._SceneType = None
        self._StoreInfo = None

    @property
    def ImageBase64(self):
        r"""<p>图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。支持的图片像素：需介于20-10000px之间。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。</p>
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""<p>图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。支持的图片像素：需介于20-10000px之间。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。</p>
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def SceneType(self):
        r"""<p>是否输出具体场景标签。注：开启后耗时会增加。</p>
        :rtype: bool
        """
        return self._SceneType

    @SceneType.setter
    def SceneType(self, SceneType):
        self._SceneType = SceneType

    @property
    def StoreInfo(self):
        r"""<p>输入商户名称，辅助判断具体场景标签。注：仅SceneType配置为true时支持。</p>
        :rtype: str
        """
        return self._StoreInfo

    @StoreInfo.setter
    def StoreInfo(self, StoreInfo):
        self._StoreInfo = StoreInfo


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._SceneType = params.get("SceneType")
        self._StoreInfo = params.get("StoreInfo")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ClassifyStoreNameResponse(AbstractModel):
    r"""ClassifyStoreName返回参数结构体

    """

    def __init__(self):
        r"""
        :param _StoreLabel: <p>门头照标签</p>
        :type StoreLabel: list of str
        :param _SceneType: <p>具体场景标签，输出3个最匹配的场景， 注：仅SceneType配置为true时支持。</p>
        :type SceneType: str
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._StoreLabel = None
        self._SceneType = None
        self._RequestId = None

    @property
    def StoreLabel(self):
        r"""<p>门头照标签</p>
        :rtype: list of str
        """
        return self._StoreLabel

    @StoreLabel.setter
    def StoreLabel(self, StoreLabel):
        self._StoreLabel = StoreLabel

    @property
    def SceneType(self):
        r"""<p>具体场景标签，输出3个最匹配的场景， 注：仅SceneType配置为true时支持。</p>
        :rtype: str
        """
        return self._SceneType

    @SceneType.setter
    def SceneType(self, SceneType):
        self._SceneType = SceneType

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._StoreLabel = params.get("StoreLabel")
        self._SceneType = params.get("SceneType")
        self._RequestId = params.get("RequestId")


class ConfigAdvanced(AbstractModel):
    r"""支持模版的单个属性配置

    """

    def __init__(self):
        r"""
        :param _Scene: 模版的单个属性配置
        :type Scene: str
        """
        self._Scene = None

    @property
    def Scene(self):
        r"""模版的单个属性配置
        :rtype: str
        """
        return self._Scene

    @Scene.setter
    def Scene(self, Scene):
        self._Scene = Scene


    def _deserialize(self, params):
        self._Scene = params.get("Scene")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ContentInfo(AbstractModel):
    r"""卡证字段信息返回值

    """

    def __init__(self):
        r"""
        :param _Content: 字段内容
        :type Content: str
        :param _Confidence: 结果置信度
        :type Confidence: int
        :param _IsInComplete: 字段是否不完整（value内容）
0 字段正常
1 字段不完整
        :type IsInComplete: int
        :param _IsReflect: 字段反光（value内容）
0 字段正常
1 字段有反光
        :type IsReflect: int
        :param _IsKeyInComplete: 字段是否不完整（key内容）
0 字段正常
1 字段不完整
        :type IsKeyInComplete: int
        :param _IsKeyReflect: 字段反光（key内容）
0 字段正常
1 字段有反光
        :type IsKeyReflect: int
        """
        self._Content = None
        self._Confidence = None
        self._IsInComplete = None
        self._IsReflect = None
        self._IsKeyInComplete = None
        self._IsKeyReflect = None

    @property
    def Content(self):
        r"""字段内容
        :rtype: str
        """
        return self._Content

    @Content.setter
    def Content(self, Content):
        self._Content = Content

    @property
    def Confidence(self):
        r"""结果置信度
        :rtype: int
        """
        return self._Confidence

    @Confidence.setter
    def Confidence(self, Confidence):
        self._Confidence = Confidence

    @property
    def IsInComplete(self):
        r"""字段是否不完整（value内容）
0 字段正常
1 字段不完整
        :rtype: int
        """
        return self._IsInComplete

    @IsInComplete.setter
    def IsInComplete(self, IsInComplete):
        self._IsInComplete = IsInComplete

    @property
    def IsReflect(self):
        r"""字段反光（value内容）
0 字段正常
1 字段有反光
        :rtype: int
        """
        return self._IsReflect

    @IsReflect.setter
    def IsReflect(self, IsReflect):
        self._IsReflect = IsReflect

    @property
    def IsKeyInComplete(self):
        r"""字段是否不完整（key内容）
0 字段正常
1 字段不完整
        :rtype: int
        """
        return self._IsKeyInComplete

    @IsKeyInComplete.setter
    def IsKeyInComplete(self, IsKeyInComplete):
        self._IsKeyInComplete = IsKeyInComplete

    @property
    def IsKeyReflect(self):
        r"""字段反光（key内容）
0 字段正常
1 字段有反光
        :rtype: int
        """
        return self._IsKeyReflect

    @IsKeyReflect.setter
    def IsKeyReflect(self, IsKeyReflect):
        self._IsKeyReflect = IsKeyReflect


    def _deserialize(self, params):
        self._Content = params.get("Content")
        self._Confidence = params.get("Confidence")
        self._IsInComplete = params.get("IsInComplete")
        self._IsReflect = params.get("IsReflect")
        self._IsKeyInComplete = params.get("IsKeyInComplete")
        self._IsKeyReflect = params.get("IsKeyReflect")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class Coord(AbstractModel):
    r"""坐标

    """

    def __init__(self):
        r"""
        :param _X: <p>横坐标。</p>
        :type X: int
        :param _Y: <p>纵坐标。</p>
        :type Y: int
        """
        self._X = None
        self._Y = None

    @property
    def X(self):
        r"""<p>横坐标。</p>
        :rtype: int
        """
        return self._X

    @X.setter
    def X(self, X):
        self._X = X

    @property
    def Y(self):
        r"""<p>纵坐标。</p>
        :rtype: int
        """
        return self._Y

    @Y.setter
    def Y(self, Y):
        self._Y = Y


    def _deserialize(self, params):
        self._X = params.get("X")
        self._Y = params.get("Y")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class CoordList(AbstractModel):
    r"""坐标数组

    """

    def __init__(self):
        r"""
        :param _TopLeft: <p>左上角坐标。</p>
        :type TopLeft: :class:`tencentcloud.ocr.v20181119.models.Coord`
        :param _TopRight: <p>右上角坐标。</p>
        :type TopRight: :class:`tencentcloud.ocr.v20181119.models.Coord`
        :param _BottomLeft: <p>左下角坐标。</p>
        :type BottomLeft: :class:`tencentcloud.ocr.v20181119.models.Coord`
        :param _BottomRight: <p>右下角坐标。</p>
        :type BottomRight: :class:`tencentcloud.ocr.v20181119.models.Coord`
        """
        self._TopLeft = None
        self._TopRight = None
        self._BottomLeft = None
        self._BottomRight = None

    @property
    def TopLeft(self):
        r"""<p>左上角坐标。</p>
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Coord`
        """
        return self._TopLeft

    @TopLeft.setter
    def TopLeft(self, TopLeft):
        self._TopLeft = TopLeft

    @property
    def TopRight(self):
        r"""<p>右上角坐标。</p>
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Coord`
        """
        return self._TopRight

    @TopRight.setter
    def TopRight(self, TopRight):
        self._TopRight = TopRight

    @property
    def BottomLeft(self):
        r"""<p>左下角坐标。</p>
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Coord`
        """
        return self._BottomLeft

    @BottomLeft.setter
    def BottomLeft(self, BottomLeft):
        self._BottomLeft = BottomLeft

    @property
    def BottomRight(self):
        r"""<p>右下角坐标。</p>
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Coord`
        """
        return self._BottomRight

    @BottomRight.setter
    def BottomRight(self, BottomRight):
        self._BottomRight = BottomRight


    def _deserialize(self, params):
        if params.get("TopLeft") is not None:
            self._TopLeft = Coord()
            self._TopLeft._deserialize(params.get("TopLeft"))
        if params.get("TopRight") is not None:
            self._TopRight = Coord()
            self._TopRight._deserialize(params.get("TopRight"))
        if params.get("BottomLeft") is not None:
            self._BottomLeft = Coord()
            self._BottomLeft._deserialize(params.get("BottomLeft"))
        if params.get("BottomRight") is not None:
            self._BottomRight = Coord()
            self._BottomRight._deserialize(params.get("BottomRight"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class CustomsDeclaration(AbstractModel):
    r"""海关进/出口货物报关单

    """

    def __init__(self):
        r"""
        :param _Title: 发票名称
        :type Title: str
        :param _Content: 识别出的字段名称(关键字)
        :type Content: list of OtherInvoiceItem
        """
        self._Title = None
        self._Content = None

    @property
    def Title(self):
        r"""发票名称
        :rtype: str
        """
        return self._Title

    @Title.setter
    def Title(self, Title):
        self._Title = Title

    @property
    def Content(self):
        r"""识别出的字段名称(关键字)
        :rtype: list of OtherInvoiceItem
        """
        return self._Content

    @Content.setter
    def Content(self, Content):
        self._Content = Content


    def _deserialize(self, params):
        self._Title = params.get("Title")
        if params.get("Content") is not None:
            self._Content = []
            for item in params.get("Content"):
                obj = OtherInvoiceItem()
                obj._deserialize(item)
                self._Content.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class CustomsPaymentReceipt(AbstractModel):
    r"""海关缴款书

    """

    def __init__(self):
        r"""
        :param _Title: 发票名称
        :type Title: str
        :param _Content: 识别出的字段名称(关键字)，支持以下字段： 税号 、纳税人识别号 、纳税人名称 、金额合计大写 、金额合计小写 、填发日期 、税务机关 、填票人。 示例值：纳税人识别号
        :type Content: list of OtherInvoiceItem
        :param _CommonContent: 海关缴款书常用字段
        :type CommonContent: list of OtherInvoiceItem
        """
        self._Title = None
        self._Content = None
        self._CommonContent = None

    @property
    def Title(self):
        r"""发票名称
        :rtype: str
        """
        return self._Title

    @Title.setter
    def Title(self, Title):
        self._Title = Title

    @property
    def Content(self):
        r"""识别出的字段名称(关键字)，支持以下字段： 税号 、纳税人识别号 、纳税人名称 、金额合计大写 、金额合计小写 、填发日期 、税务机关 、填票人。 示例值：纳税人识别号
        :rtype: list of OtherInvoiceItem
        """
        return self._Content

    @Content.setter
    def Content(self, Content):
        self._Content = Content

    @property
    def CommonContent(self):
        r"""海关缴款书常用字段
        :rtype: list of OtherInvoiceItem
        """
        return self._CommonContent

    @CommonContent.setter
    def CommonContent(self, CommonContent):
        self._CommonContent = CommonContent


    def _deserialize(self, params):
        self._Title = params.get("Title")
        if params.get("Content") is not None:
            self._Content = []
            for item in params.get("Content"):
                obj = OtherInvoiceItem()
                obj._deserialize(item)
                self._Content.append(obj)
        if params.get("CommonContent") is not None:
            self._CommonContent = []
            for item in params.get("CommonContent"):
                obj = OtherInvoiceItem()
                obj._deserialize(item)
                self._CommonContent.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeExtractDocAgentJobRequest(AbstractModel):
    r"""DescribeExtractDocAgentJob请求参数结构体

    """

    def __init__(self):
        r"""
        :param _JobId: 任务唯一ID。由服务端生成。
        :type JobId: str
        """
        self._JobId = None

    @property
    def JobId(self):
        r"""任务唯一ID。由服务端生成。
        :rtype: str
        """
        return self._JobId

    @JobId.setter
    def JobId(self, JobId):
        self._JobId = JobId


    def _deserialize(self, params):
        self._JobId = params.get("JobId")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeExtractDocAgentJobResponse(AbstractModel):
    r"""DescribeExtractDocAgentJob返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Angle: 图片旋转角度(角度制)，文本的水平方向为 0；顺时针为正，逆时针为负。
        :type Angle: float
        :param _StructuralList: 配置结构化文本信息。
        :type StructuralList: list of GroupInfo
        :param _ErrorCode: 任务执行错误码。当任务状态不为 FAIL 时，该值为""。
        :type ErrorCode: str
        :param _ErrorMessage: 任务执行错误信息。当任务状态不为 FAIL 时，该值为""。
        :type ErrorMessage: str
        :param _JobStatus: 任务状态。WAIT：等待中，RUN：执行中，FAIL：任务失败，DONE：任务成功
        :type JobStatus: str
        :param _ThoughtContent: 思考过程
        :type ThoughtContent: str
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Angle = None
        self._StructuralList = None
        self._ErrorCode = None
        self._ErrorMessage = None
        self._JobStatus = None
        self._ThoughtContent = None
        self._RequestId = None

    @property
    def Angle(self):
        r"""图片旋转角度(角度制)，文本的水平方向为 0；顺时针为正，逆时针为负。
        :rtype: float
        """
        return self._Angle

    @Angle.setter
    def Angle(self, Angle):
        self._Angle = Angle

    @property
    def StructuralList(self):
        r"""配置结构化文本信息。
        :rtype: list of GroupInfo
        """
        return self._StructuralList

    @StructuralList.setter
    def StructuralList(self, StructuralList):
        self._StructuralList = StructuralList

    @property
    def ErrorCode(self):
        r"""任务执行错误码。当任务状态不为 FAIL 时，该值为""。
        :rtype: str
        """
        return self._ErrorCode

    @ErrorCode.setter
    def ErrorCode(self, ErrorCode):
        self._ErrorCode = ErrorCode

    @property
    def ErrorMessage(self):
        r"""任务执行错误信息。当任务状态不为 FAIL 时，该值为""。
        :rtype: str
        """
        return self._ErrorMessage

    @ErrorMessage.setter
    def ErrorMessage(self, ErrorMessage):
        self._ErrorMessage = ErrorMessage

    @property
    def JobStatus(self):
        r"""任务状态。WAIT：等待中，RUN：执行中，FAIL：任务失败，DONE：任务成功
        :rtype: str
        """
        return self._JobStatus

    @JobStatus.setter
    def JobStatus(self, JobStatus):
        self._JobStatus = JobStatus

    @property
    def ThoughtContent(self):
        r"""思考过程
        :rtype: str
        """
        return self._ThoughtContent

    @ThoughtContent.setter
    def ThoughtContent(self, ThoughtContent):
        self._ThoughtContent = ThoughtContent

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._Angle = params.get("Angle")
        if params.get("StructuralList") is not None:
            self._StructuralList = []
            for item in params.get("StructuralList"):
                obj = GroupInfo()
                obj._deserialize(item)
                self._StructuralList.append(obj)
        self._ErrorCode = params.get("ErrorCode")
        self._ErrorMessage = params.get("ErrorMessage")
        self._JobStatus = params.get("JobStatus")
        self._ThoughtContent = params.get("ThoughtContent")
        self._RequestId = params.get("RequestId")


class DescribeMarkEssayAgentJobRequest(AbstractModel):
    r"""DescribeMarkEssayAgentJob请求参数结构体

    """

    def __init__(self):
        r"""
        :param _JobId: 任务唯一ID。由服务端生成。
        :type JobId: str
        """
        self._JobId = None

    @property
    def JobId(self):
        r"""任务唯一ID。由服务端生成。
        :rtype: str
        """
        return self._JobId

    @JobId.setter
    def JobId(self, JobId):
        self._JobId = JobId


    def _deserialize(self, params):
        self._JobId = params.get("JobId")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeMarkEssayAgentJobResponse(AbstractModel):
    r"""DescribeMarkEssayAgentJob返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Angle: 图片旋转角度(角度制)，文本的水平方向为 0；顺时针为正，逆时针为负。
        :type Angle: float
        :param _SentenceSuggests: 配置结构化文本信息。
        :type SentenceSuggests: list of MarkEssaySuggestions
        :param _ErrorCode: 任务执行错误码。当任务状态不为 FAIL 时，该值为""。
        :type ErrorCode: str
        :param _ErrorMessage: 任务执行错误信息。当任务状态不为 FAIL 时，该值为""。
        :type ErrorMessage: str
        :param _JobStatus: 任务状态。WAIT：等待中，RUN：执行中，FAIL：任务失败，DONE：任务成功
        :type JobStatus: str
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Angle = None
        self._SentenceSuggests = None
        self._ErrorCode = None
        self._ErrorMessage = None
        self._JobStatus = None
        self._RequestId = None

    @property
    def Angle(self):
        r"""图片旋转角度(角度制)，文本的水平方向为 0；顺时针为正，逆时针为负。
        :rtype: float
        """
        return self._Angle

    @Angle.setter
    def Angle(self, Angle):
        self._Angle = Angle

    @property
    def SentenceSuggests(self):
        r"""配置结构化文本信息。
        :rtype: list of MarkEssaySuggestions
        """
        return self._SentenceSuggests

    @SentenceSuggests.setter
    def SentenceSuggests(self, SentenceSuggests):
        self._SentenceSuggests = SentenceSuggests

    @property
    def ErrorCode(self):
        r"""任务执行错误码。当任务状态不为 FAIL 时，该值为""。
        :rtype: str
        """
        return self._ErrorCode

    @ErrorCode.setter
    def ErrorCode(self, ErrorCode):
        self._ErrorCode = ErrorCode

    @property
    def ErrorMessage(self):
        r"""任务执行错误信息。当任务状态不为 FAIL 时，该值为""。
        :rtype: str
        """
        return self._ErrorMessage

    @ErrorMessage.setter
    def ErrorMessage(self, ErrorMessage):
        self._ErrorMessage = ErrorMessage

    @property
    def JobStatus(self):
        r"""任务状态。WAIT：等待中，RUN：执行中，FAIL：任务失败，DONE：任务成功
        :rtype: str
        """
        return self._JobStatus

    @JobStatus.setter
    def JobStatus(self, JobStatus):
        self._JobStatus = JobStatus

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._Angle = params.get("Angle")
        if params.get("SentenceSuggests") is not None:
            self._SentenceSuggests = []
            for item in params.get("SentenceSuggests"):
                obj = MarkEssaySuggestions()
                obj._deserialize(item)
                self._SentenceSuggests.append(obj)
        self._ErrorCode = params.get("ErrorCode")
        self._ErrorMessage = params.get("ErrorMessage")
        self._JobStatus = params.get("JobStatus")
        self._RequestId = params.get("RequestId")


class DescribeQuestionMarkAgentJobRequest(AbstractModel):
    r"""DescribeQuestionMarkAgentJob请求参数结构体

    """

    def __init__(self):
        r"""
        :param _JobId: 任务唯一ID。由服务端生成。	
        :type JobId: str
        """
        self._JobId = None

    @property
    def JobId(self):
        r"""任务唯一ID。由服务端生成。	
        :rtype: str
        """
        return self._JobId

    @JobId.setter
    def JobId(self, JobId):
        self._JobId = JobId


    def _deserialize(self, params):
        self._JobId = params.get("JobId")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeQuestionMarkAgentJobResponse(AbstractModel):
    r"""DescribeQuestionMarkAgentJob返回参数结构体

    """

    def __init__(self):
        r"""
        :param _ErrorCode: 任务执行错误码。当任务状态不为 FAIL 时，该值为""。
        :type ErrorCode: str
        :param _ErrorMessage: 任务执行错误信息。当任务状态不为 FAIL 时，该值为""。
        :type ErrorMessage: str
        :param _JobStatus: 任务状态。WAIT：等待中，RUN：执行中，FAIL：任务失败，DONE：任务成功
        :type JobStatus: str
        :param _Angle: 图片旋转角度(角度制)，文本的水平方向为 0；顺时针为正，逆时针为负。
        :type Angle: float
        :param _MarkInfos: 试题批改信息
        :type MarkInfos: list of MarkInfo
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._ErrorCode = None
        self._ErrorMessage = None
        self._JobStatus = None
        self._Angle = None
        self._MarkInfos = None
        self._RequestId = None

    @property
    def ErrorCode(self):
        r"""任务执行错误码。当任务状态不为 FAIL 时，该值为""。
        :rtype: str
        """
        return self._ErrorCode

    @ErrorCode.setter
    def ErrorCode(self, ErrorCode):
        self._ErrorCode = ErrorCode

    @property
    def ErrorMessage(self):
        r"""任务执行错误信息。当任务状态不为 FAIL 时，该值为""。
        :rtype: str
        """
        return self._ErrorMessage

    @ErrorMessage.setter
    def ErrorMessage(self, ErrorMessage):
        self._ErrorMessage = ErrorMessage

    @property
    def JobStatus(self):
        r"""任务状态。WAIT：等待中，RUN：执行中，FAIL：任务失败，DONE：任务成功
        :rtype: str
        """
        return self._JobStatus

    @JobStatus.setter
    def JobStatus(self, JobStatus):
        self._JobStatus = JobStatus

    @property
    def Angle(self):
        r"""图片旋转角度(角度制)，文本的水平方向为 0；顺时针为正，逆时针为负。
        :rtype: float
        """
        return self._Angle

    @Angle.setter
    def Angle(self, Angle):
        self._Angle = Angle

    @property
    def MarkInfos(self):
        r"""试题批改信息
        :rtype: list of MarkInfo
        """
        return self._MarkInfos

    @MarkInfos.setter
    def MarkInfos(self, MarkInfos):
        self._MarkInfos = MarkInfos

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._ErrorCode = params.get("ErrorCode")
        self._ErrorMessage = params.get("ErrorMessage")
        self._JobStatus = params.get("JobStatus")
        self._Angle = params.get("Angle")
        if params.get("MarkInfos") is not None:
            self._MarkInfos = []
            for item in params.get("MarkInfos"):
                obj = MarkInfo()
                obj._deserialize(item)
                self._MarkInfos.append(obj)
        self._RequestId = params.get("RequestId")


class DetailInformationOfAirTicketTupleList(AbstractModel):
    r"""机票详细信息元组

    """

    def __init__(self):
        r"""
        :param _DepartureStation: 出发站（自）
        :type DepartureStation: str
        :param _DestinationStation: 目的地（至）
        :type DestinationStation: str
        :param _FlightSegment: 航班
        :type FlightSegment: str
        :param _Carrier: 航班
        :type Carrier: str
        :param _Flight: 航班号
        :type Flight: str
        :param _SeatClass: 座位等级
        :type SeatClass: str
        :param _CarrierDate: 日期
        :type CarrierDate: str
        :param _DepartureTime: 时间
        :type DepartureTime: str
        :param _FareBasis: 客票级别/客票类别
        :type FareBasis: str
        :param _EffectiveDate: 客票生效日期
        :type EffectiveDate: str
        :param _ExpirationDate: 有效截止日期
        :type ExpirationDate: str
        :param _FreeBaggageAllowance: 免费行李
        :type FreeBaggageAllowance: str
        """
        self._DepartureStation = None
        self._DestinationStation = None
        self._FlightSegment = None
        self._Carrier = None
        self._Flight = None
        self._SeatClass = None
        self._CarrierDate = None
        self._DepartureTime = None
        self._FareBasis = None
        self._EffectiveDate = None
        self._ExpirationDate = None
        self._FreeBaggageAllowance = None

    @property
    def DepartureStation(self):
        r"""出发站（自）
        :rtype: str
        """
        return self._DepartureStation

    @DepartureStation.setter
    def DepartureStation(self, DepartureStation):
        self._DepartureStation = DepartureStation

    @property
    def DestinationStation(self):
        r"""目的地（至）
        :rtype: str
        """
        return self._DestinationStation

    @DestinationStation.setter
    def DestinationStation(self, DestinationStation):
        self._DestinationStation = DestinationStation

    @property
    def FlightSegment(self):
        r"""航班
        :rtype: str
        """
        return self._FlightSegment

    @FlightSegment.setter
    def FlightSegment(self, FlightSegment):
        self._FlightSegment = FlightSegment

    @property
    def Carrier(self):
        r"""航班
        :rtype: str
        """
        return self._Carrier

    @Carrier.setter
    def Carrier(self, Carrier):
        self._Carrier = Carrier

    @property
    def Flight(self):
        r"""航班号
        :rtype: str
        """
        return self._Flight

    @Flight.setter
    def Flight(self, Flight):
        self._Flight = Flight

    @property
    def SeatClass(self):
        r"""座位等级
        :rtype: str
        """
        return self._SeatClass

    @SeatClass.setter
    def SeatClass(self, SeatClass):
        self._SeatClass = SeatClass

    @property
    def CarrierDate(self):
        r"""日期
        :rtype: str
        """
        return self._CarrierDate

    @CarrierDate.setter
    def CarrierDate(self, CarrierDate):
        self._CarrierDate = CarrierDate

    @property
    def DepartureTime(self):
        r"""时间
        :rtype: str
        """
        return self._DepartureTime

    @DepartureTime.setter
    def DepartureTime(self, DepartureTime):
        self._DepartureTime = DepartureTime

    @property
    def FareBasis(self):
        r"""客票级别/客票类别
        :rtype: str
        """
        return self._FareBasis

    @FareBasis.setter
    def FareBasis(self, FareBasis):
        self._FareBasis = FareBasis

    @property
    def EffectiveDate(self):
        r"""客票生效日期
        :rtype: str
        """
        return self._EffectiveDate

    @EffectiveDate.setter
    def EffectiveDate(self, EffectiveDate):
        self._EffectiveDate = EffectiveDate

    @property
    def ExpirationDate(self):
        r"""有效截止日期
        :rtype: str
        """
        return self._ExpirationDate

    @ExpirationDate.setter
    def ExpirationDate(self, ExpirationDate):
        self._ExpirationDate = ExpirationDate

    @property
    def FreeBaggageAllowance(self):
        r"""免费行李
        :rtype: str
        """
        return self._FreeBaggageAllowance

    @FreeBaggageAllowance.setter
    def FreeBaggageAllowance(self, FreeBaggageAllowance):
        self._FreeBaggageAllowance = FreeBaggageAllowance


    def _deserialize(self, params):
        self._DepartureStation = params.get("DepartureStation")
        self._DestinationStation = params.get("DestinationStation")
        self._FlightSegment = params.get("FlightSegment")
        self._Carrier = params.get("Carrier")
        self._Flight = params.get("Flight")
        self._SeatClass = params.get("SeatClass")
        self._CarrierDate = params.get("CarrierDate")
        self._DepartureTime = params.get("DepartureTime")
        self._FareBasis = params.get("FareBasis")
        self._EffectiveDate = params.get("EffectiveDate")
        self._ExpirationDate = params.get("ExpirationDate")
        self._FreeBaggageAllowance = params.get("FreeBaggageAllowance")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DetectedWordCoordPoint(AbstractModel):
    r"""单字在原图中的坐标，以四个顶点坐标表示，以左上角为起点，顺时针返回。

    """

    def __init__(self):
        r"""
        :param _WordCoordinate: 单字在原图中的坐标，以四个顶点坐标表示，以左上角为起点，顺时针返回。
        :type WordCoordinate: list of Coord
        """
        self._WordCoordinate = None

    @property
    def WordCoordinate(self):
        r"""单字在原图中的坐标，以四个顶点坐标表示，以左上角为起点，顺时针返回。
        :rtype: list of Coord
        """
        return self._WordCoordinate

    @WordCoordinate.setter
    def WordCoordinate(self, WordCoordinate):
        self._WordCoordinate = WordCoordinate


    def _deserialize(self, params):
        if params.get("WordCoordinate") is not None:
            self._WordCoordinate = []
            for item in params.get("WordCoordinate"):
                obj = Coord()
                obj._deserialize(item)
                self._WordCoordinate.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DetectedWords(AbstractModel):
    r"""识别出来的单字信息包括单字（包括单字Character和单字置信度confidence）

    """

    def __init__(self):
        r"""
        :param _Confidence: <p>置信度 0 ~100。</p>
        :type Confidence: int
        :param _Character: <p>候选字Character。</p>
        :type Character: str
        """
        self._Confidence = None
        self._Character = None

    @property
    def Confidence(self):
        r"""<p>置信度 0 ~100。</p>
        :rtype: int
        """
        return self._Confidence

    @Confidence.setter
    def Confidence(self, Confidence):
        self._Confidence = Confidence

    @property
    def Character(self):
        r"""<p>候选字Character。</p>
        :rtype: str
        """
        return self._Character

    @Character.setter
    def Character(self, Character):
        self._Character = Character


    def _deserialize(self, params):
        self._Confidence = params.get("Confidence")
        self._Character = params.get("Character")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DriverLicenseOCRRequest(AbstractModel):
    r"""DriverLicenseOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。图片下载时间不超过 3 秒。建议图片存储于腾讯云，可保障更高的下载速度和稳定性。
        :type ImageUrl: str
        :param _CardSide: FRONT 为驾驶证主页正面（有红色印章的一面），
BACK 为驾驶证副页正面（有档案编号的一面）。
DOUBLE 支持自动识别驾驶证正副页单面，和正副双面同框识别
默认值为：FRONT。
        :type CardSide: str
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._CardSide = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。图片下载时间不超过 3 秒。建议图片存储于腾讯云，可保障更高的下载速度和稳定性。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def CardSide(self):
        r"""FRONT 为驾驶证主页正面（有红色印章的一面），
BACK 为驾驶证副页正面（有档案编号的一面）。
DOUBLE 支持自动识别驾驶证正副页单面，和正副双面同框识别
默认值为：FRONT。
        :rtype: str
        """
        return self._CardSide

    @CardSide.setter
    def CardSide(self, CardSide):
        self._CardSide = CardSide


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._CardSide = params.get("CardSide")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DriverLicenseOCRResponse(AbstractModel):
    r"""DriverLicenseOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Name: 驾驶证正页姓名
        :type Name: str
        :param _Sex: 性别
        :type Sex: str
        :param _Nationality: 国籍
        :type Nationality: str
        :param _Address: 住址
        :type Address: str
        :param _DateOfBirth: 出生日期（YYYY-MM-DD）
        :type DateOfBirth: str
        :param _DateOfFirstIssue: 初次领证日期（YYYY-MM-DD）
        :type DateOfFirstIssue: str
        :param _Class: 准驾车型
        :type Class: str
        :param _StartDate: 有效期开始时间（YYYY-MM-DD）
        :type StartDate: str
        :param _EndDate: 有效期截止时间（新版驾驶证返回 YYYY-MM-DD，
老版驾驶证返回有效期限 X年）
        :type EndDate: str
        :param _CardCode: 驾驶证正页证号
        :type CardCode: str
        :param _ArchivesCode: 档案编号
        :type ArchivesCode: str
        :param _Record: 记录
        :type Record: str
        :param _RecognizeWarnCode: Code 告警码列表和释义：
-9102  复印件告警
-9103  翻拍件告警
-9104  反光告警
-9105  模糊告警
-9106  边框不完整告警
注：告警码可以同时存在多个
        :type RecognizeWarnCode: list of int
        :param _RecognizeWarnMsg: 告警码说明：
WARN_DRIVER_LICENSE_COPY_CARD 复印件告警
WARN_DRIVER_LICENSE_SCREENED_CARD 翻拍件告警
WARN_DRIVER_LICENSE_REFLECTION 反光告警
WARN_DRIVER_LICENSE_BLUR 模糊告警
WARN_DRIVER_LICENSE_BORDER_INCOMPLETE 边框不完整告警
注：告警信息可以同时存在多个
        :type RecognizeWarnMsg: list of str
        :param _IssuingAuthority: 发证单位
        :type IssuingAuthority: str
        :param _State: 状态（仅电子驾驶证支持返回该字段）
        :type State: str
        :param _CumulativeScore: 累积记分（仅电子驾驶证支持返回该字段）
        :type CumulativeScore: str
        :param _CurrentTime: 当前时间（仅电子驾驶证支持返回该字段）
        :type CurrentTime: str
        :param _GenerateTime: 生成时间（仅电子驾驶证支持返回该字段）
        :type GenerateTime: str
        :param _BackPageName: 驾驶证副页姓名
        :type BackPageName: str
        :param _BackPageCardCode: 驾驶证副页证号
        :type BackPageCardCode: str
        :param _DriverLicenseType: 驾驶证类型
电子驾驶证：Electronic
普通驾驶证：Normal
        :type DriverLicenseType: str
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Name = None
        self._Sex = None
        self._Nationality = None
        self._Address = None
        self._DateOfBirth = None
        self._DateOfFirstIssue = None
        self._Class = None
        self._StartDate = None
        self._EndDate = None
        self._CardCode = None
        self._ArchivesCode = None
        self._Record = None
        self._RecognizeWarnCode = None
        self._RecognizeWarnMsg = None
        self._IssuingAuthority = None
        self._State = None
        self._CumulativeScore = None
        self._CurrentTime = None
        self._GenerateTime = None
        self._BackPageName = None
        self._BackPageCardCode = None
        self._DriverLicenseType = None
        self._RequestId = None

    @property
    def Name(self):
        r"""驾驶证正页姓名
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Sex(self):
        r"""性别
        :rtype: str
        """
        return self._Sex

    @Sex.setter
    def Sex(self, Sex):
        self._Sex = Sex

    @property
    def Nationality(self):
        r"""国籍
        :rtype: str
        """
        return self._Nationality

    @Nationality.setter
    def Nationality(self, Nationality):
        self._Nationality = Nationality

    @property
    def Address(self):
        r"""住址
        :rtype: str
        """
        return self._Address

    @Address.setter
    def Address(self, Address):
        self._Address = Address

    @property
    def DateOfBirth(self):
        r"""出生日期（YYYY-MM-DD）
        :rtype: str
        """
        return self._DateOfBirth

    @DateOfBirth.setter
    def DateOfBirth(self, DateOfBirth):
        self._DateOfBirth = DateOfBirth

    @property
    def DateOfFirstIssue(self):
        r"""初次领证日期（YYYY-MM-DD）
        :rtype: str
        """
        return self._DateOfFirstIssue

    @DateOfFirstIssue.setter
    def DateOfFirstIssue(self, DateOfFirstIssue):
        self._DateOfFirstIssue = DateOfFirstIssue

    @property
    def Class(self):
        r"""准驾车型
        :rtype: str
        """
        return self._Class

    @Class.setter
    def Class(self, Class):
        self._Class = Class

    @property
    def StartDate(self):
        r"""有效期开始时间（YYYY-MM-DD）
        :rtype: str
        """
        return self._StartDate

    @StartDate.setter
    def StartDate(self, StartDate):
        self._StartDate = StartDate

    @property
    def EndDate(self):
        r"""有效期截止时间（新版驾驶证返回 YYYY-MM-DD，
老版驾驶证返回有效期限 X年）
        :rtype: str
        """
        return self._EndDate

    @EndDate.setter
    def EndDate(self, EndDate):
        self._EndDate = EndDate

    @property
    def CardCode(self):
        r"""驾驶证正页证号
        :rtype: str
        """
        return self._CardCode

    @CardCode.setter
    def CardCode(self, CardCode):
        self._CardCode = CardCode

    @property
    def ArchivesCode(self):
        r"""档案编号
        :rtype: str
        """
        return self._ArchivesCode

    @ArchivesCode.setter
    def ArchivesCode(self, ArchivesCode):
        self._ArchivesCode = ArchivesCode

    @property
    def Record(self):
        r"""记录
        :rtype: str
        """
        return self._Record

    @Record.setter
    def Record(self, Record):
        self._Record = Record

    @property
    def RecognizeWarnCode(self):
        r"""Code 告警码列表和释义：
-9102  复印件告警
-9103  翻拍件告警
-9104  反光告警
-9105  模糊告警
-9106  边框不完整告警
注：告警码可以同时存在多个
        :rtype: list of int
        """
        return self._RecognizeWarnCode

    @RecognizeWarnCode.setter
    def RecognizeWarnCode(self, RecognizeWarnCode):
        self._RecognizeWarnCode = RecognizeWarnCode

    @property
    def RecognizeWarnMsg(self):
        r"""告警码说明：
WARN_DRIVER_LICENSE_COPY_CARD 复印件告警
WARN_DRIVER_LICENSE_SCREENED_CARD 翻拍件告警
WARN_DRIVER_LICENSE_REFLECTION 反光告警
WARN_DRIVER_LICENSE_BLUR 模糊告警
WARN_DRIVER_LICENSE_BORDER_INCOMPLETE 边框不完整告警
注：告警信息可以同时存在多个
        :rtype: list of str
        """
        return self._RecognizeWarnMsg

    @RecognizeWarnMsg.setter
    def RecognizeWarnMsg(self, RecognizeWarnMsg):
        self._RecognizeWarnMsg = RecognizeWarnMsg

    @property
    def IssuingAuthority(self):
        r"""发证单位
        :rtype: str
        """
        return self._IssuingAuthority

    @IssuingAuthority.setter
    def IssuingAuthority(self, IssuingAuthority):
        self._IssuingAuthority = IssuingAuthority

    @property
    def State(self):
        r"""状态（仅电子驾驶证支持返回该字段）
        :rtype: str
        """
        return self._State

    @State.setter
    def State(self, State):
        self._State = State

    @property
    def CumulativeScore(self):
        r"""累积记分（仅电子驾驶证支持返回该字段）
        :rtype: str
        """
        return self._CumulativeScore

    @CumulativeScore.setter
    def CumulativeScore(self, CumulativeScore):
        self._CumulativeScore = CumulativeScore

    @property
    def CurrentTime(self):
        r"""当前时间（仅电子驾驶证支持返回该字段）
        :rtype: str
        """
        return self._CurrentTime

    @CurrentTime.setter
    def CurrentTime(self, CurrentTime):
        self._CurrentTime = CurrentTime

    @property
    def GenerateTime(self):
        r"""生成时间（仅电子驾驶证支持返回该字段）
        :rtype: str
        """
        return self._GenerateTime

    @GenerateTime.setter
    def GenerateTime(self, GenerateTime):
        self._GenerateTime = GenerateTime

    @property
    def BackPageName(self):
        r"""驾驶证副页姓名
        :rtype: str
        """
        return self._BackPageName

    @BackPageName.setter
    def BackPageName(self, BackPageName):
        self._BackPageName = BackPageName

    @property
    def BackPageCardCode(self):
        r"""驾驶证副页证号
        :rtype: str
        """
        return self._BackPageCardCode

    @BackPageCardCode.setter
    def BackPageCardCode(self, BackPageCardCode):
        self._BackPageCardCode = BackPageCardCode

    @property
    def DriverLicenseType(self):
        r"""驾驶证类型
电子驾驶证：Electronic
普通驾驶证：Normal
        :rtype: str
        """
        return self._DriverLicenseType

    @DriverLicenseType.setter
    def DriverLicenseType(self, DriverLicenseType):
        self._DriverLicenseType = DriverLicenseType

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._Name = params.get("Name")
        self._Sex = params.get("Sex")
        self._Nationality = params.get("Nationality")
        self._Address = params.get("Address")
        self._DateOfBirth = params.get("DateOfBirth")
        self._DateOfFirstIssue = params.get("DateOfFirstIssue")
        self._Class = params.get("Class")
        self._StartDate = params.get("StartDate")
        self._EndDate = params.get("EndDate")
        self._CardCode = params.get("CardCode")
        self._ArchivesCode = params.get("ArchivesCode")
        self._Record = params.get("Record")
        self._RecognizeWarnCode = params.get("RecognizeWarnCode")
        self._RecognizeWarnMsg = params.get("RecognizeWarnMsg")
        self._IssuingAuthority = params.get("IssuingAuthority")
        self._State = params.get("State")
        self._CumulativeScore = params.get("CumulativeScore")
        self._CurrentTime = params.get("CurrentTime")
        self._GenerateTime = params.get("GenerateTime")
        self._BackPageName = params.get("BackPageName")
        self._BackPageCardCode = params.get("BackPageCardCode")
        self._DriverLicenseType = params.get("DriverLicenseType")
        self._RequestId = params.get("RequestId")


class EduPaperOCRRequest(AbstractModel):
    r"""EduPaperOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经Base64编码后不超过 7M。图片下载时间不超过 3 秒。
图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经 Base64 编码后不超过 7M。图片下载时间不超过 3 秒。
图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。
非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        :param _Config: 扩展配置信息。
配置格式：{"option1":value1,"option2":value2}
1. task_type：任务类型【0: 关闭版式分析与处理 1: 开启版式分析处理】可选参数，Int32类型，默认值为1
2. is_structuralization：是否结构化输出【true：返回包体同时返回通用和结构化输出  false：返回包体返回通用输出】 可选参数，Bool类型，默认值为true
3. if_readable_format：是否按照版式整合通用文本/公式输出结果 可选参数，Bool类型，默认值为false
示例：
{"task_type": 1,"is_structuralization": true,"if_readable_format": true}
        :type Config: str
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._Config = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经Base64编码后不超过 7M。图片下载时间不超过 3 秒。
图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经 Base64 编码后不超过 7M。图片下载时间不超过 3 秒。
图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。
非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def Config(self):
        r"""扩展配置信息。
配置格式：{"option1":value1,"option2":value2}
1. task_type：任务类型【0: 关闭版式分析与处理 1: 开启版式分析处理】可选参数，Int32类型，默认值为1
2. is_structuralization：是否结构化输出【true：返回包体同时返回通用和结构化输出  false：返回包体返回通用输出】 可选参数，Bool类型，默认值为true
3. if_readable_format：是否按照版式整合通用文本/公式输出结果 可选参数，Bool类型，默认值为false
示例：
{"task_type": 1,"is_structuralization": true,"if_readable_format": true}
        :rtype: str
        """
        return self._Config

    @Config.setter
    def Config(self, Config):
        self._Config = Config


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._Config = params.get("Config")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class EduPaperOCRResponse(AbstractModel):
    r"""EduPaperOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _EduPaperInfos: 检测到的文本信息，具体内容请点击左侧链接。
        :type EduPaperInfos: list of TextEduPaper
        :param _Angle: 图片旋转角度（角度制），文本的水平方向为0°；顺时针为正，逆时针为负。
        :type Angle: int
        :param _QuestionBlockInfos: 结构化方式输出，具体内容请点击左侧链接。
        :type QuestionBlockInfos: list of QuestionBlockObj
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._EduPaperInfos = None
        self._Angle = None
        self._QuestionBlockInfos = None
        self._RequestId = None

    @property
    def EduPaperInfos(self):
        r"""检测到的文本信息，具体内容请点击左侧链接。
        :rtype: list of TextEduPaper
        """
        return self._EduPaperInfos

    @EduPaperInfos.setter
    def EduPaperInfos(self, EduPaperInfos):
        self._EduPaperInfos = EduPaperInfos

    @property
    def Angle(self):
        r"""图片旋转角度（角度制），文本的水平方向为0°；顺时针为正，逆时针为负。
        :rtype: int
        """
        return self._Angle

    @Angle.setter
    def Angle(self, Angle):
        self._Angle = Angle

    @property
    def QuestionBlockInfos(self):
        r"""结构化方式输出，具体内容请点击左侧链接。
        :rtype: list of QuestionBlockObj
        """
        return self._QuestionBlockInfos

    @QuestionBlockInfos.setter
    def QuestionBlockInfos(self, QuestionBlockInfos):
        self._QuestionBlockInfos = QuestionBlockInfos

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("EduPaperInfos") is not None:
            self._EduPaperInfos = []
            for item in params.get("EduPaperInfos"):
                obj = TextEduPaper()
                obj._deserialize(item)
                self._EduPaperInfos.append(obj)
        self._Angle = params.get("Angle")
        if params.get("QuestionBlockInfos") is not None:
            self._QuestionBlockInfos = []
            for item in params.get("QuestionBlockInfos"):
                obj = QuestionBlockObj()
                obj._deserialize(item)
                self._QuestionBlockInfos.append(obj)
        self._RequestId = params.get("RequestId")


class ElectronicAirTransport(AbstractModel):
    r"""全电发票（航空运输电子客票行程单）

    """

    def __init__(self):
        r"""
        :param _Code: 发票代码
注意：此字段可能返回 null，表示取不到有效值。
        :type Code: str
        :param _Number: 发票号码
注意：此字段可能返回 null，表示取不到有效值。
        :type Number: str
        :param _Date: 开票日期
注意：此字段可能返回 null，表示取不到有效值。
        :type Date: str
        :param _Amount: 金额
注意：此字段可能返回 null，表示取不到有效值。
        :type Amount: str
        :param _CheckCode: 校验码
注意：此字段可能返回 null，表示取不到有效值。
        :type CheckCode: str
        :param _Total: 价税合计
注意：此字段可能返回 null，表示取不到有效值。
        :type Total: str
        :param _DeductionMark: 抵扣标志
注意：此字段可能返回 null，表示取不到有效值。
        :type DeductionMark: str
        :param _StateCode: 发票状态代码，0正常 1 未更新  2作废 3已红冲
注意：此字段可能返回 null，表示取不到有效值。
        :type StateCode: str
        :param _BuyerTaxCode: 购方识别号
注意：此字段可能返回 null，表示取不到有效值。
        :type BuyerTaxCode: str
        :param _BuyerName: 购方名称
注意：此字段可能返回 null，表示取不到有效值。
        :type BuyerName: str
        :param _Tax: 合计税额
注意：此字段可能返回 null，表示取不到有效值。
        :type Tax: str
        :param _DomesticInternationalMark: 国内国际标识
注意：此字段可能返回 null，表示取不到有效值。
        :type DomesticInternationalMark: str
        :param _PassengerName: 旅客姓名
注意：此字段可能返回 null，表示取不到有效值。
        :type PassengerName: str
        :param _PassengerNo: 有效身份证件号码
注意：此字段可能返回 null，表示取不到有效值。
        :type PassengerNo: str
        :param _ElectronicNumber: 电子客票号码
注意：此字段可能返回 null，表示取不到有效值。
        :type ElectronicNumber: str
        :param _ElectronicAirTransportDetails: 全电发票（航空运输电子客票行程单）详细信息


注意：此字段可能返回 null，表示取不到有效值。
        :type ElectronicAirTransportDetails: list of ElectronicAirTransportDetail
        :param _Fare: 票价
        :type Fare: str
        :param _FuelSurcharge: 燃油附加费
        :type FuelSurcharge: str
        :param _TaxAmount: 增值税税额
        :type TaxAmount: str
        :param _DevelopmentFund: 民航发展基金
        :type DevelopmentFund: str
        """
        self._Code = None
        self._Number = None
        self._Date = None
        self._Amount = None
        self._CheckCode = None
        self._Total = None
        self._DeductionMark = None
        self._StateCode = None
        self._BuyerTaxCode = None
        self._BuyerName = None
        self._Tax = None
        self._DomesticInternationalMark = None
        self._PassengerName = None
        self._PassengerNo = None
        self._ElectronicNumber = None
        self._ElectronicAirTransportDetails = None
        self._Fare = None
        self._FuelSurcharge = None
        self._TaxAmount = None
        self._DevelopmentFund = None

    @property
    def Code(self):
        r"""发票代码
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Code

    @Code.setter
    def Code(self, Code):
        self._Code = Code

    @property
    def Number(self):
        r"""发票号码
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Number

    @Number.setter
    def Number(self, Number):
        self._Number = Number

    @property
    def Date(self):
        r"""开票日期
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Date

    @Date.setter
    def Date(self, Date):
        self._Date = Date

    @property
    def Amount(self):
        r"""金额
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Amount

    @Amount.setter
    def Amount(self, Amount):
        self._Amount = Amount

    @property
    def CheckCode(self):
        r"""校验码
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._CheckCode

    @CheckCode.setter
    def CheckCode(self, CheckCode):
        self._CheckCode = CheckCode

    @property
    def Total(self):
        r"""价税合计
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Total

    @Total.setter
    def Total(self, Total):
        self._Total = Total

    @property
    def DeductionMark(self):
        r"""抵扣标志
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._DeductionMark

    @DeductionMark.setter
    def DeductionMark(self, DeductionMark):
        self._DeductionMark = DeductionMark

    @property
    def StateCode(self):
        r"""发票状态代码，0正常 1 未更新  2作废 3已红冲
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._StateCode

    @StateCode.setter
    def StateCode(self, StateCode):
        self._StateCode = StateCode

    @property
    def BuyerTaxCode(self):
        r"""购方识别号
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._BuyerTaxCode

    @BuyerTaxCode.setter
    def BuyerTaxCode(self, BuyerTaxCode):
        self._BuyerTaxCode = BuyerTaxCode

    @property
    def BuyerName(self):
        r"""购方名称
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._BuyerName

    @BuyerName.setter
    def BuyerName(self, BuyerName):
        self._BuyerName = BuyerName

    @property
    def Tax(self):
        r"""合计税额
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Tax

    @Tax.setter
    def Tax(self, Tax):
        self._Tax = Tax

    @property
    def DomesticInternationalMark(self):
        r"""国内国际标识
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._DomesticInternationalMark

    @DomesticInternationalMark.setter
    def DomesticInternationalMark(self, DomesticInternationalMark):
        self._DomesticInternationalMark = DomesticInternationalMark

    @property
    def PassengerName(self):
        r"""旅客姓名
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._PassengerName

    @PassengerName.setter
    def PassengerName(self, PassengerName):
        self._PassengerName = PassengerName

    @property
    def PassengerNo(self):
        r"""有效身份证件号码
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._PassengerNo

    @PassengerNo.setter
    def PassengerNo(self, PassengerNo):
        self._PassengerNo = PassengerNo

    @property
    def ElectronicNumber(self):
        r"""电子客票号码
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._ElectronicNumber

    @ElectronicNumber.setter
    def ElectronicNumber(self, ElectronicNumber):
        self._ElectronicNumber = ElectronicNumber

    @property
    def ElectronicAirTransportDetails(self):
        r"""全电发票（航空运输电子客票行程单）详细信息


注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of ElectronicAirTransportDetail
        """
        return self._ElectronicAirTransportDetails

    @ElectronicAirTransportDetails.setter
    def ElectronicAirTransportDetails(self, ElectronicAirTransportDetails):
        self._ElectronicAirTransportDetails = ElectronicAirTransportDetails

    @property
    def Fare(self):
        r"""票价
        :rtype: str
        """
        return self._Fare

    @Fare.setter
    def Fare(self, Fare):
        self._Fare = Fare

    @property
    def FuelSurcharge(self):
        r"""燃油附加费
        :rtype: str
        """
        return self._FuelSurcharge

    @FuelSurcharge.setter
    def FuelSurcharge(self, FuelSurcharge):
        self._FuelSurcharge = FuelSurcharge

    @property
    def TaxAmount(self):
        r"""增值税税额
        :rtype: str
        """
        return self._TaxAmount

    @TaxAmount.setter
    def TaxAmount(self, TaxAmount):
        self._TaxAmount = TaxAmount

    @property
    def DevelopmentFund(self):
        r"""民航发展基金
        :rtype: str
        """
        return self._DevelopmentFund

    @DevelopmentFund.setter
    def DevelopmentFund(self, DevelopmentFund):
        self._DevelopmentFund = DevelopmentFund


    def _deserialize(self, params):
        self._Code = params.get("Code")
        self._Number = params.get("Number")
        self._Date = params.get("Date")
        self._Amount = params.get("Amount")
        self._CheckCode = params.get("CheckCode")
        self._Total = params.get("Total")
        self._DeductionMark = params.get("DeductionMark")
        self._StateCode = params.get("StateCode")
        self._BuyerTaxCode = params.get("BuyerTaxCode")
        self._BuyerName = params.get("BuyerName")
        self._Tax = params.get("Tax")
        self._DomesticInternationalMark = params.get("DomesticInternationalMark")
        self._PassengerName = params.get("PassengerName")
        self._PassengerNo = params.get("PassengerNo")
        self._ElectronicNumber = params.get("ElectronicNumber")
        if params.get("ElectronicAirTransportDetails") is not None:
            self._ElectronicAirTransportDetails = []
            for item in params.get("ElectronicAirTransportDetails"):
                obj = ElectronicAirTransportDetail()
                obj._deserialize(item)
                self._ElectronicAirTransportDetails.append(obj)
        self._Fare = params.get("Fare")
        self._FuelSurcharge = params.get("FuelSurcharge")
        self._TaxAmount = params.get("TaxAmount")
        self._DevelopmentFund = params.get("DevelopmentFund")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ElectronicAirTransportDetail(AbstractModel):
    r"""全电发票（航空运输电子客票行程单）详细信息

    """

    def __init__(self):
        r"""
        :param _FlightSegment: 航段序号
注意：此字段可能返回 null，表示取不到有效值。
        :type FlightSegment: str
        :param _StationGetOn: 始发站
注意：此字段可能返回 null，表示取不到有效值。
        :type StationGetOn: str
        :param _StationGetOff: 目的站
注意：此字段可能返回 null，表示取不到有效值。
        :type StationGetOff: str
        :param _Carrier: 承运人
注意：此字段可能返回 null，表示取不到有效值。
        :type Carrier: str
        :param _FlightNumber: 航班号
注意：此字段可能返回 null，表示取不到有效值。
        :type FlightNumber: str
        :param _SeatLevel: 座位等级
注意：此字段可能返回 null，表示取不到有效值。
        :type SeatLevel: str
        :param _FlightDate: 承运日期
注意：此字段可能返回 null，表示取不到有效值。
        :type FlightDate: str
        :param _DepartureTime: 起飞时间
注意：此字段可能返回 null，表示取不到有效值。
        :type DepartureTime: str
        :param _FareBasis: 客票级别/客票类别
注意：此字段可能返回 null，表示取不到有效值。
        :type FareBasis: str
        """
        self._FlightSegment = None
        self._StationGetOn = None
        self._StationGetOff = None
        self._Carrier = None
        self._FlightNumber = None
        self._SeatLevel = None
        self._FlightDate = None
        self._DepartureTime = None
        self._FareBasis = None

    @property
    def FlightSegment(self):
        r"""航段序号
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._FlightSegment

    @FlightSegment.setter
    def FlightSegment(self, FlightSegment):
        self._FlightSegment = FlightSegment

    @property
    def StationGetOn(self):
        r"""始发站
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._StationGetOn

    @StationGetOn.setter
    def StationGetOn(self, StationGetOn):
        self._StationGetOn = StationGetOn

    @property
    def StationGetOff(self):
        r"""目的站
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._StationGetOff

    @StationGetOff.setter
    def StationGetOff(self, StationGetOff):
        self._StationGetOff = StationGetOff

    @property
    def Carrier(self):
        r"""承运人
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Carrier

    @Carrier.setter
    def Carrier(self, Carrier):
        self._Carrier = Carrier

    @property
    def FlightNumber(self):
        r"""航班号
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._FlightNumber

    @FlightNumber.setter
    def FlightNumber(self, FlightNumber):
        self._FlightNumber = FlightNumber

    @property
    def SeatLevel(self):
        r"""座位等级
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._SeatLevel

    @SeatLevel.setter
    def SeatLevel(self, SeatLevel):
        self._SeatLevel = SeatLevel

    @property
    def FlightDate(self):
        r"""承运日期
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._FlightDate

    @FlightDate.setter
    def FlightDate(self, FlightDate):
        self._FlightDate = FlightDate

    @property
    def DepartureTime(self):
        r"""起飞时间
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._DepartureTime

    @DepartureTime.setter
    def DepartureTime(self, DepartureTime):
        self._DepartureTime = DepartureTime

    @property
    def FareBasis(self):
        r"""客票级别/客票类别
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._FareBasis

    @FareBasis.setter
    def FareBasis(self, FareBasis):
        self._FareBasis = FareBasis


    def _deserialize(self, params):
        self._FlightSegment = params.get("FlightSegment")
        self._StationGetOn = params.get("StationGetOn")
        self._StationGetOff = params.get("StationGetOff")
        self._Carrier = params.get("Carrier")
        self._FlightNumber = params.get("FlightNumber")
        self._SeatLevel = params.get("SeatLevel")
        self._FlightDate = params.get("FlightDate")
        self._DepartureTime = params.get("DepartureTime")
        self._FareBasis = params.get("FareBasis")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ElectronicFlightTicketFull(AbstractModel):
    r"""电子发票（机票行程单）

    """

    def __init__(self):
        r"""
        :param _UserName: 旅客姓名
        :type UserName: str
        :param _UserID: 有效身份证件号码
        :type UserID: str
        :param _Endorsement: 签注
        :type Endorsement: str
        :param _GPOrder: GP单号
        :type GPOrder: str
        :param _Number: 发票号码
        :type Number: str
        :param _Fare: 票价
        :type Fare: str
        :param _FuelSurcharge: 燃油附加费
        :type FuelSurcharge: str
        :param _TaxRate: 增值税税率
        :type TaxRate: str
        :param _Tax: 增值税税额
        :type Tax: str
        :param _DevelopmentFund: 民航发展基金
        :type DevelopmentFund: str
        :param _OtherTax: 其他税费
        :type OtherTax: str
        :param _Total: 合计
        :type Total: str
        :param _ElectronicTicketNum: 电子客票号码
        :type ElectronicTicketNum: str
        :param _VerificationCode: 验证码
        :type VerificationCode: str
        :param _PromptInformation: 提示信息
        :type PromptInformation: str
        :param _Insurance: 保险费
        :type Insurance: str
        :param _Issuer: 填开单位
        :type Issuer: str
        :param _Date: 填开时间
        :type Date: str
        :param _DomesticInternationalTag: 国内国际标识
        :type DomesticInternationalTag: str
        :param _Buyer: 购买方名称
        :type Buyer: str
        :param _Seller: 销售方名称
        :type Seller: str
        :param _BuyerTaxID: 统一社会信用代码
        :type BuyerTaxID: str
        :param _FlightItems: 机票详细信息元组
        :type FlightItems: list of FlightItemInfo
        :param _InvoiceStatus: 机票开具状态
        :type InvoiceStatus: str
        """
        self._UserName = None
        self._UserID = None
        self._Endorsement = None
        self._GPOrder = None
        self._Number = None
        self._Fare = None
        self._FuelSurcharge = None
        self._TaxRate = None
        self._Tax = None
        self._DevelopmentFund = None
        self._OtherTax = None
        self._Total = None
        self._ElectronicTicketNum = None
        self._VerificationCode = None
        self._PromptInformation = None
        self._Insurance = None
        self._Issuer = None
        self._Date = None
        self._DomesticInternationalTag = None
        self._Buyer = None
        self._Seller = None
        self._BuyerTaxID = None
        self._FlightItems = None
        self._InvoiceStatus = None

    @property
    def UserName(self):
        r"""旅客姓名
        :rtype: str
        """
        return self._UserName

    @UserName.setter
    def UserName(self, UserName):
        self._UserName = UserName

    @property
    def UserID(self):
        r"""有效身份证件号码
        :rtype: str
        """
        return self._UserID

    @UserID.setter
    def UserID(self, UserID):
        self._UserID = UserID

    @property
    def Endorsement(self):
        r"""签注
        :rtype: str
        """
        return self._Endorsement

    @Endorsement.setter
    def Endorsement(self, Endorsement):
        self._Endorsement = Endorsement

    @property
    def GPOrder(self):
        r"""GP单号
        :rtype: str
        """
        return self._GPOrder

    @GPOrder.setter
    def GPOrder(self, GPOrder):
        self._GPOrder = GPOrder

    @property
    def Number(self):
        r"""发票号码
        :rtype: str
        """
        return self._Number

    @Number.setter
    def Number(self, Number):
        self._Number = Number

    @property
    def Fare(self):
        r"""票价
        :rtype: str
        """
        return self._Fare

    @Fare.setter
    def Fare(self, Fare):
        self._Fare = Fare

    @property
    def FuelSurcharge(self):
        r"""燃油附加费
        :rtype: str
        """
        return self._FuelSurcharge

    @FuelSurcharge.setter
    def FuelSurcharge(self, FuelSurcharge):
        self._FuelSurcharge = FuelSurcharge

    @property
    def TaxRate(self):
        r"""增值税税率
        :rtype: str
        """
        return self._TaxRate

    @TaxRate.setter
    def TaxRate(self, TaxRate):
        self._TaxRate = TaxRate

    @property
    def Tax(self):
        r"""增值税税额
        :rtype: str
        """
        return self._Tax

    @Tax.setter
    def Tax(self, Tax):
        self._Tax = Tax

    @property
    def DevelopmentFund(self):
        r"""民航发展基金
        :rtype: str
        """
        return self._DevelopmentFund

    @DevelopmentFund.setter
    def DevelopmentFund(self, DevelopmentFund):
        self._DevelopmentFund = DevelopmentFund

    @property
    def OtherTax(self):
        r"""其他税费
        :rtype: str
        """
        return self._OtherTax

    @OtherTax.setter
    def OtherTax(self, OtherTax):
        self._OtherTax = OtherTax

    @property
    def Total(self):
        r"""合计
        :rtype: str
        """
        return self._Total

    @Total.setter
    def Total(self, Total):
        self._Total = Total

    @property
    def ElectronicTicketNum(self):
        r"""电子客票号码
        :rtype: str
        """
        return self._ElectronicTicketNum

    @ElectronicTicketNum.setter
    def ElectronicTicketNum(self, ElectronicTicketNum):
        self._ElectronicTicketNum = ElectronicTicketNum

    @property
    def VerificationCode(self):
        r"""验证码
        :rtype: str
        """
        return self._VerificationCode

    @VerificationCode.setter
    def VerificationCode(self, VerificationCode):
        self._VerificationCode = VerificationCode

    @property
    def PromptInformation(self):
        r"""提示信息
        :rtype: str
        """
        return self._PromptInformation

    @PromptInformation.setter
    def PromptInformation(self, PromptInformation):
        self._PromptInformation = PromptInformation

    @property
    def Insurance(self):
        r"""保险费
        :rtype: str
        """
        return self._Insurance

    @Insurance.setter
    def Insurance(self, Insurance):
        self._Insurance = Insurance

    @property
    def Issuer(self):
        r"""填开单位
        :rtype: str
        """
        return self._Issuer

    @Issuer.setter
    def Issuer(self, Issuer):
        self._Issuer = Issuer

    @property
    def Date(self):
        r"""填开时间
        :rtype: str
        """
        return self._Date

    @Date.setter
    def Date(self, Date):
        self._Date = Date

    @property
    def DomesticInternationalTag(self):
        r"""国内国际标识
        :rtype: str
        """
        return self._DomesticInternationalTag

    @DomesticInternationalTag.setter
    def DomesticInternationalTag(self, DomesticInternationalTag):
        self._DomesticInternationalTag = DomesticInternationalTag

    @property
    def Buyer(self):
        r"""购买方名称
        :rtype: str
        """
        return self._Buyer

    @Buyer.setter
    def Buyer(self, Buyer):
        self._Buyer = Buyer

    @property
    def Seller(self):
        r"""销售方名称
        :rtype: str
        """
        return self._Seller

    @Seller.setter
    def Seller(self, Seller):
        self._Seller = Seller

    @property
    def BuyerTaxID(self):
        r"""统一社会信用代码
        :rtype: str
        """
        return self._BuyerTaxID

    @BuyerTaxID.setter
    def BuyerTaxID(self, BuyerTaxID):
        self._BuyerTaxID = BuyerTaxID

    @property
    def FlightItems(self):
        r"""机票详细信息元组
        :rtype: list of FlightItemInfo
        """
        return self._FlightItems

    @FlightItems.setter
    def FlightItems(self, FlightItems):
        self._FlightItems = FlightItems

    @property
    def InvoiceStatus(self):
        r"""机票开具状态
        :rtype: str
        """
        return self._InvoiceStatus

    @InvoiceStatus.setter
    def InvoiceStatus(self, InvoiceStatus):
        self._InvoiceStatus = InvoiceStatus


    def _deserialize(self, params):
        self._UserName = params.get("UserName")
        self._UserID = params.get("UserID")
        self._Endorsement = params.get("Endorsement")
        self._GPOrder = params.get("GPOrder")
        self._Number = params.get("Number")
        self._Fare = params.get("Fare")
        self._FuelSurcharge = params.get("FuelSurcharge")
        self._TaxRate = params.get("TaxRate")
        self._Tax = params.get("Tax")
        self._DevelopmentFund = params.get("DevelopmentFund")
        self._OtherTax = params.get("OtherTax")
        self._Total = params.get("Total")
        self._ElectronicTicketNum = params.get("ElectronicTicketNum")
        self._VerificationCode = params.get("VerificationCode")
        self._PromptInformation = params.get("PromptInformation")
        self._Insurance = params.get("Insurance")
        self._Issuer = params.get("Issuer")
        self._Date = params.get("Date")
        self._DomesticInternationalTag = params.get("DomesticInternationalTag")
        self._Buyer = params.get("Buyer")
        self._Seller = params.get("Seller")
        self._BuyerTaxID = params.get("BuyerTaxID")
        if params.get("FlightItems") is not None:
            self._FlightItems = []
            for item in params.get("FlightItems"):
                obj = FlightItemInfo()
                obj._deserialize(item)
                self._FlightItems.append(obj)
        self._InvoiceStatus = params.get("InvoiceStatus")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ElectronicTollSummary(AbstractModel):
    r"""其他发票

    """

    def __init__(self):
        r"""
        :param _Title: 发票名称
        :type Title: str
        :param _Total: 金额
        :type Total: str
        :param _Items: 列表
        :type Items: list of ElectronicTollSummaryItem
        :param _TableItems: 表格
        :type TableItems: list of ElectronicTollSummaryList
        :param _Date: 发票日期
        :type Date: str
        """
        self._Title = None
        self._Total = None
        self._Items = None
        self._TableItems = None
        self._Date = None

    @property
    def Title(self):
        r"""发票名称
        :rtype: str
        """
        return self._Title

    @Title.setter
    def Title(self, Title):
        self._Title = Title

    @property
    def Total(self):
        r"""金额
        :rtype: str
        """
        return self._Total

    @Total.setter
    def Total(self, Total):
        self._Total = Total

    @property
    def Items(self):
        r"""列表
        :rtype: list of ElectronicTollSummaryItem
        """
        return self._Items

    @Items.setter
    def Items(self, Items):
        self._Items = Items

    @property
    def TableItems(self):
        r"""表格
        :rtype: list of ElectronicTollSummaryList
        """
        return self._TableItems

    @TableItems.setter
    def TableItems(self, TableItems):
        self._TableItems = TableItems

    @property
    def Date(self):
        r"""发票日期
        :rtype: str
        """
        return self._Date

    @Date.setter
    def Date(self, Date):
        self._Date = Date


    def _deserialize(self, params):
        self._Title = params.get("Title")
        self._Total = params.get("Total")
        if params.get("Items") is not None:
            self._Items = []
            for item in params.get("Items"):
                obj = ElectronicTollSummaryItem()
                obj._deserialize(item)
                self._Items.append(obj)
        if params.get("TableItems") is not None:
            self._TableItems = []
            for item in params.get("TableItems"):
                obj = ElectronicTollSummaryList()
                obj._deserialize(item)
                self._TableItems.append(obj)
        self._Date = params.get("Date")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ElectronicTollSummaryItem(AbstractModel):
    r"""ElectronicTollSummaryItem

    """

    def __init__(self):
        r"""
        :param _Name: 票面key值
        :type Name: str
        :param _Value: 票面value值
        :type Value: str
        :param _Row: 字段所在行，下标从0开始，非行字段或未能识别行号的返回-1
        :type Row: int
        """
        self._Name = None
        self._Value = None
        self._Row = None

    @property
    def Name(self):
        r"""票面key值
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Value(self):
        r"""票面value值
        :rtype: str
        """
        return self._Value

    @Value.setter
    def Value(self, Value):
        self._Value = Value

    @property
    def Row(self):
        r"""字段所在行，下标从0开始，非行字段或未能识别行号的返回-1
        :rtype: int
        """
        return self._Row

    @Row.setter
    def Row(self, Row):
        self._Row = Row


    def _deserialize(self, params):
        self._Name = params.get("Name")
        self._Value = params.get("Value")
        self._Row = params.get("Row")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ElectronicTollSummaryList(AbstractModel):
    r"""其他票Table

    """

    def __init__(self):
        r"""
        :param _Items: 列表
        :type Items: list of ElectronicTollSummaryItem
        """
        self._Items = None

    @property
    def Items(self):
        r"""列表
        :rtype: list of ElectronicTollSummaryItem
        """
        return self._Items

    @Items.setter
    def Items(self, Items):
        self._Items = Items


    def _deserialize(self, params):
        if params.get("Items") is not None:
            self._Items = []
            for item in params.get("Items"):
                obj = ElectronicTollSummaryItem()
                obj._deserialize(item)
                self._Items.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ElectronicTrainTicket(AbstractModel):
    r"""全电发票（铁路电子客票）

    """

    def __init__(self):
        r"""
        :param _BuyerName: 购方名称
注意：此字段可能返回 null，表示取不到有效值。
        :type BuyerName: str
        :param _BuyerTaxCode: 购方识别号
注意：此字段可能返回 null，表示取不到有效值。
        :type BuyerTaxCode: str
        :param _Number: 发票号码
注意：此字段可能返回 null，表示取不到有效值。
        :type Number: str
        :param _Date: 开票日期
注意：此字段可能返回 null，表示取不到有效值。
        :type Date: str
        :param _TotalCN: 价税合计（中文大写）
注意：此字段可能返回 null，表示取不到有效值。
        :type TotalCN: str
        :param _Tax: 税额
注意：此字段可能返回 null，表示取不到有效值。
        :type Tax: str
        :param _ServiceType: 业务类型，0：退票，1:售票
注意：此字段可能返回 null，表示取不到有效值。
        :type ServiceType: str
        :param _TimeGetOn: 出发时间
注意：此字段可能返回 null，表示取不到有效值。
        :type TimeGetOn: str
        :param _TrainNumber: 车次
注意：此字段可能返回 null，表示取不到有效值。
        :type TrainNumber: str
        :param _Code: 发票代码
注意：此字段可能返回 null，表示取不到有效值。
        :type Code: str
        :param _SeatType: 席别
注意：此字段可能返回 null，表示取不到有效值。
        :type SeatType: str
        :param _DateGetOn: 乘车日期
注意：此字段可能返回 null，表示取不到有效值。
        :type DateGetOn: str
        :param _TrainCabin: 车厢
注意：此字段可能返回 null，表示取不到有效值。
        :type TrainCabin: str
        :param _StationGetOn: 出发站
注意：此字段可能返回 null，表示取不到有效值。
        :type StationGetOn: str
        :param _ElectronicNumber: 电子客票号
注意：此字段可能返回 null，表示取不到有效值。
        :type ElectronicNumber: str
        :param _PassengerName: 姓名
注意：此字段可能返回 null，表示取不到有效值。
        :type PassengerName: str
        :param _PassengerNo: 证件号
注意：此字段可能返回 null，表示取不到有效值。
        :type PassengerNo: str
        :param _Amount: 金额
注意：此字段可能返回 null，表示取不到有效值。
        :type Amount: str
        :param _StationGetOff: 到达站
注意：此字段可能返回 null，表示取不到有效值。
        :type StationGetOff: str
        :param _TaxRate: 税率
注意：此字段可能返回 null，表示取不到有效值。
        :type TaxRate: str
        :param _Seat: 席位
注意：此字段可能返回 null，表示取不到有效值。
        :type Seat: str
        :param _Total: 价税合计
注意：此字段可能返回 null，表示取不到有效值。
        :type Total: str
        :param _CheckCode: 校验码
注意：此字段可能返回 null，表示取不到有效值。
        :type CheckCode: str
        :param _StateCode: 发票状态代码，0正常 1 未更新  2作废 3已红冲
注意：此字段可能返回 null，表示取不到有效值。
        :type StateCode: str
        """
        self._BuyerName = None
        self._BuyerTaxCode = None
        self._Number = None
        self._Date = None
        self._TotalCN = None
        self._Tax = None
        self._ServiceType = None
        self._TimeGetOn = None
        self._TrainNumber = None
        self._Code = None
        self._SeatType = None
        self._DateGetOn = None
        self._TrainCabin = None
        self._StationGetOn = None
        self._ElectronicNumber = None
        self._PassengerName = None
        self._PassengerNo = None
        self._Amount = None
        self._StationGetOff = None
        self._TaxRate = None
        self._Seat = None
        self._Total = None
        self._CheckCode = None
        self._StateCode = None

    @property
    def BuyerName(self):
        r"""购方名称
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._BuyerName

    @BuyerName.setter
    def BuyerName(self, BuyerName):
        self._BuyerName = BuyerName

    @property
    def BuyerTaxCode(self):
        r"""购方识别号
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._BuyerTaxCode

    @BuyerTaxCode.setter
    def BuyerTaxCode(self, BuyerTaxCode):
        self._BuyerTaxCode = BuyerTaxCode

    @property
    def Number(self):
        r"""发票号码
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Number

    @Number.setter
    def Number(self, Number):
        self._Number = Number

    @property
    def Date(self):
        r"""开票日期
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Date

    @Date.setter
    def Date(self, Date):
        self._Date = Date

    @property
    def TotalCN(self):
        r"""价税合计（中文大写）
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._TotalCN

    @TotalCN.setter
    def TotalCN(self, TotalCN):
        self._TotalCN = TotalCN

    @property
    def Tax(self):
        r"""税额
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Tax

    @Tax.setter
    def Tax(self, Tax):
        self._Tax = Tax

    @property
    def ServiceType(self):
        r"""业务类型，0：退票，1:售票
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._ServiceType

    @ServiceType.setter
    def ServiceType(self, ServiceType):
        self._ServiceType = ServiceType

    @property
    def TimeGetOn(self):
        r"""出发时间
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._TimeGetOn

    @TimeGetOn.setter
    def TimeGetOn(self, TimeGetOn):
        self._TimeGetOn = TimeGetOn

    @property
    def TrainNumber(self):
        r"""车次
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._TrainNumber

    @TrainNumber.setter
    def TrainNumber(self, TrainNumber):
        self._TrainNumber = TrainNumber

    @property
    def Code(self):
        r"""发票代码
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Code

    @Code.setter
    def Code(self, Code):
        self._Code = Code

    @property
    def SeatType(self):
        r"""席别
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._SeatType

    @SeatType.setter
    def SeatType(self, SeatType):
        self._SeatType = SeatType

    @property
    def DateGetOn(self):
        r"""乘车日期
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._DateGetOn

    @DateGetOn.setter
    def DateGetOn(self, DateGetOn):
        self._DateGetOn = DateGetOn

    @property
    def TrainCabin(self):
        r"""车厢
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._TrainCabin

    @TrainCabin.setter
    def TrainCabin(self, TrainCabin):
        self._TrainCabin = TrainCabin

    @property
    def StationGetOn(self):
        r"""出发站
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._StationGetOn

    @StationGetOn.setter
    def StationGetOn(self, StationGetOn):
        self._StationGetOn = StationGetOn

    @property
    def ElectronicNumber(self):
        r"""电子客票号
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._ElectronicNumber

    @ElectronicNumber.setter
    def ElectronicNumber(self, ElectronicNumber):
        self._ElectronicNumber = ElectronicNumber

    @property
    def PassengerName(self):
        r"""姓名
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._PassengerName

    @PassengerName.setter
    def PassengerName(self, PassengerName):
        self._PassengerName = PassengerName

    @property
    def PassengerNo(self):
        r"""证件号
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._PassengerNo

    @PassengerNo.setter
    def PassengerNo(self, PassengerNo):
        self._PassengerNo = PassengerNo

    @property
    def Amount(self):
        r"""金额
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Amount

    @Amount.setter
    def Amount(self, Amount):
        self._Amount = Amount

    @property
    def StationGetOff(self):
        r"""到达站
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._StationGetOff

    @StationGetOff.setter
    def StationGetOff(self, StationGetOff):
        self._StationGetOff = StationGetOff

    @property
    def TaxRate(self):
        r"""税率
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._TaxRate

    @TaxRate.setter
    def TaxRate(self, TaxRate):
        self._TaxRate = TaxRate

    @property
    def Seat(self):
        r"""席位
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Seat

    @Seat.setter
    def Seat(self, Seat):
        self._Seat = Seat

    @property
    def Total(self):
        r"""价税合计
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Total

    @Total.setter
    def Total(self, Total):
        self._Total = Total

    @property
    def CheckCode(self):
        r"""校验码
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._CheckCode

    @CheckCode.setter
    def CheckCode(self, CheckCode):
        self._CheckCode = CheckCode

    @property
    def StateCode(self):
        r"""发票状态代码，0正常 1 未更新  2作废 3已红冲
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._StateCode

    @StateCode.setter
    def StateCode(self, StateCode):
        self._StateCode = StateCode


    def _deserialize(self, params):
        self._BuyerName = params.get("BuyerName")
        self._BuyerTaxCode = params.get("BuyerTaxCode")
        self._Number = params.get("Number")
        self._Date = params.get("Date")
        self._TotalCN = params.get("TotalCN")
        self._Tax = params.get("Tax")
        self._ServiceType = params.get("ServiceType")
        self._TimeGetOn = params.get("TimeGetOn")
        self._TrainNumber = params.get("TrainNumber")
        self._Code = params.get("Code")
        self._SeatType = params.get("SeatType")
        self._DateGetOn = params.get("DateGetOn")
        self._TrainCabin = params.get("TrainCabin")
        self._StationGetOn = params.get("StationGetOn")
        self._ElectronicNumber = params.get("ElectronicNumber")
        self._PassengerName = params.get("PassengerName")
        self._PassengerNo = params.get("PassengerNo")
        self._Amount = params.get("Amount")
        self._StationGetOff = params.get("StationGetOff")
        self._TaxRate = params.get("TaxRate")
        self._Seat = params.get("Seat")
        self._Total = params.get("Total")
        self._CheckCode = params.get("CheckCode")
        self._StateCode = params.get("StateCode")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ElectronicTrainTicketFull(AbstractModel):
    r"""电子发票（火车票）

    """

    def __init__(self):
        r"""
        :param _TypeOfVoucher: 电子发票类型
        :type TypeOfVoucher: str
        :param _ElectronicTicketNum: 电子客票号
        :type ElectronicTicketNum: str
        :param _Date: 开票日期
        :type Date: str
        :param _StationGetOn: 始发站
        :type StationGetOn: str
        :param _StationGetOff: 到达站
        :type StationGetOff: str
        :param _TrainNumber: 火车号
        :type TrainNumber: str
        :param _DateGetOn: 乘车日期
        :type DateGetOn: str
        :param _TimeGetOn: 始发时间
        :type TimeGetOn: str
        :param _Seat: 座位类型
        :type Seat: str
        :param _SeatNumber: 座位号
        :type SeatNumber: str
        :param _Fare: 票价
        :type Fare: str
        :param _Number: 发票号码
        :type Number: str
        :param _UserID: 身份证号
        :type UserID: str
        :param _UserName: 乘车人姓名
        :type UserName: str
        :param _Total: 金额
        :type Total: str
        :param _TaxRate: 税率
        :type TaxRate: str
        :param _Tax: 税额
        :type Tax: str
        :param _Buyer: 购买方名称
        :type Buyer: str
        :param _BuyerTaxID: 统一社会信用代码
        :type BuyerTaxID: str
        :param _OriginalNumber: 原发票号码
        :type OriginalNumber: str
        :param _IDInfo: 标识信息
        :type IDInfo: str
        """
        self._TypeOfVoucher = None
        self._ElectronicTicketNum = None
        self._Date = None
        self._StationGetOn = None
        self._StationGetOff = None
        self._TrainNumber = None
        self._DateGetOn = None
        self._TimeGetOn = None
        self._Seat = None
        self._SeatNumber = None
        self._Fare = None
        self._Number = None
        self._UserID = None
        self._UserName = None
        self._Total = None
        self._TaxRate = None
        self._Tax = None
        self._Buyer = None
        self._BuyerTaxID = None
        self._OriginalNumber = None
        self._IDInfo = None

    @property
    def TypeOfVoucher(self):
        r"""电子发票类型
        :rtype: str
        """
        return self._TypeOfVoucher

    @TypeOfVoucher.setter
    def TypeOfVoucher(self, TypeOfVoucher):
        self._TypeOfVoucher = TypeOfVoucher

    @property
    def ElectronicTicketNum(self):
        r"""电子客票号
        :rtype: str
        """
        return self._ElectronicTicketNum

    @ElectronicTicketNum.setter
    def ElectronicTicketNum(self, ElectronicTicketNum):
        self._ElectronicTicketNum = ElectronicTicketNum

    @property
    def Date(self):
        r"""开票日期
        :rtype: str
        """
        return self._Date

    @Date.setter
    def Date(self, Date):
        self._Date = Date

    @property
    def StationGetOn(self):
        r"""始发站
        :rtype: str
        """
        return self._StationGetOn

    @StationGetOn.setter
    def StationGetOn(self, StationGetOn):
        self._StationGetOn = StationGetOn

    @property
    def StationGetOff(self):
        r"""到达站
        :rtype: str
        """
        return self._StationGetOff

    @StationGetOff.setter
    def StationGetOff(self, StationGetOff):
        self._StationGetOff = StationGetOff

    @property
    def TrainNumber(self):
        r"""火车号
        :rtype: str
        """
        return self._TrainNumber

    @TrainNumber.setter
    def TrainNumber(self, TrainNumber):
        self._TrainNumber = TrainNumber

    @property
    def DateGetOn(self):
        r"""乘车日期
        :rtype: str
        """
        return self._DateGetOn

    @DateGetOn.setter
    def DateGetOn(self, DateGetOn):
        self._DateGetOn = DateGetOn

    @property
    def TimeGetOn(self):
        r"""始发时间
        :rtype: str
        """
        return self._TimeGetOn

    @TimeGetOn.setter
    def TimeGetOn(self, TimeGetOn):
        self._TimeGetOn = TimeGetOn

    @property
    def Seat(self):
        r"""座位类型
        :rtype: str
        """
        return self._Seat

    @Seat.setter
    def Seat(self, Seat):
        self._Seat = Seat

    @property
    def SeatNumber(self):
        r"""座位号
        :rtype: str
        """
        return self._SeatNumber

    @SeatNumber.setter
    def SeatNumber(self, SeatNumber):
        self._SeatNumber = SeatNumber

    @property
    def Fare(self):
        r"""票价
        :rtype: str
        """
        return self._Fare

    @Fare.setter
    def Fare(self, Fare):
        self._Fare = Fare

    @property
    def Number(self):
        r"""发票号码
        :rtype: str
        """
        return self._Number

    @Number.setter
    def Number(self, Number):
        self._Number = Number

    @property
    def UserID(self):
        r"""身份证号
        :rtype: str
        """
        return self._UserID

    @UserID.setter
    def UserID(self, UserID):
        self._UserID = UserID

    @property
    def UserName(self):
        r"""乘车人姓名
        :rtype: str
        """
        return self._UserName

    @UserName.setter
    def UserName(self, UserName):
        self._UserName = UserName

    @property
    def Total(self):
        r"""金额
        :rtype: str
        """
        return self._Total

    @Total.setter
    def Total(self, Total):
        self._Total = Total

    @property
    def TaxRate(self):
        r"""税率
        :rtype: str
        """
        return self._TaxRate

    @TaxRate.setter
    def TaxRate(self, TaxRate):
        self._TaxRate = TaxRate

    @property
    def Tax(self):
        r"""税额
        :rtype: str
        """
        return self._Tax

    @Tax.setter
    def Tax(self, Tax):
        self._Tax = Tax

    @property
    def Buyer(self):
        r"""购买方名称
        :rtype: str
        """
        return self._Buyer

    @Buyer.setter
    def Buyer(self, Buyer):
        self._Buyer = Buyer

    @property
    def BuyerTaxID(self):
        r"""统一社会信用代码
        :rtype: str
        """
        return self._BuyerTaxID

    @BuyerTaxID.setter
    def BuyerTaxID(self, BuyerTaxID):
        self._BuyerTaxID = BuyerTaxID

    @property
    def OriginalNumber(self):
        r"""原发票号码
        :rtype: str
        """
        return self._OriginalNumber

    @OriginalNumber.setter
    def OriginalNumber(self, OriginalNumber):
        self._OriginalNumber = OriginalNumber

    @property
    def IDInfo(self):
        r"""标识信息
        :rtype: str
        """
        return self._IDInfo

    @IDInfo.setter
    def IDInfo(self, IDInfo):
        self._IDInfo = IDInfo


    def _deserialize(self, params):
        self._TypeOfVoucher = params.get("TypeOfVoucher")
        self._ElectronicTicketNum = params.get("ElectronicTicketNum")
        self._Date = params.get("Date")
        self._StationGetOn = params.get("StationGetOn")
        self._StationGetOff = params.get("StationGetOff")
        self._TrainNumber = params.get("TrainNumber")
        self._DateGetOn = params.get("DateGetOn")
        self._TimeGetOn = params.get("TimeGetOn")
        self._Seat = params.get("Seat")
        self._SeatNumber = params.get("SeatNumber")
        self._Fare = params.get("Fare")
        self._Number = params.get("Number")
        self._UserID = params.get("UserID")
        self._UserName = params.get("UserName")
        self._Total = params.get("Total")
        self._TaxRate = params.get("TaxRate")
        self._Tax = params.get("Tax")
        self._Buyer = params.get("Buyer")
        self._BuyerTaxID = params.get("BuyerTaxID")
        self._OriginalNumber = params.get("OriginalNumber")
        self._IDInfo = params.get("IDInfo")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class Element(AbstractModel):
    r"""试题识别结果-元素内容

    """

    def __init__(self):
        r"""
        :param _Text: 元素内容，当type为figure时该字段内容为图片的位置
        :type Text: str
        :param _Coord: 元素坐标
        :type Coord: :class:`tencentcloud.ocr.v20181119.models.Polygon`
        :param _GroupType: 元素group类型，包括multiple-choice(选择题)、fill-in-the-blank(填空题)、problem-solving(解答题)、arithmetic(算术题)
        :type GroupType: str
        :param _ResultList: 结果列表
注意：此字段可能返回 null，表示取不到有效值。
        :type ResultList: list of ResultList
        :param _Index: 元素索引
        :type Index: int
        """
        self._Text = None
        self._Coord = None
        self._GroupType = None
        self._ResultList = None
        self._Index = None

    @property
    def Text(self):
        r"""元素内容，当type为figure时该字段内容为图片的位置
        :rtype: str
        """
        return self._Text

    @Text.setter
    def Text(self, Text):
        self._Text = Text

    @property
    def Coord(self):
        r"""元素坐标
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Polygon`
        """
        return self._Coord

    @Coord.setter
    def Coord(self, Coord):
        self._Coord = Coord

    @property
    def GroupType(self):
        r"""元素group类型，包括multiple-choice(选择题)、fill-in-the-blank(填空题)、problem-solving(解答题)、arithmetic(算术题)
        :rtype: str
        """
        return self._GroupType

    @GroupType.setter
    def GroupType(self, GroupType):
        self._GroupType = GroupType

    @property
    def ResultList(self):
        r"""结果列表
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of ResultList
        """
        return self._ResultList

    @ResultList.setter
    def ResultList(self, ResultList):
        self._ResultList = ResultList

    @property
    def Index(self):
        r"""元素索引
        :rtype: int
        """
        return self._Index

    @Index.setter
    def Index(self, Index):
        self._Index = Index


    def _deserialize(self, params):
        self._Text = params.get("Text")
        if params.get("Coord") is not None:
            self._Coord = Polygon()
            self._Coord._deserialize(params.get("Coord"))
        self._GroupType = params.get("GroupType")
        if params.get("ResultList") is not None:
            self._ResultList = []
            for item in params.get("ResultList"):
                obj = ResultList()
                obj._deserialize(item)
                self._ResultList.append(obj)
        self._Index = params.get("Index")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class Encryption(AbstractModel):
    r"""敏感数据加密

    """

    def __init__(self):
        r"""
        :param _CiphertextBlob: 有加密需求的用户，接入传入kms的CiphertextBlob（Base64编码），关于数据加密可查阅[敏感数据加密指引](https://cloud.tencent.com/document/product/866/106048)文档。
注意：此字段可能返回 null，表示取不到有效值。
        :type CiphertextBlob: str
        :param _Iv: 有加密需求的用户，传入CBC加密的初始向量（客户自定义字符串，长度16字符，Base64编码）。
注意：此字段可能返回 null，表示取不到有效值。
        :type Iv: str
        :param _Algorithm: 加密使用的算法（支持'AES-256-CBC'、'SM4-GCM'），不传默认为'AES-256-CBC'
注意：此字段可能返回 null，表示取不到有效值。
        :type Algorithm: str
        :param _TagList: SM4-GCM算法生成的消息摘要（校验消息完整性时使用）
注意：此字段可能返回 null，表示取不到有效值。
        :type TagList: list of str
        :param _EncryptList: 在使用加密服务时，指定要被加密的字段。本接口默认为EncryptedBody
注意：此字段可能返回 null，表示取不到有效值。
        :type EncryptList: list of str
        """
        self._CiphertextBlob = None
        self._Iv = None
        self._Algorithm = None
        self._TagList = None
        self._EncryptList = None

    @property
    def CiphertextBlob(self):
        r"""有加密需求的用户，接入传入kms的CiphertextBlob（Base64编码），关于数据加密可查阅[敏感数据加密指引](https://cloud.tencent.com/document/product/866/106048)文档。
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._CiphertextBlob

    @CiphertextBlob.setter
    def CiphertextBlob(self, CiphertextBlob):
        self._CiphertextBlob = CiphertextBlob

    @property
    def Iv(self):
        r"""有加密需求的用户，传入CBC加密的初始向量（客户自定义字符串，长度16字符，Base64编码）。
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Iv

    @Iv.setter
    def Iv(self, Iv):
        self._Iv = Iv

    @property
    def Algorithm(self):
        r"""加密使用的算法（支持'AES-256-CBC'、'SM4-GCM'），不传默认为'AES-256-CBC'
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Algorithm

    @Algorithm.setter
    def Algorithm(self, Algorithm):
        self._Algorithm = Algorithm

    @property
    def TagList(self):
        r"""SM4-GCM算法生成的消息摘要（校验消息完整性时使用）
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of str
        """
        return self._TagList

    @TagList.setter
    def TagList(self, TagList):
        self._TagList = TagList

    @property
    def EncryptList(self):
        r"""在使用加密服务时，指定要被加密的字段。本接口默认为EncryptedBody
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of str
        """
        return self._EncryptList

    @EncryptList.setter
    def EncryptList(self, EncryptList):
        self._EncryptList = EncryptList


    def _deserialize(self, params):
        self._CiphertextBlob = params.get("CiphertextBlob")
        self._Iv = params.get("Iv")
        self._Algorithm = params.get("Algorithm")
        self._TagList = params.get("TagList")
        self._EncryptList = params.get("EncryptList")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class EnglishOCRRequest(AbstractModel):
    r"""EnglishOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经Base64编码后不超过 7M。图片下载时间不超过 3 秒。像素须介于20-10000px之间。
图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。

        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经 Base64 编码后不超过 7M。图片下载时间不超过 3 秒。像素须介于20-10000px之间。
图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。
非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        :param _EnableCoordPoint: 单词四点坐标开关，开启可返回图片中单词的四点坐标。
该参数默认值为false。
        :type EnableCoordPoint: bool
        :param _EnableCandWord: 候选字开关，开启可返回识别时多个可能的候选字（每个候选字对应其置信度）。
该参数默认值为false。
        :type EnableCandWord: bool
        :param _Preprocess: 预处理开关，功能是检测图片倾斜的角度，将原本倾斜的图片矫正。该参数默认值为true。
        :type Preprocess: bool
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._EnableCoordPoint = None
        self._EnableCandWord = None
        self._Preprocess = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经Base64编码后不超过 7M。图片下载时间不超过 3 秒。像素须介于20-10000px之间。
图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。

        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经 Base64 编码后不超过 7M。图片下载时间不超过 3 秒。像素须介于20-10000px之间。
图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。
非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def EnableCoordPoint(self):
        r"""单词四点坐标开关，开启可返回图片中单词的四点坐标。
该参数默认值为false。
        :rtype: bool
        """
        return self._EnableCoordPoint

    @EnableCoordPoint.setter
    def EnableCoordPoint(self, EnableCoordPoint):
        self._EnableCoordPoint = EnableCoordPoint

    @property
    def EnableCandWord(self):
        r"""候选字开关，开启可返回识别时多个可能的候选字（每个候选字对应其置信度）。
该参数默认值为false。
        :rtype: bool
        """
        return self._EnableCandWord

    @EnableCandWord.setter
    def EnableCandWord(self, EnableCandWord):
        self._EnableCandWord = EnableCandWord

    @property
    def Preprocess(self):
        r"""预处理开关，功能是检测图片倾斜的角度，将原本倾斜的图片矫正。该参数默认值为true。
        :rtype: bool
        """
        return self._Preprocess

    @Preprocess.setter
    def Preprocess(self, Preprocess):
        self._Preprocess = Preprocess


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._EnableCoordPoint = params.get("EnableCoordPoint")
        self._EnableCandWord = params.get("EnableCandWord")
        self._Preprocess = params.get("Preprocess")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class EnglishOCRResponse(AbstractModel):
    r"""EnglishOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _TextDetections: 检测到的文本信息，具体内容请点击左侧链接。
        :type TextDetections: list of TextDetectionEn
        :param _Angel: 图片旋转角度（角度制），文本的水平方向为0°；顺时针为正，逆时针为负。点击查看<a href="https://cloud.tencent.com/document/product/866/45139">如何纠正倾斜文本</a>
        :type Angel: float
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._TextDetections = None
        self._Angel = None
        self._RequestId = None

    @property
    def TextDetections(self):
        r"""检测到的文本信息，具体内容请点击左侧链接。
        :rtype: list of TextDetectionEn
        """
        return self._TextDetections

    @TextDetections.setter
    def TextDetections(self, TextDetections):
        self._TextDetections = TextDetections

    @property
    def Angel(self):
        r"""图片旋转角度（角度制），文本的水平方向为0°；顺时针为正，逆时针为负。点击查看<a href="https://cloud.tencent.com/document/product/866/45139">如何纠正倾斜文本</a>
        :rtype: float
        """
        return self._Angel

    @Angel.setter
    def Angel(self, Angel):
        self._Angel = Angel

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("TextDetections") is not None:
            self._TextDetections = []
            for item in params.get("TextDetections"):
                obj = TextDetectionEn()
                obj._deserialize(item)
                self._TextDetections.append(obj)
        self._Angel = params.get("Angel")
        self._RequestId = params.get("RequestId")


class EnterpriseLicenseInfo(AbstractModel):
    r"""企业证照单个字段的内容

    """

    def __init__(self):
        r"""
        :param _Name: 识别出的字段名称（关键字），不同证件类型可能不同，证件类型包含企业登记证书、许可证书、企业执照、三证合一类证书；
支持以下字段：统一社会信用代码、法定代表人、公司名称、公司地址、注册资金、企业类型、经营范围、成立日期、有效期、开办资金、经费来源、举办单位等；
        :type Name: str
        :param _Value: 识别出的字段名称对应的值，也就是字段Name对应的字符串结果。
        :type Value: str
        """
        self._Name = None
        self._Value = None

    @property
    def Name(self):
        r"""识别出的字段名称（关键字），不同证件类型可能不同，证件类型包含企业登记证书、许可证书、企业执照、三证合一类证书；
支持以下字段：统一社会信用代码、法定代表人、公司名称、公司地址、注册资金、企业类型、经营范围、成立日期、有效期、开办资金、经费来源、举办单位等；
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Value(self):
        r"""识别出的字段名称对应的值，也就是字段Name对应的字符串结果。
        :rtype: str
        """
        return self._Value

    @Value.setter
    def Value(self, Value):
        self._Value = Value


    def _deserialize(self, params):
        self._Name = params.get("Name")
        self._Value = params.get("Value")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class EnterpriseLicenseOCRRequest(AbstractModel):
    r"""EnterpriseLicenseOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经Base64编码后不超过 7M。图片下载时间不超过 3 秒。
图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经 Base64 编码后不超过 7M。图片下载时间不超过 3 秒。
图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。
非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        """
        self._ImageBase64 = None
        self._ImageUrl = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经Base64编码后不超过 7M。图片下载时间不超过 3 秒。
图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经 Base64 编码后不超过 7M。图片下载时间不超过 3 秒。
图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。
非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class EnterpriseLicenseOCRResponse(AbstractModel):
    r"""EnterpriseLicenseOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _EnterpriseLicenseInfos: 企业证照识别结果，具体内容请点击左侧链接。
        :type EnterpriseLicenseInfos: list of EnterpriseLicenseInfo
        :param _Angle: 图片旋转角度（角度制），文本的水平方向为0°，顺时针为正，逆时针为负。
        :type Angle: float
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._EnterpriseLicenseInfos = None
        self._Angle = None
        self._RequestId = None

    @property
    def EnterpriseLicenseInfos(self):
        r"""企业证照识别结果，具体内容请点击左侧链接。
        :rtype: list of EnterpriseLicenseInfo
        """
        return self._EnterpriseLicenseInfos

    @EnterpriseLicenseInfos.setter
    def EnterpriseLicenseInfos(self, EnterpriseLicenseInfos):
        self._EnterpriseLicenseInfos = EnterpriseLicenseInfos

    @property
    def Angle(self):
        r"""图片旋转角度（角度制），文本的水平方向为0°，顺时针为正，逆时针为负。
        :rtype: float
        """
        return self._Angle

    @Angle.setter
    def Angle(self, Angle):
        self._Angle = Angle

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("EnterpriseLicenseInfos") is not None:
            self._EnterpriseLicenseInfos = []
            for item in params.get("EnterpriseLicenseInfos"):
                obj = EnterpriseLicenseInfo()
                obj._deserialize(item)
                self._EnterpriseLicenseInfos.append(obj)
        self._Angle = params.get("Angle")
        self._RequestId = params.get("RequestId")


class EstateCertOCRRequest(AbstractModel):
    r"""EstateCertOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        """
        self._ImageBase64 = None
        self._ImageUrl = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class EstateCertOCRResponse(AbstractModel):
    r"""EstateCertOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Obligee: 权利人
        :type Obligee: str
        :param _Ownership: 共有情况
        :type Ownership: str
        :param _Location: 坐落
        :type Location: str
        :param _Unit: 不动产单元号
        :type Unit: str
        :param _Type: 权利类型
        :type Type: str
        :param _Property: 权利性质
        :type Property: str
        :param _Usage: 用途
        :type Usage: str
        :param _Area: 面积
        :type Area: str
        :param _Term: 使用期限
        :type Term: str
        :param _Other: 权利其他状况，多行会用换行符\n连接。
        :type Other: str
        :param _Angle: 图片旋转角度
        :type Angle: float
        :param _Number: 不动产权号
        :type Number: str
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Obligee = None
        self._Ownership = None
        self._Location = None
        self._Unit = None
        self._Type = None
        self._Property = None
        self._Usage = None
        self._Area = None
        self._Term = None
        self._Other = None
        self._Angle = None
        self._Number = None
        self._RequestId = None

    @property
    def Obligee(self):
        r"""权利人
        :rtype: str
        """
        return self._Obligee

    @Obligee.setter
    def Obligee(self, Obligee):
        self._Obligee = Obligee

    @property
    def Ownership(self):
        r"""共有情况
        :rtype: str
        """
        return self._Ownership

    @Ownership.setter
    def Ownership(self, Ownership):
        self._Ownership = Ownership

    @property
    def Location(self):
        r"""坐落
        :rtype: str
        """
        return self._Location

    @Location.setter
    def Location(self, Location):
        self._Location = Location

    @property
    def Unit(self):
        r"""不动产单元号
        :rtype: str
        """
        return self._Unit

    @Unit.setter
    def Unit(self, Unit):
        self._Unit = Unit

    @property
    def Type(self):
        r"""权利类型
        :rtype: str
        """
        return self._Type

    @Type.setter
    def Type(self, Type):
        self._Type = Type

    @property
    def Property(self):
        r"""权利性质
        :rtype: str
        """
        return self._Property

    @Property.setter
    def Property(self, Property):
        self._Property = Property

    @property
    def Usage(self):
        r"""用途
        :rtype: str
        """
        return self._Usage

    @Usage.setter
    def Usage(self, Usage):
        self._Usage = Usage

    @property
    def Area(self):
        r"""面积
        :rtype: str
        """
        return self._Area

    @Area.setter
    def Area(self, Area):
        self._Area = Area

    @property
    def Term(self):
        r"""使用期限
        :rtype: str
        """
        return self._Term

    @Term.setter
    def Term(self, Term):
        self._Term = Term

    @property
    def Other(self):
        r"""权利其他状况，多行会用换行符\n连接。
        :rtype: str
        """
        return self._Other

    @Other.setter
    def Other(self, Other):
        self._Other = Other

    @property
    def Angle(self):
        r"""图片旋转角度
        :rtype: float
        """
        return self._Angle

    @Angle.setter
    def Angle(self, Angle):
        self._Angle = Angle

    @property
    def Number(self):
        r"""不动产权号
        :rtype: str
        """
        return self._Number

    @Number.setter
    def Number(self, Number):
        self._Number = Number

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._Obligee = params.get("Obligee")
        self._Ownership = params.get("Ownership")
        self._Location = params.get("Location")
        self._Unit = params.get("Unit")
        self._Type = params.get("Type")
        self._Property = params.get("Property")
        self._Usage = params.get("Usage")
        self._Area = params.get("Area")
        self._Term = params.get("Term")
        self._Other = params.get("Other")
        self._Angle = params.get("Angle")
        self._Number = params.get("Number")
        self._RequestId = params.get("RequestId")


class ExtractDocAgentRequest(AbstractModel):
    r"""ExtractDocAgent请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片/PDF的 Base64 值。 要求图片/PDF经Base64编码后不超过 10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。 图片支持的像素范围：需介于20-10000px之间。 图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片/PDF的 Url 地址。 要求图片/PDF经Base64编码后不超过 10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。 图片支持的像素范围：需介于20-10000px之间。 图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        :param _ItemNames: 自定义抽取需要的字段名称、字段类型、字段提示词。
        :type ItemNames: list of ItemNames
        :param _PdfPageNumber: 需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF时有效。
        :type PdfPageNumber: int
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._ItemNames = None
        self._PdfPageNumber = None

    @property
    def ImageBase64(self):
        r"""图片/PDF的 Base64 值。 要求图片/PDF经Base64编码后不超过 10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。 图片支持的像素范围：需介于20-10000px之间。 图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片/PDF的 Url 地址。 要求图片/PDF经Base64编码后不超过 10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。 图片支持的像素范围：需介于20-10000px之间。 图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def ItemNames(self):
        r"""自定义抽取需要的字段名称、字段类型、字段提示词。
        :rtype: list of ItemNames
        """
        return self._ItemNames

    @ItemNames.setter
    def ItemNames(self, ItemNames):
        self._ItemNames = ItemNames

    @property
    def PdfPageNumber(self):
        r"""需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF时有效。
        :rtype: int
        """
        return self._PdfPageNumber

    @PdfPageNumber.setter
    def PdfPageNumber(self, PdfPageNumber):
        self._PdfPageNumber = PdfPageNumber


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        if params.get("ItemNames") is not None:
            self._ItemNames = []
            for item in params.get("ItemNames"):
                obj = ItemNames()
                obj._deserialize(item)
                self._ItemNames.append(obj)
        self._PdfPageNumber = params.get("PdfPageNumber")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ExtractDocAgentResponse(AbstractModel):
    r"""ExtractDocAgent返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Angle: 图片旋转角度(角度制)，文本的水平方向为 0；顺时针为正，逆时针为负。
        :type Angle: float
        :param _StructuralList: 配置结构化文本信息。
        :type StructuralList: list of GroupInfo
        :param _ErrorCode: 任务执行错误码。当任务状态不为 FAIL 时，该值为""。
        :type ErrorCode: str
        :param _ErrorMessage: 任务执行错误信息。当任务状态不为 FAIL 时，该值为""。
        :type ErrorMessage: str
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Angle = None
        self._StructuralList = None
        self._ErrorCode = None
        self._ErrorMessage = None
        self._RequestId = None

    @property
    def Angle(self):
        r"""图片旋转角度(角度制)，文本的水平方向为 0；顺时针为正，逆时针为负。
        :rtype: float
        """
        return self._Angle

    @Angle.setter
    def Angle(self, Angle):
        self._Angle = Angle

    @property
    def StructuralList(self):
        r"""配置结构化文本信息。
        :rtype: list of GroupInfo
        """
        return self._StructuralList

    @StructuralList.setter
    def StructuralList(self, StructuralList):
        self._StructuralList = StructuralList

    @property
    def ErrorCode(self):
        r"""任务执行错误码。当任务状态不为 FAIL 时，该值为""。
        :rtype: str
        """
        return self._ErrorCode

    @ErrorCode.setter
    def ErrorCode(self, ErrorCode):
        self._ErrorCode = ErrorCode

    @property
    def ErrorMessage(self):
        r"""任务执行错误信息。当任务状态不为 FAIL 时，该值为""。
        :rtype: str
        """
        return self._ErrorMessage

    @ErrorMessage.setter
    def ErrorMessage(self, ErrorMessage):
        self._ErrorMessage = ErrorMessage

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._Angle = params.get("Angle")
        if params.get("StructuralList") is not None:
            self._StructuralList = []
            for item in params.get("StructuralList"):
                obj = GroupInfo()
                obj._deserialize(item)
                self._StructuralList.append(obj)
        self._ErrorCode = params.get("ErrorCode")
        self._ErrorMessage = params.get("ErrorMessage")
        self._RequestId = params.get("RequestId")


class ExtractDocBasicRequest(AbstractModel):
    r"""ExtractDocBasic请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageUrl: 图片/PDF的 Url 地址。要求图片经Base64编码后不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        :param _ImageBase64: 图片/PDF的 Base64 值。要求Base64不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _IsPdf: 是否开启PDF识别，默认值为false，开启后可同时支持图片和PDF的识别。
        :type IsPdf: bool
        :param _PdfPageNumber: 需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :type PdfPageNumber: int
        :param _ItemNames: 自定义结构化功能需返回的字段名称，例：
若客户只想返回姓名、性别两个字段的识别结果，则输入
ItemNames=["姓名","性别"]
        :type ItemNames: list of str
        :param _ReturnFullText: 是否开启全文字段识别
        :type ReturnFullText: bool
        :param _ConfigId: 配置id支持：
General -- 通用场景
GeneralNoDate -- 无后处理日期格式模版
OnlineTaxiItinerary -- 网约车行程单
RideHailingDriverLicense -- 网约车驾驶证
RideHailingTransportLicense -- 网约车运输证
WayBill -- 快递运单
AccountOpeningPermit -- 银行开户许可证
InvoiceEng -- 国际发票模板
Coin --钱币识别模板
OnboardingDocuments -- 入职材料识别
PropertyOwnershipCertificate -- 房产证识别
RealEstateCertificate --不动产权证识别
HouseEncumbranceCertificate -- 他权证识别
CarInsurance -- 车险保单
MultiRealEstateCertificate -- 房产证、不动产证、产权证等材料合一模板
        :type ConfigId: str
        :param _EnableSealRecognize: 是否打开印章识别
        :type EnableSealRecognize: bool
        """
        self._ImageUrl = None
        self._ImageBase64 = None
        self._IsPdf = None
        self._PdfPageNumber = None
        self._ItemNames = None
        self._ReturnFullText = None
        self._ConfigId = None
        self._EnableSealRecognize = None

    @property
    def ImageUrl(self):
        r"""图片/PDF的 Url 地址。要求图片经Base64编码后不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def ImageBase64(self):
        r"""图片/PDF的 Base64 值。要求Base64不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def IsPdf(self):
        r"""是否开启PDF识别，默认值为false，开启后可同时支持图片和PDF的识别。
        :rtype: bool
        """
        return self._IsPdf

    @IsPdf.setter
    def IsPdf(self, IsPdf):
        self._IsPdf = IsPdf

    @property
    def PdfPageNumber(self):
        r"""需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :rtype: int
        """
        return self._PdfPageNumber

    @PdfPageNumber.setter
    def PdfPageNumber(self, PdfPageNumber):
        self._PdfPageNumber = PdfPageNumber

    @property
    def ItemNames(self):
        r"""自定义结构化功能需返回的字段名称，例：
若客户只想返回姓名、性别两个字段的识别结果，则输入
ItemNames=["姓名","性别"]
        :rtype: list of str
        """
        return self._ItemNames

    @ItemNames.setter
    def ItemNames(self, ItemNames):
        self._ItemNames = ItemNames

    @property
    def ReturnFullText(self):
        r"""是否开启全文字段识别
        :rtype: bool
        """
        return self._ReturnFullText

    @ReturnFullText.setter
    def ReturnFullText(self, ReturnFullText):
        self._ReturnFullText = ReturnFullText

    @property
    def ConfigId(self):
        r"""配置id支持：
General -- 通用场景
GeneralNoDate -- 无后处理日期格式模版
OnlineTaxiItinerary -- 网约车行程单
RideHailingDriverLicense -- 网约车驾驶证
RideHailingTransportLicense -- 网约车运输证
WayBill -- 快递运单
AccountOpeningPermit -- 银行开户许可证
InvoiceEng -- 国际发票模板
Coin --钱币识别模板
OnboardingDocuments -- 入职材料识别
PropertyOwnershipCertificate -- 房产证识别
RealEstateCertificate --不动产权证识别
HouseEncumbranceCertificate -- 他权证识别
CarInsurance -- 车险保单
MultiRealEstateCertificate -- 房产证、不动产证、产权证等材料合一模板
        :rtype: str
        """
        return self._ConfigId

    @ConfigId.setter
    def ConfigId(self, ConfigId):
        self._ConfigId = ConfigId

    @property
    def EnableSealRecognize(self):
        r"""是否打开印章识别
        :rtype: bool
        """
        return self._EnableSealRecognize

    @EnableSealRecognize.setter
    def EnableSealRecognize(self, EnableSealRecognize):
        self._EnableSealRecognize = EnableSealRecognize


    def _deserialize(self, params):
        self._ImageUrl = params.get("ImageUrl")
        self._ImageBase64 = params.get("ImageBase64")
        self._IsPdf = params.get("IsPdf")
        self._PdfPageNumber = params.get("PdfPageNumber")
        self._ItemNames = params.get("ItemNames")
        self._ReturnFullText = params.get("ReturnFullText")
        self._ConfigId = params.get("ConfigId")
        self._EnableSealRecognize = params.get("EnableSealRecognize")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ExtractDocBasicResponse(AbstractModel):
    r"""ExtractDocBasic返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Angle: 图片旋转角度(角度制)，文本的水平方向
为 0；顺时针为正，逆时针为负
        :type Angle: float
        :param _StructuralList: 配置结构化文本信息
        :type StructuralList: list of GroupInfo
        :param _WordList: 还原文本信息
        :type WordList: list of WordItem
        :param _SealInfos: 全部印章信息
        :type SealInfos: list of SealInfo
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Angle = None
        self._StructuralList = None
        self._WordList = None
        self._SealInfos = None
        self._RequestId = None

    @property
    def Angle(self):
        r"""图片旋转角度(角度制)，文本的水平方向
为 0；顺时针为正，逆时针为负
        :rtype: float
        """
        return self._Angle

    @Angle.setter
    def Angle(self, Angle):
        self._Angle = Angle

    @property
    def StructuralList(self):
        r"""配置结构化文本信息
        :rtype: list of GroupInfo
        """
        return self._StructuralList

    @StructuralList.setter
    def StructuralList(self, StructuralList):
        self._StructuralList = StructuralList

    @property
    def WordList(self):
        r"""还原文本信息
        :rtype: list of WordItem
        """
        return self._WordList

    @WordList.setter
    def WordList(self, WordList):
        self._WordList = WordList

    @property
    def SealInfos(self):
        r"""全部印章信息
        :rtype: list of SealInfo
        """
        return self._SealInfos

    @SealInfos.setter
    def SealInfos(self, SealInfos):
        self._SealInfos = SealInfos

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._Angle = params.get("Angle")
        if params.get("StructuralList") is not None:
            self._StructuralList = []
            for item in params.get("StructuralList"):
                obj = GroupInfo()
                obj._deserialize(item)
                self._StructuralList.append(obj)
        if params.get("WordList") is not None:
            self._WordList = []
            for item in params.get("WordList"):
                obj = WordItem()
                obj._deserialize(item)
                self._WordList.append(obj)
        if params.get("SealInfos") is not None:
            self._SealInfos = []
            for item in params.get("SealInfos"):
                obj = SealInfo()
                obj._deserialize(item)
                self._SealInfos.append(obj)
        self._RequestId = params.get("RequestId")


class ExtractDocMultiProRequest(AbstractModel):
    r"""ExtractDocMultiPro请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageUrl: 图片/PDF的 Url 地址。要求图片经Base64编码后不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        :param _ImageBase64: 图片/PDF的 Base64 值。要求Base64不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _PdfPageNumber: 需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为前3页。
        :type PdfPageNumber: int
        :param _ItemNames: 自定义结构化功能需返回的字段名称，例：若客户想新增返回姓名、性别两个字段的识别结果，则输入ItemNames=["姓名","性别"]
        :type ItemNames: list of str
        :param _ItemNamesShowMode: true：仅输出自定义字段
flase：输出默认字段+自定义字段
默认true
        :type ItemNamesShowMode: bool
        :param _ReturnFullText: 是否开启全文字段识别
        :type ReturnFullText: bool
        :param _ConfigId: 配置id支持：
DispatchWeightNote -- 磅单发货单识别模板
ReceiptWeightNote -- 磅单收货单识别模板
默认：DispatchWeightNote
        :type ConfigId: str
        :param _EnableCoord: 是否开启全文字段坐标值的识别
        :type EnableCoord: bool
        :param _OutputParentKey: 是否开启父子key识别，默认是
        :type OutputParentKey: bool
        :param _ConfigAdvanced: 模板的单个属性配置
        :type ConfigAdvanced: :class:`tencentcloud.ocr.v20181119.models.ConfigAdvanced`
        """
        self._ImageUrl = None
        self._ImageBase64 = None
        self._PdfPageNumber = None
        self._ItemNames = None
        self._ItemNamesShowMode = None
        self._ReturnFullText = None
        self._ConfigId = None
        self._EnableCoord = None
        self._OutputParentKey = None
        self._ConfigAdvanced = None

    @property
    def ImageUrl(self):
        r"""图片/PDF的 Url 地址。要求图片经Base64编码后不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def ImageBase64(self):
        r"""图片/PDF的 Base64 值。要求Base64不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def PdfPageNumber(self):
        r"""需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为前3页。
        :rtype: int
        """
        return self._PdfPageNumber

    @PdfPageNumber.setter
    def PdfPageNumber(self, PdfPageNumber):
        self._PdfPageNumber = PdfPageNumber

    @property
    def ItemNames(self):
        r"""自定义结构化功能需返回的字段名称，例：若客户想新增返回姓名、性别两个字段的识别结果，则输入ItemNames=["姓名","性别"]
        :rtype: list of str
        """
        return self._ItemNames

    @ItemNames.setter
    def ItemNames(self, ItemNames):
        self._ItemNames = ItemNames

    @property
    def ItemNamesShowMode(self):
        r"""true：仅输出自定义字段
flase：输出默认字段+自定义字段
默认true
        :rtype: bool
        """
        return self._ItemNamesShowMode

    @ItemNamesShowMode.setter
    def ItemNamesShowMode(self, ItemNamesShowMode):
        self._ItemNamesShowMode = ItemNamesShowMode

    @property
    def ReturnFullText(self):
        r"""是否开启全文字段识别
        :rtype: bool
        """
        return self._ReturnFullText

    @ReturnFullText.setter
    def ReturnFullText(self, ReturnFullText):
        self._ReturnFullText = ReturnFullText

    @property
    def ConfigId(self):
        r"""配置id支持：
DispatchWeightNote -- 磅单发货单识别模板
ReceiptWeightNote -- 磅单收货单识别模板
默认：DispatchWeightNote
        :rtype: str
        """
        return self._ConfigId

    @ConfigId.setter
    def ConfigId(self, ConfigId):
        self._ConfigId = ConfigId

    @property
    def EnableCoord(self):
        r"""是否开启全文字段坐标值的识别
        :rtype: bool
        """
        return self._EnableCoord

    @EnableCoord.setter
    def EnableCoord(self, EnableCoord):
        self._EnableCoord = EnableCoord

    @property
    def OutputParentKey(self):
        r"""是否开启父子key识别，默认是
        :rtype: bool
        """
        return self._OutputParentKey

    @OutputParentKey.setter
    def OutputParentKey(self, OutputParentKey):
        self._OutputParentKey = OutputParentKey

    @property
    def ConfigAdvanced(self):
        r"""模板的单个属性配置
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ConfigAdvanced`
        """
        return self._ConfigAdvanced

    @ConfigAdvanced.setter
    def ConfigAdvanced(self, ConfigAdvanced):
        self._ConfigAdvanced = ConfigAdvanced


    def _deserialize(self, params):
        self._ImageUrl = params.get("ImageUrl")
        self._ImageBase64 = params.get("ImageBase64")
        self._PdfPageNumber = params.get("PdfPageNumber")
        self._ItemNames = params.get("ItemNames")
        self._ItemNamesShowMode = params.get("ItemNamesShowMode")
        self._ReturnFullText = params.get("ReturnFullText")
        self._ConfigId = params.get("ConfigId")
        self._EnableCoord = params.get("EnableCoord")
        self._OutputParentKey = params.get("OutputParentKey")
        if params.get("ConfigAdvanced") is not None:
            self._ConfigAdvanced = ConfigAdvanced()
            self._ConfigAdvanced._deserialize(params.get("ConfigAdvanced"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ExtractDocMultiProResponse(AbstractModel):
    r"""ExtractDocMultiPro返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Angle: 图片旋转角度(角度制)，文本的水平方向为 0；顺时针为正，逆时针为负
        :type Angle: float
        :param _StructuralList: 配置结构化文本信息
        :type StructuralList: list of GroupInfo
        :param _WordList: 还原文本信息
        :type WordList: list of WordItem
        :param _TokenNum: 样本识别字段数
        :type TokenNum: int
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Angle = None
        self._StructuralList = None
        self._WordList = None
        self._TokenNum = None
        self._RequestId = None

    @property
    def Angle(self):
        r"""图片旋转角度(角度制)，文本的水平方向为 0；顺时针为正，逆时针为负
        :rtype: float
        """
        return self._Angle

    @Angle.setter
    def Angle(self, Angle):
        self._Angle = Angle

    @property
    def StructuralList(self):
        r"""配置结构化文本信息
        :rtype: list of GroupInfo
        """
        return self._StructuralList

    @StructuralList.setter
    def StructuralList(self, StructuralList):
        self._StructuralList = StructuralList

    @property
    def WordList(self):
        r"""还原文本信息
        :rtype: list of WordItem
        """
        return self._WordList

    @WordList.setter
    def WordList(self, WordList):
        self._WordList = WordList

    @property
    def TokenNum(self):
        r"""样本识别字段数
        :rtype: int
        """
        return self._TokenNum

    @TokenNum.setter
    def TokenNum(self, TokenNum):
        self._TokenNum = TokenNum

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._Angle = params.get("Angle")
        if params.get("StructuralList") is not None:
            self._StructuralList = []
            for item in params.get("StructuralList"):
                obj = GroupInfo()
                obj._deserialize(item)
                self._StructuralList.append(obj)
        if params.get("WordList") is not None:
            self._WordList = []
            for item in params.get("WordList"):
                obj = WordItem()
                obj._deserialize(item)
                self._WordList.append(obj)
        self._TokenNum = params.get("TokenNum")
        self._RequestId = params.get("RequestId")


class ExtractDocMultiRequest(AbstractModel):
    r"""ExtractDocMulti请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageUrl: 图片/PDF的 Url 地址。要求图片经Base64编码后不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        :param _ImageBase64: 图片/PDF的 Base64 值。要求Base64不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _PdfPageNumber: 需要识别的PDF页面的对应页码，仅支持PDF单页识别，默认值为前3页。
        :type PdfPageNumber: int
        :param _ItemNames: 自定义结构化功能需返回的字段名称，例：若客户想新增返回姓名、性别两个字段的识别结果，则输入ItemNames=["姓名","性别"]
        :type ItemNames: list of str
        :param _ItemNamesShowMode: true：仅输出自定义字段
false：输出默认字段+自定义字段
默认true
        :type ItemNamesShowMode: bool
        :param _ReturnFullText: 是否开启全文字段识别
        :type ReturnFullText: bool
        :param _ConfigId: 配置id支持：
General -- 通用场景 
InvoiceEng -- 国际invoice模板 
WayBillEng --海运订单模板
CustomsDeclaration -- 进出口报关单
WeightNote -- 磅单
MedicalMeter -- 血压仪表识别
BillOfLading -- 海运提单
EntrustmentBook -- 海运托书
Statement -- 对账单识别模板
BookingConfirmation -- 配舱通知书识别模板
AirWayBill -- 航空运单识别模板
Table -- 表格模板
SteelLabel -- 实物标签识别模板
CarInsurance -- 车辆保险单识别模板
MultiRealEstateCertificate -- 房产材料识别模板
MultiRealEstateMaterial -- 房产证明识别模板
HongKongUtilityBill -- 中国香港水电煤单识别模板
OverseasCheques -- 海外支票
RegistrationCertificate -- 备案证
​GridPhoto -- 电网系统照片
​SignaturePage -- 签署页
​SalesDeliveryNote -- 销售发货单



        :type ConfigId: str
        :param _EnableCoord: 是否开启全文字段坐标值的识别
        :type EnableCoord: bool
        :param _OutputParentKey: 是否开启父子key识别，默认是
        :type OutputParentKey: bool
        :param _ConfigAdvanced: 模板的单个属性配置
        :type ConfigAdvanced: :class:`tencentcloud.ocr.v20181119.models.ConfigAdvanced`
        :param _OutputLanguage: cn时，添加的key为中文  
en时，添加的key为英语
        :type OutputLanguage: str
        """
        self._ImageUrl = None
        self._ImageBase64 = None
        self._PdfPageNumber = None
        self._ItemNames = None
        self._ItemNamesShowMode = None
        self._ReturnFullText = None
        self._ConfigId = None
        self._EnableCoord = None
        self._OutputParentKey = None
        self._ConfigAdvanced = None
        self._OutputLanguage = None

    @property
    def ImageUrl(self):
        r"""图片/PDF的 Url 地址。要求图片经Base64编码后不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def ImageBase64(self):
        r"""图片/PDF的 Base64 值。要求Base64不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def PdfPageNumber(self):
        r"""需要识别的PDF页面的对应页码，仅支持PDF单页识别，默认值为前3页。
        :rtype: int
        """
        return self._PdfPageNumber

    @PdfPageNumber.setter
    def PdfPageNumber(self, PdfPageNumber):
        self._PdfPageNumber = PdfPageNumber

    @property
    def ItemNames(self):
        r"""自定义结构化功能需返回的字段名称，例：若客户想新增返回姓名、性别两个字段的识别结果，则输入ItemNames=["姓名","性别"]
        :rtype: list of str
        """
        return self._ItemNames

    @ItemNames.setter
    def ItemNames(self, ItemNames):
        self._ItemNames = ItemNames

    @property
    def ItemNamesShowMode(self):
        r"""true：仅输出自定义字段
false：输出默认字段+自定义字段
默认true
        :rtype: bool
        """
        return self._ItemNamesShowMode

    @ItemNamesShowMode.setter
    def ItemNamesShowMode(self, ItemNamesShowMode):
        self._ItemNamesShowMode = ItemNamesShowMode

    @property
    def ReturnFullText(self):
        r"""是否开启全文字段识别
        :rtype: bool
        """
        return self._ReturnFullText

    @ReturnFullText.setter
    def ReturnFullText(self, ReturnFullText):
        self._ReturnFullText = ReturnFullText

    @property
    def ConfigId(self):
        r"""配置id支持：
General -- 通用场景 
InvoiceEng -- 国际invoice模板 
WayBillEng --海运订单模板
CustomsDeclaration -- 进出口报关单
WeightNote -- 磅单
MedicalMeter -- 血压仪表识别
BillOfLading -- 海运提单
EntrustmentBook -- 海运托书
Statement -- 对账单识别模板
BookingConfirmation -- 配舱通知书识别模板
AirWayBill -- 航空运单识别模板
Table -- 表格模板
SteelLabel -- 实物标签识别模板
CarInsurance -- 车辆保险单识别模板
MultiRealEstateCertificate -- 房产材料识别模板
MultiRealEstateMaterial -- 房产证明识别模板
HongKongUtilityBill -- 中国香港水电煤单识别模板
OverseasCheques -- 海外支票
RegistrationCertificate -- 备案证
​GridPhoto -- 电网系统照片
​SignaturePage -- 签署页
​SalesDeliveryNote -- 销售发货单



        :rtype: str
        """
        return self._ConfigId

    @ConfigId.setter
    def ConfigId(self, ConfigId):
        self._ConfigId = ConfigId

    @property
    def EnableCoord(self):
        r"""是否开启全文字段坐标值的识别
        :rtype: bool
        """
        return self._EnableCoord

    @EnableCoord.setter
    def EnableCoord(self, EnableCoord):
        self._EnableCoord = EnableCoord

    @property
    def OutputParentKey(self):
        r"""是否开启父子key识别，默认是
        :rtype: bool
        """
        return self._OutputParentKey

    @OutputParentKey.setter
    def OutputParentKey(self, OutputParentKey):
        self._OutputParentKey = OutputParentKey

    @property
    def ConfigAdvanced(self):
        r"""模板的单个属性配置
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ConfigAdvanced`
        """
        return self._ConfigAdvanced

    @ConfigAdvanced.setter
    def ConfigAdvanced(self, ConfigAdvanced):
        self._ConfigAdvanced = ConfigAdvanced

    @property
    def OutputLanguage(self):
        r"""cn时，添加的key为中文  
en时，添加的key为英语
        :rtype: str
        """
        return self._OutputLanguage

    @OutputLanguage.setter
    def OutputLanguage(self, OutputLanguage):
        self._OutputLanguage = OutputLanguage


    def _deserialize(self, params):
        self._ImageUrl = params.get("ImageUrl")
        self._ImageBase64 = params.get("ImageBase64")
        self._PdfPageNumber = params.get("PdfPageNumber")
        self._ItemNames = params.get("ItemNames")
        self._ItemNamesShowMode = params.get("ItemNamesShowMode")
        self._ReturnFullText = params.get("ReturnFullText")
        self._ConfigId = params.get("ConfigId")
        self._EnableCoord = params.get("EnableCoord")
        self._OutputParentKey = params.get("OutputParentKey")
        if params.get("ConfigAdvanced") is not None:
            self._ConfigAdvanced = ConfigAdvanced()
            self._ConfigAdvanced._deserialize(params.get("ConfigAdvanced"))
        self._OutputLanguage = params.get("OutputLanguage")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ExtractDocMultiResponse(AbstractModel):
    r"""ExtractDocMulti返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Angle: 图片旋转角度(角度制)，文本的水平方向为 0；顺时针为正，逆时针为负
        :type Angle: float
        :param _StructuralList: 配置结构化文本信息
        :type StructuralList: list of GroupInfo
        :param _WordList: 还原文本信息
        :type WordList: list of WordItem
        :param _TokenNum: 样本识别字段数
        :type TokenNum: int
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Angle = None
        self._StructuralList = None
        self._WordList = None
        self._TokenNum = None
        self._RequestId = None

    @property
    def Angle(self):
        r"""图片旋转角度(角度制)，文本的水平方向为 0；顺时针为正，逆时针为负
        :rtype: float
        """
        return self._Angle

    @Angle.setter
    def Angle(self, Angle):
        self._Angle = Angle

    @property
    def StructuralList(self):
        r"""配置结构化文本信息
        :rtype: list of GroupInfo
        """
        return self._StructuralList

    @StructuralList.setter
    def StructuralList(self, StructuralList):
        self._StructuralList = StructuralList

    @property
    def WordList(self):
        r"""还原文本信息
        :rtype: list of WordItem
        """
        return self._WordList

    @WordList.setter
    def WordList(self, WordList):
        self._WordList = WordList

    @property
    def TokenNum(self):
        r"""样本识别字段数
        :rtype: int
        """
        return self._TokenNum

    @TokenNum.setter
    def TokenNum(self, TokenNum):
        self._TokenNum = TokenNum

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._Angle = params.get("Angle")
        if params.get("StructuralList") is not None:
            self._StructuralList = []
            for item in params.get("StructuralList"):
                obj = GroupInfo()
                obj._deserialize(item)
                self._StructuralList.append(obj)
        if params.get("WordList") is not None:
            self._WordList = []
            for item in params.get("WordList"):
                obj = WordItem()
                obj._deserialize(item)
                self._WordList.append(obj)
        self._TokenNum = params.get("TokenNum")
        self._RequestId = params.get("RequestId")


class FieldsInfo(AbstractModel):
    r"""用于展示抽取出的信息

    """

    def __init__(self):
        r"""
        :param _KeyName: <p>用户自定义的提取字段名。</p>
        :type KeyName: str
        :param _KeyPrompt: <p>用户自定义的提取字段名的提示词。</p>
        :type KeyPrompt: str
        :param _KeyValue: <p>出参字段对应的值。</p><p>注意：此字段可能返回 null，表示取不到有效值。</p>
        :type KeyValue: str
        :param _KeyType: <p>出参类型。</p><p>注：与入参对应同个值。</p>
        :type KeyType: int
        :param _Polygon: <p>文本行坐标，以四个顶点坐标表示。</p><p>注：仅当入参EnableCoord不为null时生效，默认是false。</p>
        :type Polygon: :class:`tencentcloud.ocr.v20181119.models.CoordList`
        :param _SubItems: <p>嵌套FieldsInfo结构，仅当KeyType=1时有效。</p>
        :type SubItems: list of SubItemGroup
        """
        self._KeyName = None
        self._KeyPrompt = None
        self._KeyValue = None
        self._KeyType = None
        self._Polygon = None
        self._SubItems = None

    @property
    def KeyName(self):
        r"""<p>用户自定义的提取字段名。</p>
        :rtype: str
        """
        return self._KeyName

    @KeyName.setter
    def KeyName(self, KeyName):
        self._KeyName = KeyName

    @property
    def KeyPrompt(self):
        r"""<p>用户自定义的提取字段名的提示词。</p>
        :rtype: str
        """
        return self._KeyPrompt

    @KeyPrompt.setter
    def KeyPrompt(self, KeyPrompt):
        self._KeyPrompt = KeyPrompt

    @property
    def KeyValue(self):
        r"""<p>出参字段对应的值。</p><p>注意：此字段可能返回 null，表示取不到有效值。</p>
        :rtype: str
        """
        return self._KeyValue

    @KeyValue.setter
    def KeyValue(self, KeyValue):
        self._KeyValue = KeyValue

    @property
    def KeyType(self):
        r"""<p>出参类型。</p><p>注：与入参对应同个值。</p>
        :rtype: int
        """
        return self._KeyType

    @KeyType.setter
    def KeyType(self, KeyType):
        self._KeyType = KeyType

    @property
    def Polygon(self):
        r"""<p>文本行坐标，以四个顶点坐标表示。</p><p>注：仅当入参EnableCoord不为null时生效，默认是false。</p>
        :rtype: :class:`tencentcloud.ocr.v20181119.models.CoordList`
        """
        return self._Polygon

    @Polygon.setter
    def Polygon(self, Polygon):
        self._Polygon = Polygon

    @property
    def SubItems(self):
        r"""<p>嵌套FieldsInfo结构，仅当KeyType=1时有效。</p>
        :rtype: list of SubItemGroup
        """
        return self._SubItems

    @SubItems.setter
    def SubItems(self, SubItems):
        self._SubItems = SubItems


    def _deserialize(self, params):
        self._KeyName = params.get("KeyName")
        self._KeyPrompt = params.get("KeyPrompt")
        self._KeyValue = params.get("KeyValue")
        self._KeyType = params.get("KeyType")
        if params.get("Polygon") is not None:
            self._Polygon = CoordList()
            self._Polygon._deserialize(params.get("Polygon"))
        if params.get("SubItems") is not None:
            self._SubItems = []
            for item in params.get("SubItems"):
                obj = SubItemGroup()
                obj._deserialize(item)
                self._SubItems.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class FinancialBill(AbstractModel):
    r"""财务票据查验返回结果

    """

    def __init__(self):
        r"""
        :param _Code: 票据代码
注意：此字段可能返回 null，表示取不到有效值。
        :type Code: str
        :param _Number: 票据号码
注意：此字段可能返回 null，表示取不到有效值。
        :type Number: str
        :param _BuyerTaxID: 缴款人纳税识别号
注意：此字段可能返回 null，表示取不到有效值。
        :type BuyerTaxID: str
        :param _CheckCode: 校验码
注意：此字段可能返回 null，表示取不到有效值。
        :type CheckCode: str
        :param _Buyer: 缴款人
注意：此字段可能返回 null，表示取不到有效值。
        :type Buyer: str
        :param _Date: 开票日期
注意：此字段可能返回 null，表示取不到有效值。
        :type Date: str
        :param _SellerCompany: 收款单位
注意：此字段可能返回 null，表示取不到有效值。
        :type SellerCompany: str
        :param _Reviewer: 复核人
注意：此字段可能返回 null，表示取不到有效值。
        :type Reviewer: str
        :param _Seller: 收款人
注意：此字段可能返回 null，表示取不到有效值。
        :type Seller: str
        :param _Title: 票据名称
注意：此字段可能返回 null，表示取不到有效值。
        :type Title: str
        :param _Total: 金额合计
注意：此字段可能返回 null，表示取不到有效值。
        :type Total: str
        :param _TotalCn: 金额合计中文大写
注意：此字段可能返回 null，表示取不到有效值。
        :type TotalCn: str
        :param _RushRedStateCode: 冲红
注意：此字段可能返回 null，表示取不到有效值。
        :type RushRedStateCode: str
        :param _RushRedDate: 冲红日期
注意：此字段可能返回 null，表示取不到有效值。
        :type RushRedDate: str
        :param _RushRedTime: 冲红时间
注意：此字段可能返回 null，表示取不到有效值。
        :type RushRedTime: str
        :param _RushRedReason: 冲红原因
注意：此字段可能返回 null，表示取不到有效值。
        :type RushRedReason: str
        :param _FinancialBillItems: 项目明细
注意：此字段可能返回 null，表示取不到有效值。
        :type FinancialBillItems: list of FinancialBillItem
        :param _FinancialBillItemDetails: 项目清单
注意：此字段可能返回 null，表示取不到有效值。
        :type FinancialBillItemDetails: list of FinancialBillItemDetails
        """
        self._Code = None
        self._Number = None
        self._BuyerTaxID = None
        self._CheckCode = None
        self._Buyer = None
        self._Date = None
        self._SellerCompany = None
        self._Reviewer = None
        self._Seller = None
        self._Title = None
        self._Total = None
        self._TotalCn = None
        self._RushRedStateCode = None
        self._RushRedDate = None
        self._RushRedTime = None
        self._RushRedReason = None
        self._FinancialBillItems = None
        self._FinancialBillItemDetails = None

    @property
    def Code(self):
        r"""票据代码
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Code

    @Code.setter
    def Code(self, Code):
        self._Code = Code

    @property
    def Number(self):
        r"""票据号码
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Number

    @Number.setter
    def Number(self, Number):
        self._Number = Number

    @property
    def BuyerTaxID(self):
        r"""缴款人纳税识别号
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._BuyerTaxID

    @BuyerTaxID.setter
    def BuyerTaxID(self, BuyerTaxID):
        self._BuyerTaxID = BuyerTaxID

    @property
    def CheckCode(self):
        r"""校验码
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._CheckCode

    @CheckCode.setter
    def CheckCode(self, CheckCode):
        self._CheckCode = CheckCode

    @property
    def Buyer(self):
        r"""缴款人
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Buyer

    @Buyer.setter
    def Buyer(self, Buyer):
        self._Buyer = Buyer

    @property
    def Date(self):
        r"""开票日期
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Date

    @Date.setter
    def Date(self, Date):
        self._Date = Date

    @property
    def SellerCompany(self):
        r"""收款单位
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._SellerCompany

    @SellerCompany.setter
    def SellerCompany(self, SellerCompany):
        self._SellerCompany = SellerCompany

    @property
    def Reviewer(self):
        r"""复核人
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Reviewer

    @Reviewer.setter
    def Reviewer(self, Reviewer):
        self._Reviewer = Reviewer

    @property
    def Seller(self):
        r"""收款人
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Seller

    @Seller.setter
    def Seller(self, Seller):
        self._Seller = Seller

    @property
    def Title(self):
        r"""票据名称
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Title

    @Title.setter
    def Title(self, Title):
        self._Title = Title

    @property
    def Total(self):
        r"""金额合计
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Total

    @Total.setter
    def Total(self, Total):
        self._Total = Total

    @property
    def TotalCn(self):
        r"""金额合计中文大写
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._TotalCn

    @TotalCn.setter
    def TotalCn(self, TotalCn):
        self._TotalCn = TotalCn

    @property
    def RushRedStateCode(self):
        r"""冲红
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._RushRedStateCode

    @RushRedStateCode.setter
    def RushRedStateCode(self, RushRedStateCode):
        self._RushRedStateCode = RushRedStateCode

    @property
    def RushRedDate(self):
        r"""冲红日期
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._RushRedDate

    @RushRedDate.setter
    def RushRedDate(self, RushRedDate):
        self._RushRedDate = RushRedDate

    @property
    def RushRedTime(self):
        r"""冲红时间
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._RushRedTime

    @RushRedTime.setter
    def RushRedTime(self, RushRedTime):
        self._RushRedTime = RushRedTime

    @property
    def RushRedReason(self):
        r"""冲红原因
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._RushRedReason

    @RushRedReason.setter
    def RushRedReason(self, RushRedReason):
        self._RushRedReason = RushRedReason

    @property
    def FinancialBillItems(self):
        r"""项目明细
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of FinancialBillItem
        """
        return self._FinancialBillItems

    @FinancialBillItems.setter
    def FinancialBillItems(self, FinancialBillItems):
        self._FinancialBillItems = FinancialBillItems

    @property
    def FinancialBillItemDetails(self):
        r"""项目清单
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of FinancialBillItemDetails
        """
        return self._FinancialBillItemDetails

    @FinancialBillItemDetails.setter
    def FinancialBillItemDetails(self, FinancialBillItemDetails):
        self._FinancialBillItemDetails = FinancialBillItemDetails


    def _deserialize(self, params):
        self._Code = params.get("Code")
        self._Number = params.get("Number")
        self._BuyerTaxID = params.get("BuyerTaxID")
        self._CheckCode = params.get("CheckCode")
        self._Buyer = params.get("Buyer")
        self._Date = params.get("Date")
        self._SellerCompany = params.get("SellerCompany")
        self._Reviewer = params.get("Reviewer")
        self._Seller = params.get("Seller")
        self._Title = params.get("Title")
        self._Total = params.get("Total")
        self._TotalCn = params.get("TotalCn")
        self._RushRedStateCode = params.get("RushRedStateCode")
        self._RushRedDate = params.get("RushRedDate")
        self._RushRedTime = params.get("RushRedTime")
        self._RushRedReason = params.get("RushRedReason")
        if params.get("FinancialBillItems") is not None:
            self._FinancialBillItems = []
            for item in params.get("FinancialBillItems"):
                obj = FinancialBillItem()
                obj._deserialize(item)
                self._FinancialBillItems.append(obj)
        if params.get("FinancialBillItemDetails") is not None:
            self._FinancialBillItemDetails = []
            for item in params.get("FinancialBillItemDetails"):
                obj = FinancialBillItemDetails()
                obj._deserialize(item)
                self._FinancialBillItemDetails.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class FinancialBillItem(AbstractModel):
    r"""财务票据查验返回结果-项目明细

    """

    def __init__(self):
        r"""
        :param _ItemID: 项目编号
注意：此字段可能返回 null，表示取不到有效值。
        :type ItemID: str
        :param _Name: 项目名称
注意：此字段可能返回 null，表示取不到有效值。
        :type Name: str
        :param _Unit: 单位
注意：此字段可能返回 null，表示取不到有效值。
        :type Unit: str
        :param _Quantity: 数量
注意：此字段可能返回 null，表示取不到有效值。
        :type Quantity: str
        :param _Standard: 规格标准
注意：此字段可能返回 null，表示取不到有效值。
        :type Standard: str
        :param _Total: 金额
注意：此字段可能返回 null，表示取不到有效值。
        :type Total: str
        :param _SerialNumber: 项目序号
注意：此字段可能返回 null，表示取不到有效值。
        :type SerialNumber: str
        :param _Remark: 备注
注意：此字段可能返回 null，表示取不到有效值。
        :type Remark: str
        """
        self._ItemID = None
        self._Name = None
        self._Unit = None
        self._Quantity = None
        self._Standard = None
        self._Total = None
        self._SerialNumber = None
        self._Remark = None

    @property
    def ItemID(self):
        r"""项目编号
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._ItemID

    @ItemID.setter
    def ItemID(self, ItemID):
        self._ItemID = ItemID

    @property
    def Name(self):
        r"""项目名称
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Unit(self):
        r"""单位
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Unit

    @Unit.setter
    def Unit(self, Unit):
        self._Unit = Unit

    @property
    def Quantity(self):
        r"""数量
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Quantity

    @Quantity.setter
    def Quantity(self, Quantity):
        self._Quantity = Quantity

    @property
    def Standard(self):
        r"""规格标准
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Standard

    @Standard.setter
    def Standard(self, Standard):
        self._Standard = Standard

    @property
    def Total(self):
        r"""金额
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Total

    @Total.setter
    def Total(self, Total):
        self._Total = Total

    @property
    def SerialNumber(self):
        r"""项目序号
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._SerialNumber

    @SerialNumber.setter
    def SerialNumber(self, SerialNumber):
        self._SerialNumber = SerialNumber

    @property
    def Remark(self):
        r"""备注
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Remark

    @Remark.setter
    def Remark(self, Remark):
        self._Remark = Remark


    def _deserialize(self, params):
        self._ItemID = params.get("ItemID")
        self._Name = params.get("Name")
        self._Unit = params.get("Unit")
        self._Quantity = params.get("Quantity")
        self._Standard = params.get("Standard")
        self._Total = params.get("Total")
        self._SerialNumber = params.get("SerialNumber")
        self._Remark = params.get("Remark")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class FinancialBillItemDetails(AbstractModel):
    r"""财务票据查验返回结果-项目清单

    """

    def __init__(self):
        r"""
        :param _ItemID: 项目编号
注意：此字段可能返回 null，表示取不到有效值。
        :type ItemID: str
        :param _Name: 项目名称
注意：此字段可能返回 null，表示取不到有效值。
        :type Name: str
        :param _Unit: 单位
注意：此字段可能返回 null，表示取不到有效值。
        :type Unit: str
        :param _Quantity: 数量
注意：此字段可能返回 null，表示取不到有效值。
        :type Quantity: str
        :param _Standard: 规格标准
注意：此字段可能返回 null，表示取不到有效值。
        :type Standard: str
        :param _Total: 金额
注意：此字段可能返回 null，表示取不到有效值。
        :type Total: str
        :param _SerialNumber: 项目序号
注意：此字段可能返回 null，表示取不到有效值。
        :type SerialNumber: str
        :param _Remark: 备注
注意：此字段可能返回 null，表示取不到有效值。
        :type Remark: str
        """
        self._ItemID = None
        self._Name = None
        self._Unit = None
        self._Quantity = None
        self._Standard = None
        self._Total = None
        self._SerialNumber = None
        self._Remark = None

    @property
    def ItemID(self):
        r"""项目编号
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._ItemID

    @ItemID.setter
    def ItemID(self, ItemID):
        self._ItemID = ItemID

    @property
    def Name(self):
        r"""项目名称
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Unit(self):
        r"""单位
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Unit

    @Unit.setter
    def Unit(self, Unit):
        self._Unit = Unit

    @property
    def Quantity(self):
        r"""数量
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Quantity

    @Quantity.setter
    def Quantity(self, Quantity):
        self._Quantity = Quantity

    @property
    def Standard(self):
        r"""规格标准
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Standard

    @Standard.setter
    def Standard(self, Standard):
        self._Standard = Standard

    @property
    def Total(self):
        r"""金额
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Total

    @Total.setter
    def Total(self, Total):
        self._Total = Total

    @property
    def SerialNumber(self):
        r"""项目序号
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._SerialNumber

    @SerialNumber.setter
    def SerialNumber(self, SerialNumber):
        self._SerialNumber = SerialNumber

    @property
    def Remark(self):
        r"""备注
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Remark

    @Remark.setter
    def Remark(self, Remark):
        self._Remark = Remark


    def _deserialize(self, params):
        self._ItemID = params.get("ItemID")
        self._Name = params.get("Name")
        self._Unit = params.get("Unit")
        self._Quantity = params.get("Quantity")
        self._Standard = params.get("Standard")
        self._Total = params.get("Total")
        self._SerialNumber = params.get("SerialNumber")
        self._Remark = params.get("Remark")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class FlightInvoiceInfo(AbstractModel):
    r"""机票行程单识别结果

    """

    def __init__(self):
        r"""
        :param _Name: 识别出的字段名称(关键字)，支持以下字段：
票价、合计金额、填开日期、有效身份证件号码、电子客票号码、验证码、旅客姓名、填开单位、其他税费、燃油附加费、民航发展基金、保险费、销售单位代号、始发地、目的地、航班号、时间、日期、座位等级、承运人、发票消费类型、国内国际标签、印刷序号、客票级别/类别、客票生效日期、有效期截止日期、免费行李。
        :type Name: str
        :param _Value: 识别出的字段名称对应的值，也就是字段 Name 对应的字符串结果。
        :type Value: str
        :param _Row: 多个行程的字段所在行号，下标从0开始，非行字段或未能识别行号的该值返回-1。
        :type Row: int
        """
        self._Name = None
        self._Value = None
        self._Row = None

    @property
    def Name(self):
        r"""识别出的字段名称(关键字)，支持以下字段：
票价、合计金额、填开日期、有效身份证件号码、电子客票号码、验证码、旅客姓名、填开单位、其他税费、燃油附加费、民航发展基金、保险费、销售单位代号、始发地、目的地、航班号、时间、日期、座位等级、承运人、发票消费类型、国内国际标签、印刷序号、客票级别/类别、客票生效日期、有效期截止日期、免费行李。
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Value(self):
        r"""识别出的字段名称对应的值，也就是字段 Name 对应的字符串结果。
        :rtype: str
        """
        return self._Value

    @Value.setter
    def Value(self, Value):
        self._Value = Value

    @property
    def Row(self):
        r"""多个行程的字段所在行号，下标从0开始，非行字段或未能识别行号的该值返回-1。
        :rtype: int
        """
        return self._Row

    @Row.setter
    def Row(self, Row):
        self._Row = Row


    def _deserialize(self, params):
        self._Name = params.get("Name")
        self._Value = params.get("Value")
        self._Row = params.get("Row")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class FlightInvoiceOCRRequest(AbstractModel):
    r"""FlightInvoiceOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        :param _IsPdf: 是否开启PDF识别，默认值为true，开启后可同时支持图片和PDF的识别。
        :type IsPdf: bool
        :param _PdfPageNumber: 需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :type PdfPageNumber: int
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._IsPdf = None
        self._PdfPageNumber = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def IsPdf(self):
        r"""是否开启PDF识别，默认值为true，开启后可同时支持图片和PDF的识别。
        :rtype: bool
        """
        return self._IsPdf

    @IsPdf.setter
    def IsPdf(self, IsPdf):
        self._IsPdf = IsPdf

    @property
    def PdfPageNumber(self):
        r"""需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :rtype: int
        """
        return self._PdfPageNumber

    @PdfPageNumber.setter
    def PdfPageNumber(self, PdfPageNumber):
        self._PdfPageNumber = PdfPageNumber


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._IsPdf = params.get("IsPdf")
        self._PdfPageNumber = params.get("PdfPageNumber")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class FlightInvoiceOCRResponse(AbstractModel):
    r"""FlightInvoiceOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _FlightInvoiceInfos: 机票行程单识别结果，具体内容请点击左侧链接。
        :type FlightInvoiceInfos: list of FlightInvoiceInfo
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._FlightInvoiceInfos = None
        self._RequestId = None

    @property
    def FlightInvoiceInfos(self):
        r"""机票行程单识别结果，具体内容请点击左侧链接。
        :rtype: list of FlightInvoiceInfo
        """
        return self._FlightInvoiceInfos

    @FlightInvoiceInfos.setter
    def FlightInvoiceInfos(self, FlightInvoiceInfos):
        self._FlightInvoiceInfos = FlightInvoiceInfos

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("FlightInvoiceInfos") is not None:
            self._FlightInvoiceInfos = []
            for item in params.get("FlightInvoiceInfos"):
                obj = FlightInvoiceInfo()
                obj._deserialize(item)
                self._FlightInvoiceInfos.append(obj)
        self._RequestId = params.get("RequestId")


class FlightItem(AbstractModel):
    r"""机票行程卡条目

    """

    def __init__(self):
        r"""
        :param _TerminalGetOn: 出发航站楼
        :type TerminalGetOn: str
        :param _TerminalGetOff: 到达航站楼
        :type TerminalGetOff: str
        :param _Carrier: 承运人
        :type Carrier: str
        :param _FlightNumber: 航班号
        :type FlightNumber: str
        :param _Seat: 座位等级
        :type Seat: str
        :param _DateGetOn: 乘机日期
        :type DateGetOn: str
        :param _TimeGetOn: 乘机时间
        :type TimeGetOn: str
        :param _StationGetOn: 出发站
        :type StationGetOn: str
        :param _StationGetOff: 到达站
        :type StationGetOff: str
        :param _Allow: 免费行李
        :type Allow: str
        :param _FareBasis: 客票级别/客票类别
        :type FareBasis: str
        """
        self._TerminalGetOn = None
        self._TerminalGetOff = None
        self._Carrier = None
        self._FlightNumber = None
        self._Seat = None
        self._DateGetOn = None
        self._TimeGetOn = None
        self._StationGetOn = None
        self._StationGetOff = None
        self._Allow = None
        self._FareBasis = None

    @property
    def TerminalGetOn(self):
        r"""出发航站楼
        :rtype: str
        """
        return self._TerminalGetOn

    @TerminalGetOn.setter
    def TerminalGetOn(self, TerminalGetOn):
        self._TerminalGetOn = TerminalGetOn

    @property
    def TerminalGetOff(self):
        r"""到达航站楼
        :rtype: str
        """
        return self._TerminalGetOff

    @TerminalGetOff.setter
    def TerminalGetOff(self, TerminalGetOff):
        self._TerminalGetOff = TerminalGetOff

    @property
    def Carrier(self):
        r"""承运人
        :rtype: str
        """
        return self._Carrier

    @Carrier.setter
    def Carrier(self, Carrier):
        self._Carrier = Carrier

    @property
    def FlightNumber(self):
        r"""航班号
        :rtype: str
        """
        return self._FlightNumber

    @FlightNumber.setter
    def FlightNumber(self, FlightNumber):
        self._FlightNumber = FlightNumber

    @property
    def Seat(self):
        r"""座位等级
        :rtype: str
        """
        return self._Seat

    @Seat.setter
    def Seat(self, Seat):
        self._Seat = Seat

    @property
    def DateGetOn(self):
        r"""乘机日期
        :rtype: str
        """
        return self._DateGetOn

    @DateGetOn.setter
    def DateGetOn(self, DateGetOn):
        self._DateGetOn = DateGetOn

    @property
    def TimeGetOn(self):
        r"""乘机时间
        :rtype: str
        """
        return self._TimeGetOn

    @TimeGetOn.setter
    def TimeGetOn(self, TimeGetOn):
        self._TimeGetOn = TimeGetOn

    @property
    def StationGetOn(self):
        r"""出发站
        :rtype: str
        """
        return self._StationGetOn

    @StationGetOn.setter
    def StationGetOn(self, StationGetOn):
        self._StationGetOn = StationGetOn

    @property
    def StationGetOff(self):
        r"""到达站
        :rtype: str
        """
        return self._StationGetOff

    @StationGetOff.setter
    def StationGetOff(self, StationGetOff):
        self._StationGetOff = StationGetOff

    @property
    def Allow(self):
        r"""免费行李
        :rtype: str
        """
        return self._Allow

    @Allow.setter
    def Allow(self, Allow):
        self._Allow = Allow

    @property
    def FareBasis(self):
        r"""客票级别/客票类别
        :rtype: str
        """
        return self._FareBasis

    @FareBasis.setter
    def FareBasis(self, FareBasis):
        self._FareBasis = FareBasis


    def _deserialize(self, params):
        self._TerminalGetOn = params.get("TerminalGetOn")
        self._TerminalGetOff = params.get("TerminalGetOff")
        self._Carrier = params.get("Carrier")
        self._FlightNumber = params.get("FlightNumber")
        self._Seat = params.get("Seat")
        self._DateGetOn = params.get("DateGetOn")
        self._TimeGetOn = params.get("TimeGetOn")
        self._StationGetOn = params.get("StationGetOn")
        self._StationGetOff = params.get("StationGetOff")
        self._Allow = params.get("Allow")
        self._FareBasis = params.get("FareBasis")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class FlightItemInfo(AbstractModel):
    r"""机票详细信息元组

    """

    def __init__(self):
        r"""
        :param _TerminalGetOn: 出发站
        :type TerminalGetOn: str
        :param _TerminalGetOff: 到达站
        :type TerminalGetOff: str
        :param _Carrier: 承运人
        :type Carrier: str
        :param _FlightNumber: 航班号
        :type FlightNumber: str
        :param _Seat: 座位等级
        :type Seat: str
        :param _DateGetOn: 乘机日期
        :type DateGetOn: str
        :param _TimeGetOn: 乘机时间
        :type TimeGetOn: str
        :param _FareBasis: 客票级别/客票类别
        :type FareBasis: str
        :param _Allow: 免费行李额
        :type Allow: str
        :param _DateStart: 客票生效日期
        :type DateStart: str
        :param _DateEnd: 有效截止日期
        :type DateEnd: str
        """
        self._TerminalGetOn = None
        self._TerminalGetOff = None
        self._Carrier = None
        self._FlightNumber = None
        self._Seat = None
        self._DateGetOn = None
        self._TimeGetOn = None
        self._FareBasis = None
        self._Allow = None
        self._DateStart = None
        self._DateEnd = None

    @property
    def TerminalGetOn(self):
        r"""出发站
        :rtype: str
        """
        return self._TerminalGetOn

    @TerminalGetOn.setter
    def TerminalGetOn(self, TerminalGetOn):
        self._TerminalGetOn = TerminalGetOn

    @property
    def TerminalGetOff(self):
        r"""到达站
        :rtype: str
        """
        return self._TerminalGetOff

    @TerminalGetOff.setter
    def TerminalGetOff(self, TerminalGetOff):
        self._TerminalGetOff = TerminalGetOff

    @property
    def Carrier(self):
        r"""承运人
        :rtype: str
        """
        return self._Carrier

    @Carrier.setter
    def Carrier(self, Carrier):
        self._Carrier = Carrier

    @property
    def FlightNumber(self):
        r"""航班号
        :rtype: str
        """
        return self._FlightNumber

    @FlightNumber.setter
    def FlightNumber(self, FlightNumber):
        self._FlightNumber = FlightNumber

    @property
    def Seat(self):
        r"""座位等级
        :rtype: str
        """
        return self._Seat

    @Seat.setter
    def Seat(self, Seat):
        self._Seat = Seat

    @property
    def DateGetOn(self):
        r"""乘机日期
        :rtype: str
        """
        return self._DateGetOn

    @DateGetOn.setter
    def DateGetOn(self, DateGetOn):
        self._DateGetOn = DateGetOn

    @property
    def TimeGetOn(self):
        r"""乘机时间
        :rtype: str
        """
        return self._TimeGetOn

    @TimeGetOn.setter
    def TimeGetOn(self, TimeGetOn):
        self._TimeGetOn = TimeGetOn

    @property
    def FareBasis(self):
        r"""客票级别/客票类别
        :rtype: str
        """
        return self._FareBasis

    @FareBasis.setter
    def FareBasis(self, FareBasis):
        self._FareBasis = FareBasis

    @property
    def Allow(self):
        r"""免费行李额
        :rtype: str
        """
        return self._Allow

    @Allow.setter
    def Allow(self, Allow):
        self._Allow = Allow

    @property
    def DateStart(self):
        r"""客票生效日期
        :rtype: str
        """
        return self._DateStart

    @DateStart.setter
    def DateStart(self, DateStart):
        self._DateStart = DateStart

    @property
    def DateEnd(self):
        r"""有效截止日期
        :rtype: str
        """
        return self._DateEnd

    @DateEnd.setter
    def DateEnd(self, DateEnd):
        self._DateEnd = DateEnd


    def _deserialize(self, params):
        self._TerminalGetOn = params.get("TerminalGetOn")
        self._TerminalGetOff = params.get("TerminalGetOff")
        self._Carrier = params.get("Carrier")
        self._FlightNumber = params.get("FlightNumber")
        self._Seat = params.get("Seat")
        self._DateGetOn = params.get("DateGetOn")
        self._TimeGetOn = params.get("TimeGetOn")
        self._FareBasis = params.get("FareBasis")
        self._Allow = params.get("Allow")
        self._DateStart = params.get("DateStart")
        self._DateEnd = params.get("DateEnd")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class FormulaOCRRequest(AbstractModel):
    r"""FormulaOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        """
        self._ImageBase64 = None
        self._ImageUrl = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class FormulaOCRResponse(AbstractModel):
    r"""FormulaOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Angle: 图片旋转角度（角度制），文本的水平方向为0°；顺时针为正，逆时针为负
        :type Angle: int
        :param _FormulaInfos: 检测到的文本信息，具体内容请点击左侧链接。
        :type FormulaInfos: list of TextFormula
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Angle = None
        self._FormulaInfos = None
        self._RequestId = None

    @property
    def Angle(self):
        r"""图片旋转角度（角度制），文本的水平方向为0°；顺时针为正，逆时针为负
        :rtype: int
        """
        return self._Angle

    @Angle.setter
    def Angle(self, Angle):
        self._Angle = Angle

    @property
    def FormulaInfos(self):
        r"""检测到的文本信息，具体内容请点击左侧链接。
        :rtype: list of TextFormula
        """
        return self._FormulaInfos

    @FormulaInfos.setter
    def FormulaInfos(self, FormulaInfos):
        self._FormulaInfos = FormulaInfos

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._Angle = params.get("Angle")
        if params.get("FormulaInfos") is not None:
            self._FormulaInfos = []
            for item in params.get("FormulaInfos"):
                obj = TextFormula()
                obj._deserialize(item)
                self._FormulaInfos.append(obj)
        self._RequestId = params.get("RequestId")


class GeneralAccurateOCRRequest(AbstractModel):
    r"""GeneralAccurateOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: <p>图片/PDF的 Base64 值。要求图片经Base64编码后不超过 10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。</p>
        :type ImageBase64: str
        :param _ImageUrl: <p>图片/PDF的 Url 地址。要求图片经Base64编码后不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。</p>
        :type ImageUrl: str
        :param _IsWords: <p>是否返回单字信息，默认值为false，注：仅ConfigID配置为OCR时支持。</p>
        :type IsWords: bool
        :param _EnableDetectSplit: <p>是否开启原图切图检测功能，开启后可提升“整图面积大，但单字符占比面积小”（例如：试卷）场景下的识别效果，默认关，注：仅ConfigID配置为OCR时支持。</p>
        :type EnableDetectSplit: bool
        :param _IsPdf: <p>是否开启PDF识别，默认值为false，开启后可同时支持图片和PDF的识别。</p>
        :type IsPdf: bool
        :param _PdfPageNumber: <p>需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。</p>
        :type PdfPageNumber: int
        :param _EnableDetectText: <p>文本检测开关，默认为true。设置为false可直接进行单行识别，适用于仅包含正向单行文本的图片场景。</p>
        :type EnableDetectText: bool
        :param _ConfigID: <p>配置ID支持： OCR -- 通用场景 MulOCR--多语种场景，默认值为OCR</p>
        :type ConfigID: str
        :param _WordsType: <p>需要识别的文字类型，默认识别全部类型的文字。 0：自动识别全部类型文字 1：仅识别手写体文字 2：仅识别印刷体文字</p><p>当config id=OCR 且 iswords 是false 时 才生效</p>
        :type WordsType: str
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._IsWords = None
        self._EnableDetectSplit = None
        self._IsPdf = None
        self._PdfPageNumber = None
        self._EnableDetectText = None
        self._ConfigID = None
        self._WordsType = None

    @property
    def ImageBase64(self):
        r"""<p>图片/PDF的 Base64 值。要求图片经Base64编码后不超过 10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。</p>
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""<p>图片/PDF的 Url 地址。要求图片经Base64编码后不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。</p>
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def IsWords(self):
        r"""<p>是否返回单字信息，默认值为false，注：仅ConfigID配置为OCR时支持。</p>
        :rtype: bool
        """
        return self._IsWords

    @IsWords.setter
    def IsWords(self, IsWords):
        self._IsWords = IsWords

    @property
    def EnableDetectSplit(self):
        r"""<p>是否开启原图切图检测功能，开启后可提升“整图面积大，但单字符占比面积小”（例如：试卷）场景下的识别效果，默认关，注：仅ConfigID配置为OCR时支持。</p>
        :rtype: bool
        """
        return self._EnableDetectSplit

    @EnableDetectSplit.setter
    def EnableDetectSplit(self, EnableDetectSplit):
        self._EnableDetectSplit = EnableDetectSplit

    @property
    def IsPdf(self):
        r"""<p>是否开启PDF识别，默认值为false，开启后可同时支持图片和PDF的识别。</p>
        :rtype: bool
        """
        return self._IsPdf

    @IsPdf.setter
    def IsPdf(self, IsPdf):
        self._IsPdf = IsPdf

    @property
    def PdfPageNumber(self):
        r"""<p>需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。</p>
        :rtype: int
        """
        return self._PdfPageNumber

    @PdfPageNumber.setter
    def PdfPageNumber(self, PdfPageNumber):
        self._PdfPageNumber = PdfPageNumber

    @property
    def EnableDetectText(self):
        r"""<p>文本检测开关，默认为true。设置为false可直接进行单行识别，适用于仅包含正向单行文本的图片场景。</p>
        :rtype: bool
        """
        return self._EnableDetectText

    @EnableDetectText.setter
    def EnableDetectText(self, EnableDetectText):
        self._EnableDetectText = EnableDetectText

    @property
    def ConfigID(self):
        r"""<p>配置ID支持： OCR -- 通用场景 MulOCR--多语种场景，默认值为OCR</p>
        :rtype: str
        """
        return self._ConfigID

    @ConfigID.setter
    def ConfigID(self, ConfigID):
        self._ConfigID = ConfigID

    @property
    def WordsType(self):
        r"""<p>需要识别的文字类型，默认识别全部类型的文字。 0：自动识别全部类型文字 1：仅识别手写体文字 2：仅识别印刷体文字</p><p>当config id=OCR 且 iswords 是false 时 才生效</p>
        :rtype: str
        """
        return self._WordsType

    @WordsType.setter
    def WordsType(self, WordsType):
        self._WordsType = WordsType


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._IsWords = params.get("IsWords")
        self._EnableDetectSplit = params.get("EnableDetectSplit")
        self._IsPdf = params.get("IsPdf")
        self._PdfPageNumber = params.get("PdfPageNumber")
        self._EnableDetectText = params.get("EnableDetectText")
        self._ConfigID = params.get("ConfigID")
        self._WordsType = params.get("WordsType")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class GeneralAccurateOCRResponse(AbstractModel):
    r"""GeneralAccurateOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _TextDetections: <p>检测到的文本信息，包括文本行内容、置信度、文本行坐标以及文本行旋转纠正后的坐标，具体内容请点击左侧链接。</p>
        :type TextDetections: list of TextDetection
        :param _Angel: <p>图片旋转角度（角度制），文本的水平方向为0°；顺时针为正，逆时针为负。点击查看<a href="https://cloud.tencent.com/document/product/866/45139">如何纠正倾斜文本</a></p>
        :type Angel: float
        :param _Angle: <p>图片旋转角度（角度制），文本的水平方向为0°；顺时针为正，逆时针为负。点击查看<a href="https://cloud.tencent.com/document/product/866/45139">如何纠正倾斜文本</a></p>
        :type Angle: float
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._TextDetections = None
        self._Angel = None
        self._Angle = None
        self._RequestId = None

    @property
    def TextDetections(self):
        r"""<p>检测到的文本信息，包括文本行内容、置信度、文本行坐标以及文本行旋转纠正后的坐标，具体内容请点击左侧链接。</p>
        :rtype: list of TextDetection
        """
        return self._TextDetections

    @TextDetections.setter
    def TextDetections(self, TextDetections):
        self._TextDetections = TextDetections

    @property
    def Angel(self):
        warnings.warn("parameter `Angel` is deprecated", DeprecationWarning) 

        r"""<p>图片旋转角度（角度制），文本的水平方向为0°；顺时针为正，逆时针为负。点击查看<a href="https://cloud.tencent.com/document/product/866/45139">如何纠正倾斜文本</a></p>
        :rtype: float
        """
        return self._Angel

    @Angel.setter
    def Angel(self, Angel):
        warnings.warn("parameter `Angel` is deprecated", DeprecationWarning) 

        self._Angel = Angel

    @property
    def Angle(self):
        r"""<p>图片旋转角度（角度制），文本的水平方向为0°；顺时针为正，逆时针为负。点击查看<a href="https://cloud.tencent.com/document/product/866/45139">如何纠正倾斜文本</a></p>
        :rtype: float
        """
        return self._Angle

    @Angle.setter
    def Angle(self, Angle):
        self._Angle = Angle

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("TextDetections") is not None:
            self._TextDetections = []
            for item in params.get("TextDetections"):
                obj = TextDetection()
                obj._deserialize(item)
                self._TextDetections.append(obj)
        self._Angel = params.get("Angel")
        self._Angle = params.get("Angle")
        self._RequestId = params.get("RequestId")


class GeneralBasicOCRRequest(AbstractModel):
    r"""GeneralBasicOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片/PDF的 Base64 值。要求图片/PDF经Base64编码后不超过 10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片/PDF的 Url 地址。要求图片/PDF经Base64编码后不超过 10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        :param _Scene: 保留字段。
        :type Scene: str
        :param _LanguageType: 识别语言类型。
支持自动识别语言类型，同时支持自选语言种类，默认中英文混合(zh)，各种语言均支持与英文混合的文字识别。
可选值：
zh：中英混合
zh_rare：支持英文、数字、中文生僻字、繁体字，特殊符号等
auto：自动
mix：多语言混排场景中,自动识别混合语言的文本
jap：日语
kor：韩语
spa：西班牙语
fre：法语
ger：德语
por：葡萄牙语
vie：越语
may：马来语
rus：俄语
ita：意大利语
hol：荷兰语
swe：瑞典语
fin：芬兰语
dan：丹麦语
nor：挪威语
hun：匈牙利语
tha：泰语
hi：印地语
ara：阿拉伯语
        :type LanguageType: str
        :param _IsPdf: 是否开启PDF识别，默认值为false，开启后可同时支持图片和PDF的识别。
        :type IsPdf: bool
        :param _PdfPageNumber: 需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :type PdfPageNumber: int
        :param _IsWords: 是否返回单字信息，默认关
        :type IsWords: bool
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._Scene = None
        self._LanguageType = None
        self._IsPdf = None
        self._PdfPageNumber = None
        self._IsWords = None

    @property
    def ImageBase64(self):
        r"""图片/PDF的 Base64 值。要求图片/PDF经Base64编码后不超过 10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片/PDF的 Url 地址。要求图片/PDF经Base64编码后不超过 10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def Scene(self):
        r"""保留字段。
        :rtype: str
        """
        return self._Scene

    @Scene.setter
    def Scene(self, Scene):
        self._Scene = Scene

    @property
    def LanguageType(self):
        r"""识别语言类型。
支持自动识别语言类型，同时支持自选语言种类，默认中英文混合(zh)，各种语言均支持与英文混合的文字识别。
可选值：
zh：中英混合
zh_rare：支持英文、数字、中文生僻字、繁体字，特殊符号等
auto：自动
mix：多语言混排场景中,自动识别混合语言的文本
jap：日语
kor：韩语
spa：西班牙语
fre：法语
ger：德语
por：葡萄牙语
vie：越语
may：马来语
rus：俄语
ita：意大利语
hol：荷兰语
swe：瑞典语
fin：芬兰语
dan：丹麦语
nor：挪威语
hun：匈牙利语
tha：泰语
hi：印地语
ara：阿拉伯语
        :rtype: str
        """
        return self._LanguageType

    @LanguageType.setter
    def LanguageType(self, LanguageType):
        self._LanguageType = LanguageType

    @property
    def IsPdf(self):
        r"""是否开启PDF识别，默认值为false，开启后可同时支持图片和PDF的识别。
        :rtype: bool
        """
        return self._IsPdf

    @IsPdf.setter
    def IsPdf(self, IsPdf):
        self._IsPdf = IsPdf

    @property
    def PdfPageNumber(self):
        r"""需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :rtype: int
        """
        return self._PdfPageNumber

    @PdfPageNumber.setter
    def PdfPageNumber(self, PdfPageNumber):
        self._PdfPageNumber = PdfPageNumber

    @property
    def IsWords(self):
        r"""是否返回单字信息，默认关
        :rtype: bool
        """
        return self._IsWords

    @IsWords.setter
    def IsWords(self, IsWords):
        self._IsWords = IsWords


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._Scene = params.get("Scene")
        self._LanguageType = params.get("LanguageType")
        self._IsPdf = params.get("IsPdf")
        self._PdfPageNumber = params.get("PdfPageNumber")
        self._IsWords = params.get("IsWords")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class GeneralBasicOCRResponse(AbstractModel):
    r"""GeneralBasicOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _TextDetections: 检测到的文本信息，包括文本行内容、置信度、文本行坐标以及文本行旋转纠正后的坐标，具体内容请点击左侧链接。
        :type TextDetections: list of TextDetection
        :param _Language: 检测到的语言类型，目前支持的语言类型参考入参LanguageType说明。
        :type Language: str
        :param _Angel: 图片旋转角度（角度制），文本的水平方向为0°；顺时针为正，逆时针为负。点击查看<a href="https://cloud.tencent.com/document/product/866/45139">如何纠正倾斜文本</a>
        :type Angel: float
        :param _PdfPageSize: 图片为PDF时，返回PDF的总页数，默认为0
        :type PdfPageSize: int
        :param _Angle: 图片旋转角度（角度制），文本的水平方向为0°；顺时针为正，逆时针为负。点击查看<a href="https://cloud.tencent.com/document/product/866/45139">如何纠正倾斜文本</a>
        :type Angle: float
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._TextDetections = None
        self._Language = None
        self._Angel = None
        self._PdfPageSize = None
        self._Angle = None
        self._RequestId = None

    @property
    def TextDetections(self):
        r"""检测到的文本信息，包括文本行内容、置信度、文本行坐标以及文本行旋转纠正后的坐标，具体内容请点击左侧链接。
        :rtype: list of TextDetection
        """
        return self._TextDetections

    @TextDetections.setter
    def TextDetections(self, TextDetections):
        self._TextDetections = TextDetections

    @property
    def Language(self):
        r"""检测到的语言类型，目前支持的语言类型参考入参LanguageType说明。
        :rtype: str
        """
        return self._Language

    @Language.setter
    def Language(self, Language):
        self._Language = Language

    @property
    def Angel(self):
        warnings.warn("parameter `Angel` is deprecated", DeprecationWarning) 

        r"""图片旋转角度（角度制），文本的水平方向为0°；顺时针为正，逆时针为负。点击查看<a href="https://cloud.tencent.com/document/product/866/45139">如何纠正倾斜文本</a>
        :rtype: float
        """
        return self._Angel

    @Angel.setter
    def Angel(self, Angel):
        warnings.warn("parameter `Angel` is deprecated", DeprecationWarning) 

        self._Angel = Angel

    @property
    def PdfPageSize(self):
        r"""图片为PDF时，返回PDF的总页数，默认为0
        :rtype: int
        """
        return self._PdfPageSize

    @PdfPageSize.setter
    def PdfPageSize(self, PdfPageSize):
        self._PdfPageSize = PdfPageSize

    @property
    def Angle(self):
        r"""图片旋转角度（角度制），文本的水平方向为0°；顺时针为正，逆时针为负。点击查看<a href="https://cloud.tencent.com/document/product/866/45139">如何纠正倾斜文本</a>
        :rtype: float
        """
        return self._Angle

    @Angle.setter
    def Angle(self, Angle):
        self._Angle = Angle

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("TextDetections") is not None:
            self._TextDetections = []
            for item in params.get("TextDetections"):
                obj = TextDetection()
                obj._deserialize(item)
                self._TextDetections.append(obj)
        self._Language = params.get("Language")
        self._Angel = params.get("Angel")
        self._PdfPageSize = params.get("PdfPageSize")
        self._Angle = params.get("Angle")
        self._RequestId = params.get("RequestId")


class GeneralCardWarnInfo(AbstractModel):
    r"""通用卡证鉴伪告警信息

    """

    def __init__(self):
        r"""
        :param _IsWarn: 是否存在该告警
        :type IsWarn: bool
        :param _RiskConfidence: 风险程度
        :type RiskConfidence: float
        :param _Polygon: 告警位置四点坐标
        :type Polygon: list of Polygon
        """
        self._IsWarn = None
        self._RiskConfidence = None
        self._Polygon = None

    @property
    def IsWarn(self):
        r"""是否存在该告警
        :rtype: bool
        """
        return self._IsWarn

    @IsWarn.setter
    def IsWarn(self, IsWarn):
        self._IsWarn = IsWarn

    @property
    def RiskConfidence(self):
        r"""风险程度
        :rtype: float
        """
        return self._RiskConfidence

    @RiskConfidence.setter
    def RiskConfidence(self, RiskConfidence):
        self._RiskConfidence = RiskConfidence

    @property
    def Polygon(self):
        r"""告警位置四点坐标
        :rtype: list of Polygon
        """
        return self._Polygon

    @Polygon.setter
    def Polygon(self, Polygon):
        self._Polygon = Polygon


    def _deserialize(self, params):
        self._IsWarn = params.get("IsWarn")
        self._RiskConfidence = params.get("RiskConfidence")
        if params.get("Polygon") is not None:
            self._Polygon = []
            for item in params.get("Polygon"):
                obj = Polygon()
                obj._deserialize(item)
                self._Polygon.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class GeneralEfficientOCRRequest(AbstractModel):
    r"""GeneralEfficientOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。
要求图片经Base64编码后不超过 7M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP格式。
图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。
要求图片经Base64编码后不超过 7M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP格式。
图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        """
        self._ImageBase64 = None
        self._ImageUrl = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。
要求图片经Base64编码后不超过 7M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP格式。
图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。
要求图片经Base64编码后不超过 7M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP格式。
图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class GeneralEfficientOCRResponse(AbstractModel):
    r"""GeneralEfficientOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _TextDetections: 检测到的文本信息，包括文本行内容、置信度、文本行坐标以及文本行旋转纠正后的坐标，具体内容请点击左侧链接。
        :type TextDetections: list of TextDetection
        :param _Angel: 图片旋转角度（角度制），文本的水平方向为0°；顺时针为正，逆时针为负。点击查看<a href="https://cloud.tencent.com/document/product/866/45139">如何纠正倾斜文本</a>
        :type Angel: float
        :param _Angle: 图片旋转角度（角度制），文本的水平方向为0°；顺时针为正，逆时针为负。点击查看<a href="https://cloud.tencent.com/document/product/866/45139">如何纠正倾斜文本</a>
        :type Angle: float
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._TextDetections = None
        self._Angel = None
        self._Angle = None
        self._RequestId = None

    @property
    def TextDetections(self):
        r"""检测到的文本信息，包括文本行内容、置信度、文本行坐标以及文本行旋转纠正后的坐标，具体内容请点击左侧链接。
        :rtype: list of TextDetection
        """
        return self._TextDetections

    @TextDetections.setter
    def TextDetections(self, TextDetections):
        self._TextDetections = TextDetections

    @property
    def Angel(self):
        warnings.warn("parameter `Angel` is deprecated", DeprecationWarning) 

        r"""图片旋转角度（角度制），文本的水平方向为0°；顺时针为正，逆时针为负。点击查看<a href="https://cloud.tencent.com/document/product/866/45139">如何纠正倾斜文本</a>
        :rtype: float
        """
        return self._Angel

    @Angel.setter
    def Angel(self, Angel):
        warnings.warn("parameter `Angel` is deprecated", DeprecationWarning) 

        self._Angel = Angel

    @property
    def Angle(self):
        r"""图片旋转角度（角度制），文本的水平方向为0°；顺时针为正，逆时针为负。点击查看<a href="https://cloud.tencent.com/document/product/866/45139">如何纠正倾斜文本</a>
        :rtype: float
        """
        return self._Angle

    @Angle.setter
    def Angle(self, Angle):
        self._Angle = Angle

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("TextDetections") is not None:
            self._TextDetections = []
            for item in params.get("TextDetections"):
                obj = TextDetection()
                obj._deserialize(item)
                self._TextDetections.append(obj)
        self._Angel = params.get("Angel")
        self._Angle = params.get("Angle")
        self._RequestId = params.get("RequestId")


class GeneralFastOCRRequest(AbstractModel):
    r"""GeneralFastOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经Base64编码后不超过 7M。图片下载时间不超过 3 秒。
图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经 Base64 编码后不超过 7M。图片下载时间不超过 3 秒。
图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。
非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        :param _IsPdf: 是否开启PDF识别，默认值为false，开启后可同时支持图片和PDF的识别。
        :type IsPdf: bool
        :param _PdfPageNumber: 需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :type PdfPageNumber: int
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._IsPdf = None
        self._PdfPageNumber = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经Base64编码后不超过 7M。图片下载时间不超过 3 秒。
图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经 Base64 编码后不超过 7M。图片下载时间不超过 3 秒。
图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。
非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def IsPdf(self):
        r"""是否开启PDF识别，默认值为false，开启后可同时支持图片和PDF的识别。
        :rtype: bool
        """
        return self._IsPdf

    @IsPdf.setter
    def IsPdf(self, IsPdf):
        self._IsPdf = IsPdf

    @property
    def PdfPageNumber(self):
        r"""需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :rtype: int
        """
        return self._PdfPageNumber

    @PdfPageNumber.setter
    def PdfPageNumber(self, PdfPageNumber):
        self._PdfPageNumber = PdfPageNumber


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._IsPdf = params.get("IsPdf")
        self._PdfPageNumber = params.get("PdfPageNumber")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class GeneralFastOCRResponse(AbstractModel):
    r"""GeneralFastOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _TextDetections: 检测到的文本信息，具体内容请点击左侧链接。
        :type TextDetections: list of TextDetection
        :param _Language: 检测到的语言，目前支持的语种范围为：简体中文、繁体中文、英文、日文、韩文。未来将陆续新增对更多语种的支持。
返回结果含义为：zh - 中英混合，jap - 日文，kor - 韩文。
        :type Language: str
        :param _Angel: 图片旋转角度（角度制），文本的水平方向为0°；顺时针为正，逆时针为负
        :type Angel: float
        :param _PdfPageSize: 图片为PDF时，返回PDF的总页数，默认为0
        :type PdfPageSize: int
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._TextDetections = None
        self._Language = None
        self._Angel = None
        self._PdfPageSize = None
        self._RequestId = None

    @property
    def TextDetections(self):
        r"""检测到的文本信息，具体内容请点击左侧链接。
        :rtype: list of TextDetection
        """
        return self._TextDetections

    @TextDetections.setter
    def TextDetections(self, TextDetections):
        self._TextDetections = TextDetections

    @property
    def Language(self):
        r"""检测到的语言，目前支持的语种范围为：简体中文、繁体中文、英文、日文、韩文。未来将陆续新增对更多语种的支持。
返回结果含义为：zh - 中英混合，jap - 日文，kor - 韩文。
        :rtype: str
        """
        return self._Language

    @Language.setter
    def Language(self, Language):
        self._Language = Language

    @property
    def Angel(self):
        r"""图片旋转角度（角度制），文本的水平方向为0°；顺时针为正，逆时针为负
        :rtype: float
        """
        return self._Angel

    @Angel.setter
    def Angel(self, Angel):
        self._Angel = Angel

    @property
    def PdfPageSize(self):
        r"""图片为PDF时，返回PDF的总页数，默认为0
        :rtype: int
        """
        return self._PdfPageSize

    @PdfPageSize.setter
    def PdfPageSize(self, PdfPageSize):
        self._PdfPageSize = PdfPageSize

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("TextDetections") is not None:
            self._TextDetections = []
            for item in params.get("TextDetections"):
                obj = TextDetection()
                obj._deserialize(item)
                self._TextDetections.append(obj)
        self._Language = params.get("Language")
        self._Angel = params.get("Angel")
        self._PdfPageSize = params.get("PdfPageSize")
        self._RequestId = params.get("RequestId")


class GeneralHandwritingOCRRequest(AbstractModel):
    r"""GeneralHandwritingOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        :param _Scene: 场景字段，默认不用填写。
可选值:only_hw  表示只输出手写体识别结果，过滤印刷体。
        :type Scene: str
        :param _EnableWordPolygon: 是否开启单字的四点定位坐标输出，默认值为false。
        :type EnableWordPolygon: bool
        :param _EnableDetectText: 文本检测开关，默认值为true。
设置为false表示直接进行单行识别，可适用于识别单行手写体签名场景。
        :type EnableDetectText: bool
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._Scene = None
        self._EnableWordPolygon = None
        self._EnableDetectText = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def Scene(self):
        r"""场景字段，默认不用填写。
可选值:only_hw  表示只输出手写体识别结果，过滤印刷体。
        :rtype: str
        """
        return self._Scene

    @Scene.setter
    def Scene(self, Scene):
        self._Scene = Scene

    @property
    def EnableWordPolygon(self):
        r"""是否开启单字的四点定位坐标输出，默认值为false。
        :rtype: bool
        """
        return self._EnableWordPolygon

    @EnableWordPolygon.setter
    def EnableWordPolygon(self, EnableWordPolygon):
        self._EnableWordPolygon = EnableWordPolygon

    @property
    def EnableDetectText(self):
        r"""文本检测开关，默认值为true。
设置为false表示直接进行单行识别，可适用于识别单行手写体签名场景。
        :rtype: bool
        """
        return self._EnableDetectText

    @EnableDetectText.setter
    def EnableDetectText(self, EnableDetectText):
        self._EnableDetectText = EnableDetectText


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._Scene = params.get("Scene")
        self._EnableWordPolygon = params.get("EnableWordPolygon")
        self._EnableDetectText = params.get("EnableDetectText")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class GeneralHandwritingOCRResponse(AbstractModel):
    r"""GeneralHandwritingOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _TextDetections: 检测到的文本信息，具体内容请点击左侧链接。
        :type TextDetections: list of TextGeneralHandwriting
        :param _Angel: 图片旋转角度（角度制），文本的水平方向为0°；顺时针为正，逆时针为负。点击查看<a href="https://cloud.tencent.com/document/product/866/45139">如何纠正倾斜文本</a>
        :type Angel: float
        :param _Angle: 图片旋转角度（角度制），文本的水平方向为0°；顺时针为正，逆时针为负。点击查看<a href="https://cloud.tencent.com/document/product/866/45139">如何纠正倾斜文本</a>
        :type Angle: float
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._TextDetections = None
        self._Angel = None
        self._Angle = None
        self._RequestId = None

    @property
    def TextDetections(self):
        r"""检测到的文本信息，具体内容请点击左侧链接。
        :rtype: list of TextGeneralHandwriting
        """
        return self._TextDetections

    @TextDetections.setter
    def TextDetections(self, TextDetections):
        self._TextDetections = TextDetections

    @property
    def Angel(self):
        warnings.warn("parameter `Angel` is deprecated", DeprecationWarning) 

        r"""图片旋转角度（角度制），文本的水平方向为0°；顺时针为正，逆时针为负。点击查看<a href="https://cloud.tencent.com/document/product/866/45139">如何纠正倾斜文本</a>
        :rtype: float
        """
        return self._Angel

    @Angel.setter
    def Angel(self, Angel):
        warnings.warn("parameter `Angel` is deprecated", DeprecationWarning) 

        self._Angel = Angel

    @property
    def Angle(self):
        r"""图片旋转角度（角度制），文本的水平方向为0°；顺时针为正，逆时针为负。点击查看<a href="https://cloud.tencent.com/document/product/866/45139">如何纠正倾斜文本</a>
        :rtype: float
        """
        return self._Angle

    @Angle.setter
    def Angle(self, Angle):
        self._Angle = Angle

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("TextDetections") is not None:
            self._TextDetections = []
            for item in params.get("TextDetections"):
                obj = TextGeneralHandwriting()
                obj._deserialize(item)
                self._TextDetections.append(obj)
        self._Angel = params.get("Angel")
        self._Angle = params.get("Angle")
        self._RequestId = params.get("RequestId")


class GeneralMachineItem(AbstractModel):
    r"""通用机打发票条目

    """

    def __init__(self):
        r"""
        :param _Name: 项目名称
        :type Name: str
        :param _Specification: 规格型号
        :type Specification: str
        :param _Unit: 单位
        :type Unit: str
        :param _Quantity: 数量
        :type Quantity: str
        :param _Price: 单价
        :type Price: str
        :param _Total: 金额
        :type Total: str
        :param _TaxRate: 税率
        :type TaxRate: str
        :param _Tax: 税额
        :type Tax: str
        """
        self._Name = None
        self._Specification = None
        self._Unit = None
        self._Quantity = None
        self._Price = None
        self._Total = None
        self._TaxRate = None
        self._Tax = None

    @property
    def Name(self):
        r"""项目名称
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Specification(self):
        r"""规格型号
        :rtype: str
        """
        return self._Specification

    @Specification.setter
    def Specification(self, Specification):
        self._Specification = Specification

    @property
    def Unit(self):
        r"""单位
        :rtype: str
        """
        return self._Unit

    @Unit.setter
    def Unit(self, Unit):
        self._Unit = Unit

    @property
    def Quantity(self):
        r"""数量
        :rtype: str
        """
        return self._Quantity

    @Quantity.setter
    def Quantity(self, Quantity):
        self._Quantity = Quantity

    @property
    def Price(self):
        r"""单价
        :rtype: str
        """
        return self._Price

    @Price.setter
    def Price(self, Price):
        self._Price = Price

    @property
    def Total(self):
        r"""金额
        :rtype: str
        """
        return self._Total

    @Total.setter
    def Total(self, Total):
        self._Total = Total

    @property
    def TaxRate(self):
        r"""税率
        :rtype: str
        """
        return self._TaxRate

    @TaxRate.setter
    def TaxRate(self, TaxRate):
        self._TaxRate = TaxRate

    @property
    def Tax(self):
        r"""税额
        :rtype: str
        """
        return self._Tax

    @Tax.setter
    def Tax(self, Tax):
        self._Tax = Tax


    def _deserialize(self, params):
        self._Name = params.get("Name")
        self._Specification = params.get("Specification")
        self._Unit = params.get("Unit")
        self._Quantity = params.get("Quantity")
        self._Price = params.get("Price")
        self._Total = params.get("Total")
        self._TaxRate = params.get("TaxRate")
        self._Tax = params.get("Tax")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class GetOCRResultRequest(AbstractModel):
    r"""GetOCRResult请求参数结构体

    """

    def __init__(self):
        r"""
        :param _OCRToken: token值
        :type OCRToken: str
        """
        self._OCRToken = None

    @property
    def OCRToken(self):
        r"""token值
        :rtype: str
        """
        return self._OCRToken

    @OCRToken.setter
    def OCRToken(self, OCRToken):
        self._OCRToken = OCRToken


    def _deserialize(self, params):
        self._OCRToken = params.get("OCRToken")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class GetOCRResultResponse(AbstractModel):
    r"""GetOCRResult返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Type: ocr业务类型
        :type Type: str
        :param _OCRResult: ocr结果
        :type OCRResult: :class:`tencentcloud.ocr.v20181119.models.OCRResult`
        :param _RequestIdInfos: requestid 信息
        :type RequestIdInfos: list of RequestIdInfo
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Type = None
        self._OCRResult = None
        self._RequestIdInfos = None
        self._RequestId = None

    @property
    def Type(self):
        r"""ocr业务类型
        :rtype: str
        """
        return self._Type

    @Type.setter
    def Type(self, Type):
        self._Type = Type

    @property
    def OCRResult(self):
        r"""ocr结果
        :rtype: :class:`tencentcloud.ocr.v20181119.models.OCRResult`
        """
        return self._OCRResult

    @OCRResult.setter
    def OCRResult(self, OCRResult):
        self._OCRResult = OCRResult

    @property
    def RequestIdInfos(self):
        r"""requestid 信息
        :rtype: list of RequestIdInfo
        """
        return self._RequestIdInfos

    @RequestIdInfos.setter
    def RequestIdInfos(self, RequestIdInfos):
        self._RequestIdInfos = RequestIdInfos

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._Type = params.get("Type")
        if params.get("OCRResult") is not None:
            self._OCRResult = OCRResult()
            self._OCRResult._deserialize(params.get("OCRResult"))
        if params.get("RequestIdInfos") is not None:
            self._RequestIdInfos = []
            for item in params.get("RequestIdInfos"):
                obj = RequestIdInfo()
                obj._deserialize(item)
                self._RequestIdInfos.append(obj)
        self._RequestId = params.get("RequestId")


class GetOCRTokenRequest(AbstractModel):
    r"""GetOCRToken请求参数结构体

    """

    def __init__(self):
        r"""
        :param _Type: 业务类型，如身份证识别为IDCardOCR
        :type Type: str
        :param _IDCardConfig: 身份证配置信息
        :type IDCardConfig: :class:`tencentcloud.ocr.v20181119.models.IDCardConfig`
        """
        self._Type = None
        self._IDCardConfig = None

    @property
    def Type(self):
        r"""业务类型，如身份证识别为IDCardOCR
        :rtype: str
        """
        return self._Type

    @Type.setter
    def Type(self, Type):
        self._Type = Type

    @property
    def IDCardConfig(self):
        r"""身份证配置信息
        :rtype: :class:`tencentcloud.ocr.v20181119.models.IDCardConfig`
        """
        return self._IDCardConfig

    @IDCardConfig.setter
    def IDCardConfig(self, IDCardConfig):
        self._IDCardConfig = IDCardConfig


    def _deserialize(self, params):
        self._Type = params.get("Type")
        if params.get("IDCardConfig") is not None:
            self._IDCardConfig = IDCardConfig()
            self._IDCardConfig._deserialize(params.get("IDCardConfig"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class GetOCRTokenResponse(AbstractModel):
    r"""GetOCRToken返回参数结构体

    """

    def __init__(self):
        r"""
        :param _OCRToken: token值
        :type OCRToken: str
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._OCRToken = None
        self._RequestId = None

    @property
    def OCRToken(self):
        r"""token值
        :rtype: str
        """
        return self._OCRToken

    @OCRToken.setter
    def OCRToken(self, OCRToken):
        self._OCRToken = OCRToken

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._OCRToken = params.get("OCRToken")
        self._RequestId = params.get("RequestId")


class GroupInfo(AbstractModel):
    r"""组在图中的序号

    """

    def __init__(self):
        r"""
        :param _Groups: 每一行的元素
        :type Groups: list of LineInfo
        """
        self._Groups = None

    @property
    def Groups(self):
        r"""每一行的元素
        :rtype: list of LineInfo
        """
        return self._Groups

    @Groups.setter
    def Groups(self, Groups):
        self._Groups = Groups


    def _deserialize(self, params):
        if params.get("Groups") is not None:
            self._Groups = []
            for item in params.get("Groups"):
                obj = LineInfo()
                obj._deserialize(item)
                self._Groups.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class HKIDCardOCRRequest(AbstractModel):
    r"""HKIDCardOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ReturnHeadImage: 是否返回人像照片。
        :type ReturnHeadImage: bool
        :param _DetectFake: 是否鉴伪。
        :type DetectFake: bool
        :param _ImageBase64: 图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        """
        self._ReturnHeadImage = None
        self._DetectFake = None
        self._ImageBase64 = None
        self._ImageUrl = None

    @property
    def ReturnHeadImage(self):
        r"""是否返回人像照片。
        :rtype: bool
        """
        return self._ReturnHeadImage

    @ReturnHeadImage.setter
    def ReturnHeadImage(self, ReturnHeadImage):
        self._ReturnHeadImage = ReturnHeadImage

    @property
    def DetectFake(self):
        warnings.warn("parameter `DetectFake` is deprecated", DeprecationWarning) 

        r"""是否鉴伪。
        :rtype: bool
        """
        return self._DetectFake

    @DetectFake.setter
    def DetectFake(self, DetectFake):
        warnings.warn("parameter `DetectFake` is deprecated", DeprecationWarning) 

        self._DetectFake = DetectFake

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl


    def _deserialize(self, params):
        self._ReturnHeadImage = params.get("ReturnHeadImage")
        self._DetectFake = params.get("DetectFake")
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class HKIDCardOCRResponse(AbstractModel):
    r"""HKIDCardOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _CnName: 中文姓名
        :type CnName: str
        :param _EnName: 英文姓名
        :type EnName: str
        :param _TelexCode: 中文姓名对应电码
        :type TelexCode: str
        :param _Sex: 性别 ：“男M”或“女F”
        :type Sex: str
        :param _Birthday: 出生日期
        :type Birthday: str
        :param _Permanent: 永久性居民身份证。
0：非永久；
1：永久；
-1：未知。
        :type Permanent: int
        :param _IdNum: 身份证号码
        :type IdNum: str
        :param _Symbol: 证件符号，出生日期下的符号，例如"***AZ"
        :type Symbol: str
        :param _FirstIssueDate: 首次签发日期
        :type FirstIssueDate: str
        :param _CurrentIssueDate: 最近领用日期
        :type CurrentIssueDate: str
        :param _FakeDetectResult: 真假判断。
0：无法判断（图像模糊、不完整、反光、过暗等导致无法判断）；
1：假；
2：真。
注意：此字段可能返回 null，表示取不到有效值。
        :type FakeDetectResult: int
        :param _HeadImage: Base64编码的证件左侧人像大图
注意：此字段可能返回 null，表示取不到有效值。
        :type HeadImage: str
        :param _SmallHeadImage: Base64编码的证件右侧人像小图
注意：此字段可能返回 null，表示取不到有效值。
        :type SmallHeadImage: str
        :param _WarningCode: 该字段已废弃， 将固定返回空数组，不建议使用。

        :type WarningCode: list of int
        :param _WarnCardInfos: 该字段仅对国际站请求起作用，国内站该字段将固定返回空数组。国际站告警码如下：    告警码-9101 证件边框不完整告警-9102 证件复印件告警-9103 证件翻拍告警-9104 证件PS告警-9107 证件反光告警-9108 证件模糊告警-9109 告警能力未开通
        :type WarnCardInfos: list of int
        :param _WindowEmbeddedText: 证件透明视窗内的文本信息
        :type WindowEmbeddedText: str
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._CnName = None
        self._EnName = None
        self._TelexCode = None
        self._Sex = None
        self._Birthday = None
        self._Permanent = None
        self._IdNum = None
        self._Symbol = None
        self._FirstIssueDate = None
        self._CurrentIssueDate = None
        self._FakeDetectResult = None
        self._HeadImage = None
        self._SmallHeadImage = None
        self._WarningCode = None
        self._WarnCardInfos = None
        self._WindowEmbeddedText = None
        self._RequestId = None

    @property
    def CnName(self):
        r"""中文姓名
        :rtype: str
        """
        return self._CnName

    @CnName.setter
    def CnName(self, CnName):
        self._CnName = CnName

    @property
    def EnName(self):
        r"""英文姓名
        :rtype: str
        """
        return self._EnName

    @EnName.setter
    def EnName(self, EnName):
        self._EnName = EnName

    @property
    def TelexCode(self):
        r"""中文姓名对应电码
        :rtype: str
        """
        return self._TelexCode

    @TelexCode.setter
    def TelexCode(self, TelexCode):
        self._TelexCode = TelexCode

    @property
    def Sex(self):
        r"""性别 ：“男M”或“女F”
        :rtype: str
        """
        return self._Sex

    @Sex.setter
    def Sex(self, Sex):
        self._Sex = Sex

    @property
    def Birthday(self):
        r"""出生日期
        :rtype: str
        """
        return self._Birthday

    @Birthday.setter
    def Birthday(self, Birthday):
        self._Birthday = Birthday

    @property
    def Permanent(self):
        r"""永久性居民身份证。
0：非永久；
1：永久；
-1：未知。
        :rtype: int
        """
        return self._Permanent

    @Permanent.setter
    def Permanent(self, Permanent):
        self._Permanent = Permanent

    @property
    def IdNum(self):
        r"""身份证号码
        :rtype: str
        """
        return self._IdNum

    @IdNum.setter
    def IdNum(self, IdNum):
        self._IdNum = IdNum

    @property
    def Symbol(self):
        r"""证件符号，出生日期下的符号，例如"***AZ"
        :rtype: str
        """
        return self._Symbol

    @Symbol.setter
    def Symbol(self, Symbol):
        self._Symbol = Symbol

    @property
    def FirstIssueDate(self):
        r"""首次签发日期
        :rtype: str
        """
        return self._FirstIssueDate

    @FirstIssueDate.setter
    def FirstIssueDate(self, FirstIssueDate):
        self._FirstIssueDate = FirstIssueDate

    @property
    def CurrentIssueDate(self):
        r"""最近领用日期
        :rtype: str
        """
        return self._CurrentIssueDate

    @CurrentIssueDate.setter
    def CurrentIssueDate(self, CurrentIssueDate):
        self._CurrentIssueDate = CurrentIssueDate

    @property
    def FakeDetectResult(self):
        warnings.warn("parameter `FakeDetectResult` is deprecated", DeprecationWarning) 

        r"""真假判断。
0：无法判断（图像模糊、不完整、反光、过暗等导致无法判断）；
1：假；
2：真。
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._FakeDetectResult

    @FakeDetectResult.setter
    def FakeDetectResult(self, FakeDetectResult):
        warnings.warn("parameter `FakeDetectResult` is deprecated", DeprecationWarning) 

        self._FakeDetectResult = FakeDetectResult

    @property
    def HeadImage(self):
        r"""Base64编码的证件左侧人像大图
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._HeadImage

    @HeadImage.setter
    def HeadImage(self, HeadImage):
        self._HeadImage = HeadImage

    @property
    def SmallHeadImage(self):
        r"""Base64编码的证件右侧人像小图
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._SmallHeadImage

    @SmallHeadImage.setter
    def SmallHeadImage(self, SmallHeadImage):
        self._SmallHeadImage = SmallHeadImage

    @property
    def WarningCode(self):
        warnings.warn("parameter `WarningCode` is deprecated", DeprecationWarning) 

        r"""该字段已废弃， 将固定返回空数组，不建议使用。

        :rtype: list of int
        """
        return self._WarningCode

    @WarningCode.setter
    def WarningCode(self, WarningCode):
        warnings.warn("parameter `WarningCode` is deprecated", DeprecationWarning) 

        self._WarningCode = WarningCode

    @property
    def WarnCardInfos(self):
        r"""该字段仅对国际站请求起作用，国内站该字段将固定返回空数组。国际站告警码如下：    告警码-9101 证件边框不完整告警-9102 证件复印件告警-9103 证件翻拍告警-9104 证件PS告警-9107 证件反光告警-9108 证件模糊告警-9109 告警能力未开通
        :rtype: list of int
        """
        return self._WarnCardInfos

    @WarnCardInfos.setter
    def WarnCardInfos(self, WarnCardInfos):
        self._WarnCardInfos = WarnCardInfos

    @property
    def WindowEmbeddedText(self):
        r"""证件透明视窗内的文本信息
        :rtype: str
        """
        return self._WindowEmbeddedText

    @WindowEmbeddedText.setter
    def WindowEmbeddedText(self, WindowEmbeddedText):
        self._WindowEmbeddedText = WindowEmbeddedText

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._CnName = params.get("CnName")
        self._EnName = params.get("EnName")
        self._TelexCode = params.get("TelexCode")
        self._Sex = params.get("Sex")
        self._Birthday = params.get("Birthday")
        self._Permanent = params.get("Permanent")
        self._IdNum = params.get("IdNum")
        self._Symbol = params.get("Symbol")
        self._FirstIssueDate = params.get("FirstIssueDate")
        self._CurrentIssueDate = params.get("CurrentIssueDate")
        self._FakeDetectResult = params.get("FakeDetectResult")
        self._HeadImage = params.get("HeadImage")
        self._SmallHeadImage = params.get("SmallHeadImage")
        self._WarningCode = params.get("WarningCode")
        self._WarnCardInfos = params.get("WarnCardInfos")
        self._WindowEmbeddedText = params.get("WindowEmbeddedText")
        self._RequestId = params.get("RequestId")


class HandwritingEssayOCRRequest(AbstractModel):
    r"""HandwritingEssayOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageUrl: 图片/PDF的 Url 地址。要求图片经Base64编码后不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        :param _ImageBase64: 图片/PDF的 Base64 值。要求Base64不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _PdfPageNumber: 需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为前3页。
        :type PdfPageNumber: int
        :param _ConfigId: 配置id支持：
ArticleRecognize -- 手写中文作文模板
ArticleRecognizeEng -- 手写英文作文模板
默认：ArticleRecognize
        :type ConfigId: str
        :param _Scene: 模板的单个属性配置
        :type Scene: str
        """
        self._ImageUrl = None
        self._ImageBase64 = None
        self._PdfPageNumber = None
        self._ConfigId = None
        self._Scene = None

    @property
    def ImageUrl(self):
        r"""图片/PDF的 Url 地址。要求图片经Base64编码后不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def ImageBase64(self):
        r"""图片/PDF的 Base64 值。要求Base64不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def PdfPageNumber(self):
        r"""需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为前3页。
        :rtype: int
        """
        return self._PdfPageNumber

    @PdfPageNumber.setter
    def PdfPageNumber(self, PdfPageNumber):
        self._PdfPageNumber = PdfPageNumber

    @property
    def ConfigId(self):
        r"""配置id支持：
ArticleRecognize -- 手写中文作文模板
ArticleRecognizeEng -- 手写英文作文模板
默认：ArticleRecognize
        :rtype: str
        """
        return self._ConfigId

    @ConfigId.setter
    def ConfigId(self, ConfigId):
        self._ConfigId = ConfigId

    @property
    def Scene(self):
        r"""模板的单个属性配置
        :rtype: str
        """
        return self._Scene

    @Scene.setter
    def Scene(self, Scene):
        self._Scene = Scene


    def _deserialize(self, params):
        self._ImageUrl = params.get("ImageUrl")
        self._ImageBase64 = params.get("ImageBase64")
        self._PdfPageNumber = params.get("PdfPageNumber")
        self._ConfigId = params.get("ConfigId")
        self._Scene = params.get("Scene")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class HandwritingEssayOCRResponse(AbstractModel):
    r"""HandwritingEssayOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Angle: 图片旋转角度(角度制)，文本的水平方向为 0；顺时针为正，逆时针为负
        :type Angle: float
        :param _WordList: 还原文本信息
        :type WordList: list of WordItem
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Angle = None
        self._WordList = None
        self._RequestId = None

    @property
    def Angle(self):
        r"""图片旋转角度(角度制)，文本的水平方向为 0；顺时针为正，逆时针为负
        :rtype: float
        """
        return self._Angle

    @Angle.setter
    def Angle(self, Angle):
        self._Angle = Angle

    @property
    def WordList(self):
        r"""还原文本信息
        :rtype: list of WordItem
        """
        return self._WordList

    @WordList.setter
    def WordList(self, WordList):
        self._WordList = WordList

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._Angle = params.get("Angle")
        if params.get("WordList") is not None:
            self._WordList = []
            for item in params.get("WordList"):
                obj = WordItem()
                obj._deserialize(item)
                self._WordList.append(obj)
        self._RequestId = params.get("RequestId")


class IDCardConfig(AbstractModel):
    r"""身份证配置信息

    """

    def __init__(self):
        r"""
        :param _CopyWarn: 复印件告警，默认为false
        :type CopyWarn: bool
        :param _BorderCheckWarn: 边框和框内遮挡告警，默认为false
        :type BorderCheckWarn: bool
        :param _ReshootWarn: 翻拍告警，默认为false
        :type ReshootWarn: bool
        :param _DetectPsWarn: 疑似存在PS痕迹告警，默认为false
        :type DetectPsWarn: bool
        :param _TempIdWarn: 临时身份证告警，默认为false
        :type TempIdWarn: bool
        :param _InvalidDateWarn: 身份证有效日期不合法告警，默认为false
        :type InvalidDateWarn: bool
        :param _ReflectWarn: 是否开启反光检测，默认为false
        :type ReflectWarn: bool
        :param _CropPortrait: 是否开启头像剪切
        :type CropPortrait: bool
        """
        self._CopyWarn = None
        self._BorderCheckWarn = None
        self._ReshootWarn = None
        self._DetectPsWarn = None
        self._TempIdWarn = None
        self._InvalidDateWarn = None
        self._ReflectWarn = None
        self._CropPortrait = None

    @property
    def CopyWarn(self):
        r"""复印件告警，默认为false
        :rtype: bool
        """
        return self._CopyWarn

    @CopyWarn.setter
    def CopyWarn(self, CopyWarn):
        self._CopyWarn = CopyWarn

    @property
    def BorderCheckWarn(self):
        r"""边框和框内遮挡告警，默认为false
        :rtype: bool
        """
        return self._BorderCheckWarn

    @BorderCheckWarn.setter
    def BorderCheckWarn(self, BorderCheckWarn):
        self._BorderCheckWarn = BorderCheckWarn

    @property
    def ReshootWarn(self):
        r"""翻拍告警，默认为false
        :rtype: bool
        """
        return self._ReshootWarn

    @ReshootWarn.setter
    def ReshootWarn(self, ReshootWarn):
        self._ReshootWarn = ReshootWarn

    @property
    def DetectPsWarn(self):
        r"""疑似存在PS痕迹告警，默认为false
        :rtype: bool
        """
        return self._DetectPsWarn

    @DetectPsWarn.setter
    def DetectPsWarn(self, DetectPsWarn):
        self._DetectPsWarn = DetectPsWarn

    @property
    def TempIdWarn(self):
        r"""临时身份证告警，默认为false
        :rtype: bool
        """
        return self._TempIdWarn

    @TempIdWarn.setter
    def TempIdWarn(self, TempIdWarn):
        self._TempIdWarn = TempIdWarn

    @property
    def InvalidDateWarn(self):
        r"""身份证有效日期不合法告警，默认为false
        :rtype: bool
        """
        return self._InvalidDateWarn

    @InvalidDateWarn.setter
    def InvalidDateWarn(self, InvalidDateWarn):
        self._InvalidDateWarn = InvalidDateWarn

    @property
    def ReflectWarn(self):
        r"""是否开启反光检测，默认为false
        :rtype: bool
        """
        return self._ReflectWarn

    @ReflectWarn.setter
    def ReflectWarn(self, ReflectWarn):
        self._ReflectWarn = ReflectWarn

    @property
    def CropPortrait(self):
        r"""是否开启头像剪切
        :rtype: bool
        """
        return self._CropPortrait

    @CropPortrait.setter
    def CropPortrait(self, CropPortrait):
        self._CropPortrait = CropPortrait


    def _deserialize(self, params):
        self._CopyWarn = params.get("CopyWarn")
        self._BorderCheckWarn = params.get("BorderCheckWarn")
        self._ReshootWarn = params.get("ReshootWarn")
        self._DetectPsWarn = params.get("DetectPsWarn")
        self._TempIdWarn = params.get("TempIdWarn")
        self._InvalidDateWarn = params.get("InvalidDateWarn")
        self._ReflectWarn = params.get("ReflectWarn")
        self._CropPortrait = params.get("CropPortrait")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class IDCardInfo(AbstractModel):
    r"""身份证信息返回

    """

    def __init__(self):
        r"""
        :param _Name: 姓名（人像面）
        :type Name: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _Sex: 性别（人像面）
        :type Sex: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _Nation: 民族（人像面）
        :type Nation: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _Birth: 出生日期（人像面）
        :type Birth: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _Address: 地址（人像面）
        :type Address: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _IdNum: 公民身份号码（人像面）
        :type IdNum: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _Authority: 发证机关（国徽面）
        :type Authority: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _ValidDate: 证件有效期（国徽面）
        :type ValidDate: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _WarnInfos: WarnInfos，告警信息
        :type WarnInfos: :class:`tencentcloud.ocr.v20181119.models.CardWarnInfo`
        :param _CardImage: IdCard，裁剪后身份证照片的base64编码，请求 EnableCropImage 时返回；
        :type CardImage: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _PortraitImage: Portrait，身份证头像照片的base64编码，请求 EnablePortrait 时返回；
        :type PortraitImage: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        self._Name = None
        self._Sex = None
        self._Nation = None
        self._Birth = None
        self._Address = None
        self._IdNum = None
        self._Authority = None
        self._ValidDate = None
        self._WarnInfos = None
        self._CardImage = None
        self._PortraitImage = None

    @property
    def Name(self):
        r"""姓名（人像面）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Sex(self):
        r"""性别（人像面）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._Sex

    @Sex.setter
    def Sex(self, Sex):
        self._Sex = Sex

    @property
    def Nation(self):
        r"""民族（人像面）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._Nation

    @Nation.setter
    def Nation(self, Nation):
        self._Nation = Nation

    @property
    def Birth(self):
        r"""出生日期（人像面）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._Birth

    @Birth.setter
    def Birth(self, Birth):
        self._Birth = Birth

    @property
    def Address(self):
        r"""地址（人像面）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._Address

    @Address.setter
    def Address(self, Address):
        self._Address = Address

    @property
    def IdNum(self):
        r"""公民身份号码（人像面）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._IdNum

    @IdNum.setter
    def IdNum(self, IdNum):
        self._IdNum = IdNum

    @property
    def Authority(self):
        r"""发证机关（国徽面）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._Authority

    @Authority.setter
    def Authority(self, Authority):
        self._Authority = Authority

    @property
    def ValidDate(self):
        r"""证件有效期（国徽面）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._ValidDate

    @ValidDate.setter
    def ValidDate(self, ValidDate):
        self._ValidDate = ValidDate

    @property
    def WarnInfos(self):
        r"""WarnInfos，告警信息
        :rtype: :class:`tencentcloud.ocr.v20181119.models.CardWarnInfo`
        """
        return self._WarnInfos

    @WarnInfos.setter
    def WarnInfos(self, WarnInfos):
        self._WarnInfos = WarnInfos

    @property
    def CardImage(self):
        r"""IdCard，裁剪后身份证照片的base64编码，请求 EnableCropImage 时返回；
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._CardImage

    @CardImage.setter
    def CardImage(self, CardImage):
        self._CardImage = CardImage

    @property
    def PortraitImage(self):
        r"""Portrait，身份证头像照片的base64编码，请求 EnablePortrait 时返回；
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._PortraitImage

    @PortraitImage.setter
    def PortraitImage(self, PortraitImage):
        self._PortraitImage = PortraitImage


    def _deserialize(self, params):
        if params.get("Name") is not None:
            self._Name = ContentInfo()
            self._Name._deserialize(params.get("Name"))
        if params.get("Sex") is not None:
            self._Sex = ContentInfo()
            self._Sex._deserialize(params.get("Sex"))
        if params.get("Nation") is not None:
            self._Nation = ContentInfo()
            self._Nation._deserialize(params.get("Nation"))
        if params.get("Birth") is not None:
            self._Birth = ContentInfo()
            self._Birth._deserialize(params.get("Birth"))
        if params.get("Address") is not None:
            self._Address = ContentInfo()
            self._Address._deserialize(params.get("Address"))
        if params.get("IdNum") is not None:
            self._IdNum = ContentInfo()
            self._IdNum._deserialize(params.get("IdNum"))
        if params.get("Authority") is not None:
            self._Authority = ContentInfo()
            self._Authority._deserialize(params.get("Authority"))
        if params.get("ValidDate") is not None:
            self._ValidDate = ContentInfo()
            self._ValidDate._deserialize(params.get("ValidDate"))
        if params.get("WarnInfos") is not None:
            self._WarnInfos = CardWarnInfo()
            self._WarnInfos._deserialize(params.get("WarnInfos"))
        if params.get("CardImage") is not None:
            self._CardImage = ContentInfo()
            self._CardImage._deserialize(params.get("CardImage"))
        if params.get("PortraitImage") is not None:
            self._PortraitImage = ContentInfo()
            self._PortraitImage._deserialize(params.get("PortraitImage"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class IDCardInfoResult(AbstractModel):
    r"""身份证ocr信息结果

    """

    def __init__(self):
        r"""
        :param _WarnCodes: 警告代码
注意：此字段可能返回 null，表示取不到有效值。
        :type WarnCodes: list of int
        :param _Address: 地址（人像面）
注意：此字段可能返回 null，表示取不到有效值。
        :type Address: str
        :param _Authority: 发证机关（国徽面）
注意：此字段可能返回 null，表示取不到有效值。
        :type Authority: str
        :param _Birth: 出生日期（人像面）
注意：此字段可能返回 null，表示取不到有效值。
        :type Birth: str
        :param _IdNum: 身份证号（人像面）
注意：此字段可能返回 null，表示取不到有效值。
        :type IdNum: str
        :param _Name: 名字（人像面）
注意：此字段可能返回 null，表示取不到有效值。
        :type Name: str
        :param _Nation: 民族（人像面）
注意：此字段可能返回 null，表示取不到有效值。
        :type Nation: str
        :param _Sex: 性别（人像面）
注意：此字段可能返回 null，表示取不到有效值。
        :type Sex: str
        :param _ValidDate: 证件有效期（国徽面）
注意：此字段可能返回 null，表示取不到有效值。
        :type ValidDate: str
        :param _RequestId: 请求的id
注意：此字段可能返回 null，表示取不到有效值。
        :type RequestId: str
        :param _ErrorCode: 错误码
注意：此字段可能返回 null，表示取不到有效值。
        :type ErrorCode: str
        :param _ErrorMessage: 错误信息
注意：此字段可能返回 null，表示取不到有效值。
        :type ErrorMessage: str
        :param _ImageUrl: 原图地址
        :type ImageUrl: str
        :param _PortraitUrl: 身份证头像照片的地址（人像面）
        :type PortraitUrl: str
        :param _IntErrorCode: 整型错误码
        :type IntErrorCode: int
        """
        self._WarnCodes = None
        self._Address = None
        self._Authority = None
        self._Birth = None
        self._IdNum = None
        self._Name = None
        self._Nation = None
        self._Sex = None
        self._ValidDate = None
        self._RequestId = None
        self._ErrorCode = None
        self._ErrorMessage = None
        self._ImageUrl = None
        self._PortraitUrl = None
        self._IntErrorCode = None

    @property
    def WarnCodes(self):
        r"""警告代码
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of int
        """
        return self._WarnCodes

    @WarnCodes.setter
    def WarnCodes(self, WarnCodes):
        self._WarnCodes = WarnCodes

    @property
    def Address(self):
        r"""地址（人像面）
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Address

    @Address.setter
    def Address(self, Address):
        self._Address = Address

    @property
    def Authority(self):
        r"""发证机关（国徽面）
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Authority

    @Authority.setter
    def Authority(self, Authority):
        self._Authority = Authority

    @property
    def Birth(self):
        r"""出生日期（人像面）
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Birth

    @Birth.setter
    def Birth(self, Birth):
        self._Birth = Birth

    @property
    def IdNum(self):
        r"""身份证号（人像面）
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._IdNum

    @IdNum.setter
    def IdNum(self, IdNum):
        self._IdNum = IdNum

    @property
    def Name(self):
        r"""名字（人像面）
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Nation(self):
        r"""民族（人像面）
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Nation

    @Nation.setter
    def Nation(self, Nation):
        self._Nation = Nation

    @property
    def Sex(self):
        r"""性别（人像面）
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Sex

    @Sex.setter
    def Sex(self, Sex):
        self._Sex = Sex

    @property
    def ValidDate(self):
        r"""证件有效期（国徽面）
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._ValidDate

    @ValidDate.setter
    def ValidDate(self, ValidDate):
        self._ValidDate = ValidDate

    @property
    def RequestId(self):
        r"""请求的id
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId

    @property
    def ErrorCode(self):
        r"""错误码
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._ErrorCode

    @ErrorCode.setter
    def ErrorCode(self, ErrorCode):
        self._ErrorCode = ErrorCode

    @property
    def ErrorMessage(self):
        r"""错误信息
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._ErrorMessage

    @ErrorMessage.setter
    def ErrorMessage(self, ErrorMessage):
        self._ErrorMessage = ErrorMessage

    @property
    def ImageUrl(self):
        r"""原图地址
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def PortraitUrl(self):
        r"""身份证头像照片的地址（人像面）
        :rtype: str
        """
        return self._PortraitUrl

    @PortraitUrl.setter
    def PortraitUrl(self, PortraitUrl):
        self._PortraitUrl = PortraitUrl

    @property
    def IntErrorCode(self):
        r"""整型错误码
        :rtype: int
        """
        return self._IntErrorCode

    @IntErrorCode.setter
    def IntErrorCode(self, IntErrorCode):
        self._IntErrorCode = IntErrorCode


    def _deserialize(self, params):
        self._WarnCodes = params.get("WarnCodes")
        self._Address = params.get("Address")
        self._Authority = params.get("Authority")
        self._Birth = params.get("Birth")
        self._IdNum = params.get("IdNum")
        self._Name = params.get("Name")
        self._Nation = params.get("Nation")
        self._Sex = params.get("Sex")
        self._ValidDate = params.get("ValidDate")
        self._RequestId = params.get("RequestId")
        self._ErrorCode = params.get("ErrorCode")
        self._ErrorMessage = params.get("ErrorMessage")
        self._ImageUrl = params.get("ImageUrl")
        self._PortraitUrl = params.get("PortraitUrl")
        self._IntErrorCode = params.get("IntErrorCode")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class IDCardOCRRequest(AbstractModel):
    r"""IDCardOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: <p>图片的 Base64 值。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。</p>
        :type ImageBase64: str
        :param _ImageUrl: <p>图片的 Url 地址。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。建议图片存储于腾讯云，可保障更高的下载速度和稳定性。</p>
        :type ImageUrl: str
        :param _CardSide: <p>FRONT：身份证有照片的一面（人像面），<br>BACK：身份证有国徽的一面（国徽面），<br>该参数如果不填，将为您自动判断身份证正反面。</p>
        :type CardSide: str
        :param _Config: <p>以下可选字段均为bool 类型，默认false：<br>CropIdCard，身份证照片裁剪（去掉证件外多余的边缘、自动矫正拍摄角度）<br>CropPortrait，人像照片裁剪（自动抠取身份证头像区域）<br>CopyWarn，复印件告警<br>BorderCheckWarn，边框不完整和框内遮挡告警<br>ReshootWarn，屏幕翻拍告警<br>DetectPsWarn，疑似存在PS痕迹告警（CardWarnType参数为 Advanced时同时开启电子身份证、水印告警）<br>TempIdWarn，临时身份证告警<br>InvalidDateWarn，身份证有效日期不合法告警<br>Quality，图片质量分数（评价图片的模糊程度）<br>MultiCardDetect，是否开启正反面同框识别（仅支持二代身份证正反页同框识别或临时身份证正反页同框识别）<br>ReflectWarn，是否开启反光检测<br>SDK 设置方式参考：Config = Json.stringify({&quot;CropIdCard&quot;:true,&quot;CropPortrait&quot;:true})<br>API 3.0 Explorer 设置方式参考：Config = {&quot;CropIdCard&quot;:true,&quot;CropPortrait&quot;:true}</p>
        :type Config: str
        :param _EnableRecognitionRectify: <p>默认值为true，打开识别结果纠正开关。开关开启后，身份证号、出生日期、性别，三个字段会进行矫正补齐，统一结果输出；若关闭此开关，以上三个字段不会进行矫正补齐，保持原始识别结果输出，若原图出现篡改情况，这三个字段的识别结果可能会不统一。</p>
        :type EnableRecognitionRectify: bool
        :param _EnableReflectDetail: <p>默认值为false。</p><p>此开关需要在反光检测开关开启下才会生效（即此开关生效的前提是config入参里的&quot;ReflectWarn&quot;:true），若EnableReflectDetail设置为true，则会返回反光点覆盖区域详情。反光点覆盖区域详情分为四部分：人像照片位置、国徽位置、识别字段位置、其他位置。一个反光点允许覆盖多个区域，且一张图片可能存在多个反光点。</p>
        :type EnableReflectDetail: bool
        :param _EnableDateVerify: <p>用于控制是否开启日期校验，默认值为true，打开会进行日期校验。</p>
        :type EnableDateVerify: bool
        :param _CardWarnType: <p>Basic：使用基础卡证告警能力（含基础PS告警）； Advanced：开启进阶PS告警能力，PS告警效果更佳但需要更长耗时；建议测试对比后选用，默认值为 Basic</p>
        :type CardWarnType: str
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._CardSide = None
        self._Config = None
        self._EnableRecognitionRectify = None
        self._EnableReflectDetail = None
        self._EnableDateVerify = None
        self._CardWarnType = None

    @property
    def ImageBase64(self):
        r"""<p>图片的 Base64 值。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。</p>
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""<p>图片的 Url 地址。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。建议图片存储于腾讯云，可保障更高的下载速度和稳定性。</p>
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def CardSide(self):
        r"""<p>FRONT：身份证有照片的一面（人像面），<br>BACK：身份证有国徽的一面（国徽面），<br>该参数如果不填，将为您自动判断身份证正反面。</p>
        :rtype: str
        """
        return self._CardSide

    @CardSide.setter
    def CardSide(self, CardSide):
        self._CardSide = CardSide

    @property
    def Config(self):
        r"""<p>以下可选字段均为bool 类型，默认false：<br>CropIdCard，身份证照片裁剪（去掉证件外多余的边缘、自动矫正拍摄角度）<br>CropPortrait，人像照片裁剪（自动抠取身份证头像区域）<br>CopyWarn，复印件告警<br>BorderCheckWarn，边框不完整和框内遮挡告警<br>ReshootWarn，屏幕翻拍告警<br>DetectPsWarn，疑似存在PS痕迹告警（CardWarnType参数为 Advanced时同时开启电子身份证、水印告警）<br>TempIdWarn，临时身份证告警<br>InvalidDateWarn，身份证有效日期不合法告警<br>Quality，图片质量分数（评价图片的模糊程度）<br>MultiCardDetect，是否开启正反面同框识别（仅支持二代身份证正反页同框识别或临时身份证正反页同框识别）<br>ReflectWarn，是否开启反光检测<br>SDK 设置方式参考：Config = Json.stringify({&quot;CropIdCard&quot;:true,&quot;CropPortrait&quot;:true})<br>API 3.0 Explorer 设置方式参考：Config = {&quot;CropIdCard&quot;:true,&quot;CropPortrait&quot;:true}</p>
        :rtype: str
        """
        return self._Config

    @Config.setter
    def Config(self, Config):
        self._Config = Config

    @property
    def EnableRecognitionRectify(self):
        r"""<p>默认值为true，打开识别结果纠正开关。开关开启后，身份证号、出生日期、性别，三个字段会进行矫正补齐，统一结果输出；若关闭此开关，以上三个字段不会进行矫正补齐，保持原始识别结果输出，若原图出现篡改情况，这三个字段的识别结果可能会不统一。</p>
        :rtype: bool
        """
        return self._EnableRecognitionRectify

    @EnableRecognitionRectify.setter
    def EnableRecognitionRectify(self, EnableRecognitionRectify):
        self._EnableRecognitionRectify = EnableRecognitionRectify

    @property
    def EnableReflectDetail(self):
        r"""<p>默认值为false。</p><p>此开关需要在反光检测开关开启下才会生效（即此开关生效的前提是config入参里的&quot;ReflectWarn&quot;:true），若EnableReflectDetail设置为true，则会返回反光点覆盖区域详情。反光点覆盖区域详情分为四部分：人像照片位置、国徽位置、识别字段位置、其他位置。一个反光点允许覆盖多个区域，且一张图片可能存在多个反光点。</p>
        :rtype: bool
        """
        return self._EnableReflectDetail

    @EnableReflectDetail.setter
    def EnableReflectDetail(self, EnableReflectDetail):
        self._EnableReflectDetail = EnableReflectDetail

    @property
    def EnableDateVerify(self):
        warnings.warn("parameter `EnableDateVerify` is deprecated", DeprecationWarning) 

        r"""<p>用于控制是否开启日期校验，默认值为true，打开会进行日期校验。</p>
        :rtype: bool
        """
        return self._EnableDateVerify

    @EnableDateVerify.setter
    def EnableDateVerify(self, EnableDateVerify):
        warnings.warn("parameter `EnableDateVerify` is deprecated", DeprecationWarning) 

        self._EnableDateVerify = EnableDateVerify

    @property
    def CardWarnType(self):
        r"""<p>Basic：使用基础卡证告警能力（含基础PS告警）； Advanced：开启进阶PS告警能力，PS告警效果更佳但需要更长耗时；建议测试对比后选用，默认值为 Basic</p>
        :rtype: str
        """
        return self._CardWarnType

    @CardWarnType.setter
    def CardWarnType(self, CardWarnType):
        self._CardWarnType = CardWarnType


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._CardSide = params.get("CardSide")
        self._Config = params.get("Config")
        self._EnableRecognitionRectify = params.get("EnableRecognitionRectify")
        self._EnableReflectDetail = params.get("EnableReflectDetail")
        self._EnableDateVerify = params.get("EnableDateVerify")
        self._CardWarnType = params.get("CardWarnType")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class IDCardOCRResponse(AbstractModel):
    r"""IDCardOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Name: <p>姓名（人像面）</p>
        :type Name: str
        :param _Sex: <p>性别（人像面）</p>
        :type Sex: str
        :param _Nation: <p>民族（人像面）</p>
        :type Nation: str
        :param _Birth: <p>出生日期（人像面）</p>
        :type Birth: str
        :param _Address: <p>地址（人像面）</p>
        :type Address: str
        :param _IdNum: <p>身份证号（人像面）</p>
        :type IdNum: str
        :param _Authority: <p>发证机关（国徽面）</p>
        :type Authority: str
        :param _ValidDate: <p>证件有效期（国徽面）</p>
        :type ValidDate: str
        :param _AdvancedInfo: <p>扩展信息，不请求则不返回，具体输入参考示例3和示例4。<br>IdCard，裁剪后身份证照片的base64编码，请求 Config.CropIdCard 时返回；<br>Portrait，身份证头像照片的base64编码，请求 Config.CropPortrait 时返回；<br>Quality，图片质量分数，请求 Config.Quality 时返回（取值范围：0 ~ 100，分数越低越模糊，建议阈值≥50）;<br>BorderCodeValue，身份证边框不完整告警阈值分数，请求 Config.BorderCheckWarn时返回（取值范围：0 ~ 100，分数越低边框遮挡可能性越低，建议阈值≤50）;<br>WarnInfos，告警信息，Code 告警码列表和释义：<br>-9109 身份证有效日期不合法告警，<br>-9101 身份证边框不完整告警，<br>-9102 身份证复印件告警（黑白及彩色复印件）,<br>-9108 身份证复印件告警（仅黑白复印件），<br>-9103 身份证翻拍告警，<br>-9105 身份证框内遮挡告警，<br>-9104 临时身份证告警，<br>-9106 身份证疑似存在PS痕迹告警，<br>-9107 身份证反光告警，<br>-9110 电子身份证告警，<br>-9111 水印告警（仅CardWarnType参数为Advanced时）</p>
        :type AdvancedInfo: str
        :param _ReflectDetailInfos: <p>反光点覆盖区域详情结果，具体内容请点击左侧链接</p>
        :type ReflectDetailInfos: list of ReflectDetailInfo
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Name = None
        self._Sex = None
        self._Nation = None
        self._Birth = None
        self._Address = None
        self._IdNum = None
        self._Authority = None
        self._ValidDate = None
        self._AdvancedInfo = None
        self._ReflectDetailInfos = None
        self._RequestId = None

    @property
    def Name(self):
        r"""<p>姓名（人像面）</p>
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Sex(self):
        r"""<p>性别（人像面）</p>
        :rtype: str
        """
        return self._Sex

    @Sex.setter
    def Sex(self, Sex):
        self._Sex = Sex

    @property
    def Nation(self):
        r"""<p>民族（人像面）</p>
        :rtype: str
        """
        return self._Nation

    @Nation.setter
    def Nation(self, Nation):
        self._Nation = Nation

    @property
    def Birth(self):
        r"""<p>出生日期（人像面）</p>
        :rtype: str
        """
        return self._Birth

    @Birth.setter
    def Birth(self, Birth):
        self._Birth = Birth

    @property
    def Address(self):
        r"""<p>地址（人像面）</p>
        :rtype: str
        """
        return self._Address

    @Address.setter
    def Address(self, Address):
        self._Address = Address

    @property
    def IdNum(self):
        r"""<p>身份证号（人像面）</p>
        :rtype: str
        """
        return self._IdNum

    @IdNum.setter
    def IdNum(self, IdNum):
        self._IdNum = IdNum

    @property
    def Authority(self):
        r"""<p>发证机关（国徽面）</p>
        :rtype: str
        """
        return self._Authority

    @Authority.setter
    def Authority(self, Authority):
        self._Authority = Authority

    @property
    def ValidDate(self):
        r"""<p>证件有效期（国徽面）</p>
        :rtype: str
        """
        return self._ValidDate

    @ValidDate.setter
    def ValidDate(self, ValidDate):
        self._ValidDate = ValidDate

    @property
    def AdvancedInfo(self):
        r"""<p>扩展信息，不请求则不返回，具体输入参考示例3和示例4。<br>IdCard，裁剪后身份证照片的base64编码，请求 Config.CropIdCard 时返回；<br>Portrait，身份证头像照片的base64编码，请求 Config.CropPortrait 时返回；<br>Quality，图片质量分数，请求 Config.Quality 时返回（取值范围：0 ~ 100，分数越低越模糊，建议阈值≥50）;<br>BorderCodeValue，身份证边框不完整告警阈值分数，请求 Config.BorderCheckWarn时返回（取值范围：0 ~ 100，分数越低边框遮挡可能性越低，建议阈值≤50）;<br>WarnInfos，告警信息，Code 告警码列表和释义：<br>-9109 身份证有效日期不合法告警，<br>-9101 身份证边框不完整告警，<br>-9102 身份证复印件告警（黑白及彩色复印件）,<br>-9108 身份证复印件告警（仅黑白复印件），<br>-9103 身份证翻拍告警，<br>-9105 身份证框内遮挡告警，<br>-9104 临时身份证告警，<br>-9106 身份证疑似存在PS痕迹告警，<br>-9107 身份证反光告警，<br>-9110 电子身份证告警，<br>-9111 水印告警（仅CardWarnType参数为Advanced时）</p>
        :rtype: str
        """
        return self._AdvancedInfo

    @AdvancedInfo.setter
    def AdvancedInfo(self, AdvancedInfo):
        self._AdvancedInfo = AdvancedInfo

    @property
    def ReflectDetailInfos(self):
        r"""<p>反光点覆盖区域详情结果，具体内容请点击左侧链接</p>
        :rtype: list of ReflectDetailInfo
        """
        return self._ReflectDetailInfos

    @ReflectDetailInfos.setter
    def ReflectDetailInfos(self, ReflectDetailInfos):
        self._ReflectDetailInfos = ReflectDetailInfos

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._Name = params.get("Name")
        self._Sex = params.get("Sex")
        self._Nation = params.get("Nation")
        self._Birth = params.get("Birth")
        self._Address = params.get("Address")
        self._IdNum = params.get("IdNum")
        self._Authority = params.get("Authority")
        self._ValidDate = params.get("ValidDate")
        self._AdvancedInfo = params.get("AdvancedInfo")
        if params.get("ReflectDetailInfos") is not None:
            self._ReflectDetailInfos = []
            for item in params.get("ReflectDetailInfos"):
                obj = ReflectDetailInfo()
                obj._deserialize(item)
                self._ReflectDetailInfos.append(obj)
        self._RequestId = params.get("RequestId")


class IDCardResult(AbstractModel):
    r"""IDCardResult

    """

    def __init__(self):
        r"""
        :param _Front: 正面结果
注意：此字段可能返回 null，表示取不到有效值。
        :type Front: :class:`tencentcloud.ocr.v20181119.models.IDCardInfoResult`
        :param _Back: 反面结果
注意：此字段可能返回 null，表示取不到有效值。
        :type Back: :class:`tencentcloud.ocr.v20181119.models.IDCardInfoResult`
        """
        self._Front = None
        self._Back = None

    @property
    def Front(self):
        r"""正面结果
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.IDCardInfoResult`
        """
        return self._Front

    @Front.setter
    def Front(self, Front):
        self._Front = Front

    @property
    def Back(self):
        r"""反面结果
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.IDCardInfoResult`
        """
        return self._Back

    @Back.setter
    def Back(self, Back):
        self._Back = Back


    def _deserialize(self, params):
        if params.get("Front") is not None:
            self._Front = IDCardInfoResult()
            self._Front._deserialize(params.get("Front"))
        if params.get("Back") is not None:
            self._Back = IDCardInfoResult()
            self._Back._deserialize(params.get("Back"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ImageCoordinates(AbstractModel):
    r"""头像位置坐标

    """

    def __init__(self):
        r"""
        :param _X: 头像左上角横坐标
注意：此字段可能返回 null，表示取不到有效值。
        :type X: int
        :param _Y: 头像左上角纵坐标
注意：此字段可能返回 null，表示取不到有效值。
        :type Y: int
        :param _Width: 头像框宽度
注意：此字段可能返回 null，表示取不到有效值。
        :type Width: int
        :param _Height: 头像框高度
注意：此字段可能返回 null，表示取不到有效值。
        :type Height: int
        """
        self._X = None
        self._Y = None
        self._Width = None
        self._Height = None

    @property
    def X(self):
        r"""头像左上角横坐标
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._X

    @X.setter
    def X(self, X):
        self._X = X

    @property
    def Y(self):
        r"""头像左上角纵坐标
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._Y

    @Y.setter
    def Y(self, Y):
        self._Y = Y

    @property
    def Width(self):
        r"""头像框宽度
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._Width

    @Width.setter
    def Width(self, Width):
        self._Width = Width

    @property
    def Height(self):
        r"""头像框高度
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._Height

    @Height.setter
    def Height(self, Height):
        self._Height = Height


    def _deserialize(self, params):
        self._X = params.get("X")
        self._Y = params.get("Y")
        self._Width = params.get("Width")
        self._Height = params.get("Height")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ImageEnhancementRequest(AbstractModel):
    r"""ImageEnhancement请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        :param _ReturnImage: 默认为空，ReturnImage的取值以及含义如下：
“preprocess”: 返回预处理后的图片数据
“origin”：返回原图片数据
" ":不返回图片数据
        :type ReturnImage: str
        :param _TaskType: 默认值为1，指定图像增强方法：
1：切边增强
2：弯曲矫正
202：黑白模式
204：提亮模式
205：灰度模式
207：省墨模式
208：文字锐化（适合非彩色图片）
300:自动增强（自动从301～304选择任务类型）
301：去摩尔纹
302：去除阴影
303：去除模糊 
304：去除过曝
        :type TaskType: int
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._ReturnImage = None
        self._TaskType = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def ReturnImage(self):
        r"""默认为空，ReturnImage的取值以及含义如下：
“preprocess”: 返回预处理后的图片数据
“origin”：返回原图片数据
" ":不返回图片数据
        :rtype: str
        """
        return self._ReturnImage

    @ReturnImage.setter
    def ReturnImage(self, ReturnImage):
        self._ReturnImage = ReturnImage

    @property
    def TaskType(self):
        r"""默认值为1，指定图像增强方法：
1：切边增强
2：弯曲矫正
202：黑白模式
204：提亮模式
205：灰度模式
207：省墨模式
208：文字锐化（适合非彩色图片）
300:自动增强（自动从301～304选择任务类型）
301：去摩尔纹
302：去除阴影
303：去除模糊 
304：去除过曝
        :rtype: int
        """
        return self._TaskType

    @TaskType.setter
    def TaskType(self, TaskType):
        self._TaskType = TaskType


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._ReturnImage = params.get("ReturnImage")
        self._TaskType = params.get("TaskType")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ImageEnhancementResponse(AbstractModel):
    r"""ImageEnhancement返回参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageTag: 图片数据标识：
“origin”：原图
“preprocess”:预处理后的图
        :type ImageTag: str
        :param _Image: 图片数据，返回预处理后图像或原图像base64字符
        :type Image: str
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._ImageTag = None
        self._Image = None
        self._RequestId = None

    @property
    def ImageTag(self):
        r"""图片数据标识：
“origin”：原图
“preprocess”:预处理后的图
        :rtype: str
        """
        return self._ImageTag

    @ImageTag.setter
    def ImageTag(self, ImageTag):
        self._ImageTag = ImageTag

    @property
    def Image(self):
        r"""图片数据，返回预处理后图像或原图像base64字符
        :rtype: str
        """
        return self._Image

    @Image.setter
    def Image(self, Image):
        self._Image = Image

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._ImageTag = params.get("ImageTag")
        self._Image = params.get("Image")
        self._RequestId = params.get("RequestId")


class ImageSize(AbstractModel):
    r"""图片分辨率信息

    """

    def __init__(self):
        r"""
        :param _Width: 图片的宽，单位像素
注意：此字段可能返回 null，表示取不到有效值。
        :type Width: int
        :param _Height: 图片的高，单位像素
注意：此字段可能返回 null，表示取不到有效值。
        :type Height: int
        """
        self._Width = None
        self._Height = None

    @property
    def Width(self):
        r"""图片的宽，单位像素
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._Width

    @Width.setter
    def Width(self, Width):
        self._Width = Width

    @property
    def Height(self):
        r"""图片的高，单位像素
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._Height

    @Height.setter
    def Height(self, Height):
        self._Height = Height


    def _deserialize(self, params):
        self._Width = params.get("Width")
        self._Height = params.get("Height")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class InsuranceBillInfo(AbstractModel):
    r"""保险单据信息

    """

    def __init__(self):
        r"""
        :param _Name: 识别出的字段名称(关键字)，支持以下字段：
【病案首页】
姓名、性别、出生日期、出院诊断、疾病编码、入院病情等。
【费用清单】
医疗参保人员类别、身份证号、入院方式、结账日期、项目、金额等。
【结算单】
名称、单价、数量、金额、医保内、医保外等。
【医疗发票】
姓名、性别、住院时间、收费项目、金额、合计等。
        :type Name: str
        :param _Value: 识别出的字段名称对应的值，也就是字段Name对应的字符串结果。
        :type Value: str
        """
        self._Name = None
        self._Value = None

    @property
    def Name(self):
        r"""识别出的字段名称(关键字)，支持以下字段：
【病案首页】
姓名、性别、出生日期、出院诊断、疾病编码、入院病情等。
【费用清单】
医疗参保人员类别、身份证号、入院方式、结账日期、项目、金额等。
【结算单】
名称、单价、数量、金额、医保内、医保外等。
【医疗发票】
姓名、性别、住院时间、收费项目、金额、合计等。
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Value(self):
        r"""识别出的字段名称对应的值，也就是字段Name对应的字符串结果。
        :rtype: str
        """
        return self._Value

    @Value.setter
    def Value(self, Value):
        self._Value = Value


    def _deserialize(self, params):
        self._Name = params.get("Name")
        self._Value = params.get("Value")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class InsuranceBillOCRRequest(AbstractModel):
    r"""InsuranceBillOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        """
        self._ImageBase64 = None
        self._ImageUrl = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class InsuranceBillOCRResponse(AbstractModel):
    r"""InsuranceBillOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _InsuranceBillInfos: 保险单据识别结果，具体内容请点击左侧链接。
        :type InsuranceBillInfos: list of InsuranceBillInfo
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._InsuranceBillInfos = None
        self._RequestId = None

    @property
    def InsuranceBillInfos(self):
        r"""保险单据识别结果，具体内容请点击左侧链接。
        :rtype: list of InsuranceBillInfo
        """
        return self._InsuranceBillInfos

    @InsuranceBillInfos.setter
    def InsuranceBillInfos(self, InsuranceBillInfos):
        self._InsuranceBillInfos = InsuranceBillInfos

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("InsuranceBillInfos") is not None:
            self._InsuranceBillInfos = []
            for item in params.get("InsuranceBillInfos"):
                obj = InsuranceBillInfo()
                obj._deserialize(item)
                self._InsuranceBillInfos.append(obj)
        self._RequestId = params.get("RequestId")


class InvoiceDetectInfo(AbstractModel):
    r"""票据检测结果

    """

    def __init__(self):
        r"""
        :param _Angle: 识别出的图片在混贴票据图片中的旋转角度。
        :type Angle: float
        :param _Type: 识别出的图片所属的票据类型。
-1：未知类型
0：出租车发票
1：定额发票
2：火车票
3：增值税发票
4：客运限额发票
5：机票行程单
6：酒店账单
7：完税证明
8：通用机打发票
9：汽车票
10：轮船票
11：增值税发票（卷票 ）
12：购车发票
13：过路过桥费发票
14：购物小票
        :type Type: int
        :param _Rect: 识别出的图片在混贴票据图片中的位置信息。与Angel结合可以得出原图位置，组成RotatedRect((X+0.5\*Width,Y+0.5\*Height), (Width, Height), Angle)，详情可参考OpenCV文档。
        :type Rect: :class:`tencentcloud.ocr.v20181119.models.Rect`
        :param _Image: 入参 ReturnImage 为 True 时返回 Base64 编码后的图片。
注意：此字段可能返回 null，表示取不到有效值。
        :type Image: str
        """
        self._Angle = None
        self._Type = None
        self._Rect = None
        self._Image = None

    @property
    def Angle(self):
        r"""识别出的图片在混贴票据图片中的旋转角度。
        :rtype: float
        """
        return self._Angle

    @Angle.setter
    def Angle(self, Angle):
        self._Angle = Angle

    @property
    def Type(self):
        r"""识别出的图片所属的票据类型。
-1：未知类型
0：出租车发票
1：定额发票
2：火车票
3：增值税发票
4：客运限额发票
5：机票行程单
6：酒店账单
7：完税证明
8：通用机打发票
9：汽车票
10：轮船票
11：增值税发票（卷票 ）
12：购车发票
13：过路过桥费发票
14：购物小票
        :rtype: int
        """
        return self._Type

    @Type.setter
    def Type(self, Type):
        self._Type = Type

    @property
    def Rect(self):
        r"""识别出的图片在混贴票据图片中的位置信息。与Angel结合可以得出原图位置，组成RotatedRect((X+0.5\*Width,Y+0.5\*Height), (Width, Height), Angle)，详情可参考OpenCV文档。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Rect`
        """
        return self._Rect

    @Rect.setter
    def Rect(self, Rect):
        self._Rect = Rect

    @property
    def Image(self):
        r"""入参 ReturnImage 为 True 时返回 Base64 编码后的图片。
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Image

    @Image.setter
    def Image(self, Image):
        self._Image = Image


    def _deserialize(self, params):
        self._Angle = params.get("Angle")
        self._Type = params.get("Type")
        if params.get("Rect") is not None:
            self._Rect = Rect()
            self._Rect._deserialize(params.get("Rect"))
        self._Image = params.get("Image")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class InvoiceItem(AbstractModel):
    r"""混贴票据单张发票识别信息

    """

    def __init__(self):
        r"""
        :param _Code: 识别结果。
OK：表示识别成功；FailedOperation.UnsupportedInvoice：表示不支持识别；
FailedOperation.UnKnowError：表示识别失败；
其它错误码见各个票据接口的定义。
        :type Code: str
        :param _Type: 识别出的图片所属的票据类型。
-1：未知类型
0：出租车发票
1：定额发票
2：火车票
3：增值税发票
5：机票行程单
8：通用机打发票
9：汽车票
10：轮船票
11：增值税发票（卷票）
12：购车发票
13：过路过桥费发票
15：非税发票
16：全电发票
17：医疗发票
18：完税凭证
19：海关缴款书
20：银行回单
        :type Type: int
        :param _Polygon: 该发票在原图片中的四点坐标。
        :type Polygon: :class:`tencentcloud.ocr.v20181119.models.Polygon`
        :param _Angle: 识别出切图后各图片的旋转角度。
        :type Angle: float
        :param _SingleInvoiceInfos: 识别到的内容。
        :type SingleInvoiceInfos: :class:`tencentcloud.ocr.v20181119.models.SingleInvoiceItem`
        :param _Page: 发票处于识别图片或PDF文件中的页码，默认从1开始。
        :type Page: int
        :param _SubType: 发票详细类型，详见票据识别（高级版）接口文档说明中 SubType 返回值说明
        :type SubType: str
        :param _TypeDescription: 发票类型描述，详见票据识别（高级版）接口文档说明中 TypeDescription  返回值说明
        :type TypeDescription: str
        :param _CutImage: 切割单图文件，Base64编码后的切图后的图片文件，开启 EnableCutImage 后进行返回
        :type CutImage: str
        :param _SubTypeDescription: 发票详细类型描述，详见上方 SubType 返回值说明
        :type SubTypeDescription: str
        :param _ItemPolygon: 该发票中所有字段坐标信息。包括字段英文名称、字段值所在位置四点坐标、字段所属行号，具体内容请点击左侧链接。
字段在原始图的坐标可以根据Polygon转换得出。
        :type ItemPolygon: list of ItemPolygonInfo
        :param _QRCode: 二维码数据。
        :type QRCode: str
        :param _InvoiceSealInfo: 印章信息
        :type InvoiceSealInfo: :class:`tencentcloud.ocr.v20181119.models.InvoiceSealInfo`
        """
        self._Code = None
        self._Type = None
        self._Polygon = None
        self._Angle = None
        self._SingleInvoiceInfos = None
        self._Page = None
        self._SubType = None
        self._TypeDescription = None
        self._CutImage = None
        self._SubTypeDescription = None
        self._ItemPolygon = None
        self._QRCode = None
        self._InvoiceSealInfo = None

    @property
    def Code(self):
        r"""识别结果。
OK：表示识别成功；FailedOperation.UnsupportedInvoice：表示不支持识别；
FailedOperation.UnKnowError：表示识别失败；
其它错误码见各个票据接口的定义。
        :rtype: str
        """
        return self._Code

    @Code.setter
    def Code(self, Code):
        self._Code = Code

    @property
    def Type(self):
        r"""识别出的图片所属的票据类型。
-1：未知类型
0：出租车发票
1：定额发票
2：火车票
3：增值税发票
5：机票行程单
8：通用机打发票
9：汽车票
10：轮船票
11：增值税发票（卷票）
12：购车发票
13：过路过桥费发票
15：非税发票
16：全电发票
17：医疗发票
18：完税凭证
19：海关缴款书
20：银行回单
        :rtype: int
        """
        return self._Type

    @Type.setter
    def Type(self, Type):
        self._Type = Type

    @property
    def Polygon(self):
        r"""该发票在原图片中的四点坐标。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Polygon`
        """
        return self._Polygon

    @Polygon.setter
    def Polygon(self, Polygon):
        self._Polygon = Polygon

    @property
    def Angle(self):
        r"""识别出切图后各图片的旋转角度。
        :rtype: float
        """
        return self._Angle

    @Angle.setter
    def Angle(self, Angle):
        self._Angle = Angle

    @property
    def SingleInvoiceInfos(self):
        r"""识别到的内容。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.SingleInvoiceItem`
        """
        return self._SingleInvoiceInfos

    @SingleInvoiceInfos.setter
    def SingleInvoiceInfos(self, SingleInvoiceInfos):
        self._SingleInvoiceInfos = SingleInvoiceInfos

    @property
    def Page(self):
        r"""发票处于识别图片或PDF文件中的页码，默认从1开始。
        :rtype: int
        """
        return self._Page

    @Page.setter
    def Page(self, Page):
        self._Page = Page

    @property
    def SubType(self):
        r"""发票详细类型，详见票据识别（高级版）接口文档说明中 SubType 返回值说明
        :rtype: str
        """
        return self._SubType

    @SubType.setter
    def SubType(self, SubType):
        self._SubType = SubType

    @property
    def TypeDescription(self):
        r"""发票类型描述，详见票据识别（高级版）接口文档说明中 TypeDescription  返回值说明
        :rtype: str
        """
        return self._TypeDescription

    @TypeDescription.setter
    def TypeDescription(self, TypeDescription):
        self._TypeDescription = TypeDescription

    @property
    def CutImage(self):
        r"""切割单图文件，Base64编码后的切图后的图片文件，开启 EnableCutImage 后进行返回
        :rtype: str
        """
        return self._CutImage

    @CutImage.setter
    def CutImage(self, CutImage):
        self._CutImage = CutImage

    @property
    def SubTypeDescription(self):
        r"""发票详细类型描述，详见上方 SubType 返回值说明
        :rtype: str
        """
        return self._SubTypeDescription

    @SubTypeDescription.setter
    def SubTypeDescription(self, SubTypeDescription):
        self._SubTypeDescription = SubTypeDescription

    @property
    def ItemPolygon(self):
        r"""该发票中所有字段坐标信息。包括字段英文名称、字段值所在位置四点坐标、字段所属行号，具体内容请点击左侧链接。
字段在原始图的坐标可以根据Polygon转换得出。
        :rtype: list of ItemPolygonInfo
        """
        return self._ItemPolygon

    @ItemPolygon.setter
    def ItemPolygon(self, ItemPolygon):
        self._ItemPolygon = ItemPolygon

    @property
    def QRCode(self):
        r"""二维码数据。
        :rtype: str
        """
        return self._QRCode

    @QRCode.setter
    def QRCode(self, QRCode):
        self._QRCode = QRCode

    @property
    def InvoiceSealInfo(self):
        r"""印章信息
        :rtype: :class:`tencentcloud.ocr.v20181119.models.InvoiceSealInfo`
        """
        return self._InvoiceSealInfo

    @InvoiceSealInfo.setter
    def InvoiceSealInfo(self, InvoiceSealInfo):
        self._InvoiceSealInfo = InvoiceSealInfo


    def _deserialize(self, params):
        self._Code = params.get("Code")
        self._Type = params.get("Type")
        if params.get("Polygon") is not None:
            self._Polygon = Polygon()
            self._Polygon._deserialize(params.get("Polygon"))
        self._Angle = params.get("Angle")
        if params.get("SingleInvoiceInfos") is not None:
            self._SingleInvoiceInfos = SingleInvoiceItem()
            self._SingleInvoiceInfos._deserialize(params.get("SingleInvoiceInfos"))
        self._Page = params.get("Page")
        self._SubType = params.get("SubType")
        self._TypeDescription = params.get("TypeDescription")
        self._CutImage = params.get("CutImage")
        self._SubTypeDescription = params.get("SubTypeDescription")
        if params.get("ItemPolygon") is not None:
            self._ItemPolygon = []
            for item in params.get("ItemPolygon"):
                obj = ItemPolygonInfo()
                obj._deserialize(item)
                self._ItemPolygon.append(obj)
        self._QRCode = params.get("QRCode")
        if params.get("InvoiceSealInfo") is not None:
            self._InvoiceSealInfo = InvoiceSealInfo()
            self._InvoiceSealInfo._deserialize(params.get("InvoiceSealInfo"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class InvoiceSealInfo(AbstractModel):
    r"""印章信息

    """

    def __init__(self):
        r"""
        :param _CompanySealMark: 是否有公司印章（0：没有，1：有）
        :type CompanySealMark: str
        :param _SupervisionSealMark: 是否有监制印章（0：没有，1：有）
        :type SupervisionSealMark: str
        :param _CompanySealMarkInfo: 公司印章信息
        :type CompanySealMarkInfo: list of str
        :param _SupervisionSealMarkInfo: 监制印章信息
        :type SupervisionSealMarkInfo: list of str
        """
        self._CompanySealMark = None
        self._SupervisionSealMark = None
        self._CompanySealMarkInfo = None
        self._SupervisionSealMarkInfo = None

    @property
    def CompanySealMark(self):
        r"""是否有公司印章（0：没有，1：有）
        :rtype: str
        """
        return self._CompanySealMark

    @CompanySealMark.setter
    def CompanySealMark(self, CompanySealMark):
        self._CompanySealMark = CompanySealMark

    @property
    def SupervisionSealMark(self):
        r"""是否有监制印章（0：没有，1：有）
        :rtype: str
        """
        return self._SupervisionSealMark

    @SupervisionSealMark.setter
    def SupervisionSealMark(self, SupervisionSealMark):
        self._SupervisionSealMark = SupervisionSealMark

    @property
    def CompanySealMarkInfo(self):
        r"""公司印章信息
        :rtype: list of str
        """
        return self._CompanySealMarkInfo

    @CompanySealMarkInfo.setter
    def CompanySealMarkInfo(self, CompanySealMarkInfo):
        self._CompanySealMarkInfo = CompanySealMarkInfo

    @property
    def SupervisionSealMarkInfo(self):
        r"""监制印章信息
        :rtype: list of str
        """
        return self._SupervisionSealMarkInfo

    @SupervisionSealMarkInfo.setter
    def SupervisionSealMarkInfo(self, SupervisionSealMarkInfo):
        self._SupervisionSealMarkInfo = SupervisionSealMarkInfo


    def _deserialize(self, params):
        self._CompanySealMark = params.get("CompanySealMark")
        self._SupervisionSealMark = params.get("SupervisionSealMark")
        self._CompanySealMarkInfo = params.get("CompanySealMarkInfo")
        self._SupervisionSealMarkInfo = params.get("SupervisionSealMarkInfo")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ItemCoord(AbstractModel):
    r"""文本行在旋转纠正之后的图像中的像素坐标，表示为（左上角x, 左上角y，宽width，高height）

    """

    def __init__(self):
        r"""
        :param _X: <p>左上角x。</p>
        :type X: int
        :param _Y: <p>左上角y。</p>
        :type Y: int
        :param _Width: <p>宽width。</p>
        :type Width: int
        :param _Height: <p>高height。</p>
        :type Height: int
        """
        self._X = None
        self._Y = None
        self._Width = None
        self._Height = None

    @property
    def X(self):
        r"""<p>左上角x。</p>
        :rtype: int
        """
        return self._X

    @X.setter
    def X(self, X):
        self._X = X

    @property
    def Y(self):
        r"""<p>左上角y。</p>
        :rtype: int
        """
        return self._Y

    @Y.setter
    def Y(self, Y):
        self._Y = Y

    @property
    def Width(self):
        r"""<p>宽width。</p>
        :rtype: int
        """
        return self._Width

    @Width.setter
    def Width(self, Width):
        self._Width = Width

    @property
    def Height(self):
        r"""<p>高height。</p>
        :rtype: int
        """
        return self._Height

    @Height.setter
    def Height(self, Height):
        self._Height = Height


    def _deserialize(self, params):
        self._X = params.get("X")
        self._Y = params.get("Y")
        self._Width = params.get("Width")
        self._Height = params.get("Height")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ItemInfo(AbstractModel):
    r"""文档智能元素组

    """

    def __init__(self):
        r"""
        :param _Key: key信息组
注意：此字段可能返回 null，表示取不到有效值。
        :type Key: :class:`tencentcloud.ocr.v20181119.models.Key`
        :param _Value: Value信息组
注意：此字段可能返回 null，表示取不到有效值。
        :type Value: :class:`tencentcloud.ocr.v20181119.models.Value`
        """
        self._Key = None
        self._Value = None

    @property
    def Key(self):
        r"""key信息组
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Key`
        """
        return self._Key

    @Key.setter
    def Key(self, Key):
        self._Key = Key

    @property
    def Value(self):
        r"""Value信息组
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Value`
        """
        return self._Value

    @Value.setter
    def Value(self, Value):
        self._Value = Value


    def _deserialize(self, params):
        if params.get("Key") is not None:
            self._Key = Key()
            self._Key._deserialize(params.get("Key"))
        if params.get("Value") is not None:
            self._Value = Value()
            self._Value._deserialize(params.get("Value"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ItemNames(AbstractModel):
    r"""自定义抽取需要的字段名称、字段类型、字段提示词。

    """

    def __init__(self):
        r"""
        :param _KeyName: 自定义抽取功能需返回的字段名称。
        :type KeyName: str
        :param _KeyType: 默认 0；0表示kv对  1表示 表格字段。

        :type KeyType: int
        :param _KeyPrompt: 抽取字段的描述内容。

        :type KeyPrompt: str
        """
        self._KeyName = None
        self._KeyType = None
        self._KeyPrompt = None

    @property
    def KeyName(self):
        r"""自定义抽取功能需返回的字段名称。
        :rtype: str
        """
        return self._KeyName

    @KeyName.setter
    def KeyName(self, KeyName):
        self._KeyName = KeyName

    @property
    def KeyType(self):
        r"""默认 0；0表示kv对  1表示 表格字段。

        :rtype: int
        """
        return self._KeyType

    @KeyType.setter
    def KeyType(self, KeyType):
        self._KeyType = KeyType

    @property
    def KeyPrompt(self):
        r"""抽取字段的描述内容。

        :rtype: str
        """
        return self._KeyPrompt

    @KeyPrompt.setter
    def KeyPrompt(self, KeyPrompt):
        self._KeyPrompt = KeyPrompt


    def _deserialize(self, params):
        self._KeyName = params.get("KeyName")
        self._KeyType = params.get("KeyType")
        self._KeyPrompt = params.get("KeyPrompt")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ItemPolygonInfo(AbstractModel):
    r"""发票字段坐标信息。包括字段英文名称、字段值所在位置的四点坐标、字段所属行号，具体内容请点击左侧链接。

    """

    def __init__(self):
        r"""
        :param _Key: 发票的英文字段名称（如Title）
        :type Key: str
        :param _Polygon: 字段值所在位置的四点坐标
        :type Polygon: :class:`tencentcloud.ocr.v20181119.models.Polygon`
        :param _Row: 字段属于第几行，用于相同字段的排版，如发票明细表格项目，普通字段使用默认值为-1，表示无列排版。
        :type Row: int
        """
        self._Key = None
        self._Polygon = None
        self._Row = None

    @property
    def Key(self):
        r"""发票的英文字段名称（如Title）
        :rtype: str
        """
        return self._Key

    @Key.setter
    def Key(self, Key):
        self._Key = Key

    @property
    def Polygon(self):
        r"""字段值所在位置的四点坐标
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Polygon`
        """
        return self._Polygon

    @Polygon.setter
    def Polygon(self, Polygon):
        self._Polygon = Polygon

    @property
    def Row(self):
        r"""字段属于第几行，用于相同字段的排版，如发票明细表格项目，普通字段使用默认值为-1，表示无列排版。
        :rtype: int
        """
        return self._Row

    @Row.setter
    def Row(self, Row):
        self._Row = Row


    def _deserialize(self, params):
        self._Key = params.get("Key")
        if params.get("Polygon") is not None:
            self._Polygon = Polygon()
            self._Polygon._deserialize(params.get("Polygon"))
        self._Row = params.get("Row")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class Key(AbstractModel):
    r"""key信息组

    """

    def __init__(self):
        r"""
        :param _AutoName: 自动识别的字段名称
        :type AutoName: str
        :param _ConfigName: 定义的字段名称（传key的名称）
注意：此字段可能返回 null，表示取不到有效值。
        :type ConfigName: str
        """
        self._AutoName = None
        self._ConfigName = None

    @property
    def AutoName(self):
        r"""自动识别的字段名称
        :rtype: str
        """
        return self._AutoName

    @AutoName.setter
    def AutoName(self, AutoName):
        self._AutoName = AutoName

    @property
    def ConfigName(self):
        r"""定义的字段名称（传key的名称）
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._ConfigName

    @ConfigName.setter
    def ConfigName(self, ConfigName):
        self._ConfigName = ConfigName


    def _deserialize(self, params):
        self._AutoName = params.get("AutoName")
        self._ConfigName = params.get("ConfigName")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class LicensePlateInfo(AbstractModel):
    r"""全部车牌信息

    """

    def __init__(self):
        r"""
        :param _Number: 识别出的车牌号码。
        :type Number: str
        :param _Confidence: 置信度，0 - 100 之间。
        :type Confidence: int
        :param _Rect: 文本行在原图片中的像素坐标框。
        :type Rect: :class:`tencentcloud.ocr.v20181119.models.Rect`
        :param _Color: 识别出的车牌颜色，目前支持颜色包括 “白”、“黑”、“蓝”、“绿“、“黄”、“黄绿”、“临牌”、“喷漆”、“其它”。
        :type Color: str
        :param _LicensePlateCategory: 车牌类别， 如： 实体车牌、非实体车牌
        :type LicensePlateCategory: str
        """
        self._Number = None
        self._Confidence = None
        self._Rect = None
        self._Color = None
        self._LicensePlateCategory = None

    @property
    def Number(self):
        r"""识别出的车牌号码。
        :rtype: str
        """
        return self._Number

    @Number.setter
    def Number(self, Number):
        self._Number = Number

    @property
    def Confidence(self):
        r"""置信度，0 - 100 之间。
        :rtype: int
        """
        return self._Confidence

    @Confidence.setter
    def Confidence(self, Confidence):
        self._Confidence = Confidence

    @property
    def Rect(self):
        r"""文本行在原图片中的像素坐标框。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Rect`
        """
        return self._Rect

    @Rect.setter
    def Rect(self, Rect):
        self._Rect = Rect

    @property
    def Color(self):
        r"""识别出的车牌颜色，目前支持颜色包括 “白”、“黑”、“蓝”、“绿“、“黄”、“黄绿”、“临牌”、“喷漆”、“其它”。
        :rtype: str
        """
        return self._Color

    @Color.setter
    def Color(self, Color):
        self._Color = Color

    @property
    def LicensePlateCategory(self):
        r"""车牌类别， 如： 实体车牌、非实体车牌
        :rtype: str
        """
        return self._LicensePlateCategory

    @LicensePlateCategory.setter
    def LicensePlateCategory(self, LicensePlateCategory):
        self._LicensePlateCategory = LicensePlateCategory


    def _deserialize(self, params):
        self._Number = params.get("Number")
        self._Confidence = params.get("Confidence")
        if params.get("Rect") is not None:
            self._Rect = Rect()
            self._Rect._deserialize(params.get("Rect"))
        self._Color = params.get("Color")
        self._LicensePlateCategory = params.get("LicensePlateCategory")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class LicensePlateOCRRequest(AbstractModel):
    r"""LicensePlateOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        """
        self._ImageBase64 = None
        self._ImageUrl = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class LicensePlateOCRResponse(AbstractModel):
    r"""LicensePlateOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Number: 识别出的车牌号码。
        :type Number: str
        :param _Confidence: 置信度，0 - 100 之间。
        :type Confidence: int
        :param _Rect: 文本行在原图片中的像素坐标框。
        :type Rect: :class:`tencentcloud.ocr.v20181119.models.Rect`
        :param _Color: 识别出的车牌颜色，目前支持颜色包括 “白”、“黑”、“蓝”、“绿”、“黄”、“黄绿”、“临牌”、“喷漆”、“其它”。
        :type Color: str
        :param _LicensePlateInfos: 全部车牌信息。
        :type LicensePlateInfos: list of LicensePlateInfo
        :param _LicensePlateCategory: 车牌类别， 如： 实体车牌、非实体车牌 示例值：实体车牌
        :type LicensePlateCategory: str
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Number = None
        self._Confidence = None
        self._Rect = None
        self._Color = None
        self._LicensePlateInfos = None
        self._LicensePlateCategory = None
        self._RequestId = None

    @property
    def Number(self):
        r"""识别出的车牌号码。
        :rtype: str
        """
        return self._Number

    @Number.setter
    def Number(self, Number):
        self._Number = Number

    @property
    def Confidence(self):
        r"""置信度，0 - 100 之间。
        :rtype: int
        """
        return self._Confidence

    @Confidence.setter
    def Confidence(self, Confidence):
        self._Confidence = Confidence

    @property
    def Rect(self):
        r"""文本行在原图片中的像素坐标框。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Rect`
        """
        return self._Rect

    @Rect.setter
    def Rect(self, Rect):
        self._Rect = Rect

    @property
    def Color(self):
        r"""识别出的车牌颜色，目前支持颜色包括 “白”、“黑”、“蓝”、“绿”、“黄”、“黄绿”、“临牌”、“喷漆”、“其它”。
        :rtype: str
        """
        return self._Color

    @Color.setter
    def Color(self, Color):
        self._Color = Color

    @property
    def LicensePlateInfos(self):
        r"""全部车牌信息。
        :rtype: list of LicensePlateInfo
        """
        return self._LicensePlateInfos

    @LicensePlateInfos.setter
    def LicensePlateInfos(self, LicensePlateInfos):
        self._LicensePlateInfos = LicensePlateInfos

    @property
    def LicensePlateCategory(self):
        r"""车牌类别， 如： 实体车牌、非实体车牌 示例值：实体车牌
        :rtype: str
        """
        return self._LicensePlateCategory

    @LicensePlateCategory.setter
    def LicensePlateCategory(self, LicensePlateCategory):
        self._LicensePlateCategory = LicensePlateCategory

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._Number = params.get("Number")
        self._Confidence = params.get("Confidence")
        if params.get("Rect") is not None:
            self._Rect = Rect()
            self._Rect._deserialize(params.get("Rect"))
        self._Color = params.get("Color")
        if params.get("LicensePlateInfos") is not None:
            self._LicensePlateInfos = []
            for item in params.get("LicensePlateInfos"):
                obj = LicensePlateInfo()
                obj._deserialize(item)
                self._LicensePlateInfos.append(obj)
        self._LicensePlateCategory = params.get("LicensePlateCategory")
        self._RequestId = params.get("RequestId")


class LineInfo(AbstractModel):
    r"""按行输出，行序号

    """

    def __init__(self):
        r"""
        :param _Lines: 每行的一个元素
        :type Lines: list of ItemInfo
        """
        self._Lines = None

    @property
    def Lines(self):
        r"""每行的一个元素
        :rtype: list of ItemInfo
        """
        return self._Lines

    @Lines.setter
    def Lines(self, Lines):
        self._Lines = Lines


    def _deserialize(self, params):
        if params.get("Lines") is not None:
            self._Lines = []
            for item in params.get("Lines"):
                obj = ItemInfo()
                obj._deserialize(item)
                self._Lines.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ListInfo(AbstractModel):
    r"""用于展示结构化提取出的结果与输入给模型的提示词和模型的输出

    """

    def __init__(self):
        r"""
        :param _QueryInfo: <p>推理任务的完整提示词。注：仅当QueryType=1/2/3时有效，否则返回为null。</p>
        :type QueryInfo: str
        :param _Answer: <p>根据QueryType对应任务的返回内容。注：仅当QueryType=1/2/3时有效，其他情况为null。</p>
        :type Answer: str
        :param _ExtractFields: <p>结构化提取结果。注：仅当QueryType=4时有效，否则返回null。</p>
        :type ExtractFields: list of FieldsInfo
        :param _TextDetections: <p>检测到的文本信息，包括内容、坐标以及旋转纠正后的坐标等，具体内容请参见 TextDetection。注：仅当QueryType=0时TextDetections不为空，否则返回null。</p>
        :type TextDetections: list of TextDetection
        """
        self._QueryInfo = None
        self._Answer = None
        self._ExtractFields = None
        self._TextDetections = None

    @property
    def QueryInfo(self):
        r"""<p>推理任务的完整提示词。注：仅当QueryType=1/2/3时有效，否则返回为null。</p>
        :rtype: str
        """
        return self._QueryInfo

    @QueryInfo.setter
    def QueryInfo(self, QueryInfo):
        self._QueryInfo = QueryInfo

    @property
    def Answer(self):
        r"""<p>根据QueryType对应任务的返回内容。注：仅当QueryType=1/2/3时有效，其他情况为null。</p>
        :rtype: str
        """
        return self._Answer

    @Answer.setter
    def Answer(self, Answer):
        self._Answer = Answer

    @property
    def ExtractFields(self):
        r"""<p>结构化提取结果。注：仅当QueryType=4时有效，否则返回null。</p>
        :rtype: list of FieldsInfo
        """
        return self._ExtractFields

    @ExtractFields.setter
    def ExtractFields(self, ExtractFields):
        self._ExtractFields = ExtractFields

    @property
    def TextDetections(self):
        r"""<p>检测到的文本信息，包括内容、坐标以及旋转纠正后的坐标等，具体内容请参见 TextDetection。注：仅当QueryType=0时TextDetections不为空，否则返回null。</p>
        :rtype: list of TextDetection
        """
        return self._TextDetections

    @TextDetections.setter
    def TextDetections(self, TextDetections):
        self._TextDetections = TextDetections


    def _deserialize(self, params):
        self._QueryInfo = params.get("QueryInfo")
        self._Answer = params.get("Answer")
        if params.get("ExtractFields") is not None:
            self._ExtractFields = []
            for item in params.get("ExtractFields"):
                obj = FieldsInfo()
                obj._deserialize(item)
                self._ExtractFields.append(obj)
        if params.get("TextDetections") is not None:
            self._TextDetections = []
            for item in params.get("TextDetections"):
                obj = TextDetection()
                obj._deserialize(item)
                self._TextDetections.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class MLIDCardOCRRequest(AbstractModel):
    r"""MLIDCardOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。
        :type ImageBase64: str
        :param _BackImageBase64: 卡证背面图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type BackImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。( 中国地区之外不支持这个字段 )支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        :param _BackImageUrl: 卡证背面图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type BackImageUrl: str
        :param _RetImage: 是否返回图片，默认false
        :type RetImage: bool
        """
        self._ImageBase64 = None
        self._BackImageBase64 = None
        self._ImageUrl = None
        self._BackImageUrl = None
        self._RetImage = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def BackImageBase64(self):
        r"""卡证背面图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._BackImageBase64

    @BackImageBase64.setter
    def BackImageBase64(self, BackImageBase64):
        self._BackImageBase64 = BackImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。( 中国地区之外不支持这个字段 )支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def BackImageUrl(self):
        r"""卡证背面图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._BackImageUrl

    @BackImageUrl.setter
    def BackImageUrl(self, BackImageUrl):
        self._BackImageUrl = BackImageUrl

    @property
    def RetImage(self):
        r"""是否返回图片，默认false
        :rtype: bool
        """
        return self._RetImage

    @RetImage.setter
    def RetImage(self, RetImage):
        self._RetImage = RetImage


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._BackImageBase64 = params.get("BackImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._BackImageUrl = params.get("BackImageUrl")
        self._RetImage = params.get("RetImage")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class MLIDCardOCRResponse(AbstractModel):
    r"""MLIDCardOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _ID: 身份证号
        :type ID: str
        :param _Name: 姓名
        :type Name: str
        :param _Address: 地址
        :type Address: str
        :param _Sex: 性别
        :type Sex: str
        :param _Warn: 该字段已废弃， 将固定返回空数组，不建议使用。
        :type Warn: list of int
        :param _Image: 证件图片
        :type Image: str
        :param _AdvancedInfo: 该字段已废弃， 将固定返回"1"，不建议使用。
        :type AdvancedInfo: str
        :param _Type: 证件类型
MyKad  身份证
MyPR    永居证
MyTentera   军官证
MyKAS    临时身份证
POLIS  警察证
IKAD   劳工证
MyKid 儿童卡
        :type Type: str
        :param _Birthday: 出生日期（目前该字段仅支持IKAD劳工证、MyKad 身份证）
        :type Birthday: str
        :param _MyKadNumber: 马来身份证背面号码
        :type MyKadNumber: str
        :param _WarnCardInfos: 告警码
-9101 证件边框不完整告警
-9102 证件复印件告警
-9103 证件翻拍告警
-9104 证件PS告警
-9107 证件反光告警
-9108 证件模糊告警
-9109 告警能力未开通
        :type WarnCardInfos: list of int
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._ID = None
        self._Name = None
        self._Address = None
        self._Sex = None
        self._Warn = None
        self._Image = None
        self._AdvancedInfo = None
        self._Type = None
        self._Birthday = None
        self._MyKadNumber = None
        self._WarnCardInfos = None
        self._RequestId = None

    @property
    def ID(self):
        r"""身份证号
        :rtype: str
        """
        return self._ID

    @ID.setter
    def ID(self, ID):
        self._ID = ID

    @property
    def Name(self):
        r"""姓名
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Address(self):
        r"""地址
        :rtype: str
        """
        return self._Address

    @Address.setter
    def Address(self, Address):
        self._Address = Address

    @property
    def Sex(self):
        r"""性别
        :rtype: str
        """
        return self._Sex

    @Sex.setter
    def Sex(self, Sex):
        self._Sex = Sex

    @property
    def Warn(self):
        warnings.warn("parameter `Warn` is deprecated", DeprecationWarning) 

        r"""该字段已废弃， 将固定返回空数组，不建议使用。
        :rtype: list of int
        """
        return self._Warn

    @Warn.setter
    def Warn(self, Warn):
        warnings.warn("parameter `Warn` is deprecated", DeprecationWarning) 

        self._Warn = Warn

    @property
    def Image(self):
        r"""证件图片
        :rtype: str
        """
        return self._Image

    @Image.setter
    def Image(self, Image):
        self._Image = Image

    @property
    def AdvancedInfo(self):
        warnings.warn("parameter `AdvancedInfo` is deprecated", DeprecationWarning) 

        r"""该字段已废弃， 将固定返回"1"，不建议使用。
        :rtype: str
        """
        return self._AdvancedInfo

    @AdvancedInfo.setter
    def AdvancedInfo(self, AdvancedInfo):
        warnings.warn("parameter `AdvancedInfo` is deprecated", DeprecationWarning) 

        self._AdvancedInfo = AdvancedInfo

    @property
    def Type(self):
        r"""证件类型
MyKad  身份证
MyPR    永居证
MyTentera   军官证
MyKAS    临时身份证
POLIS  警察证
IKAD   劳工证
MyKid 儿童卡
        :rtype: str
        """
        return self._Type

    @Type.setter
    def Type(self, Type):
        self._Type = Type

    @property
    def Birthday(self):
        r"""出生日期（目前该字段仅支持IKAD劳工证、MyKad 身份证）
        :rtype: str
        """
        return self._Birthday

    @Birthday.setter
    def Birthday(self, Birthday):
        self._Birthday = Birthday

    @property
    def MyKadNumber(self):
        r"""马来身份证背面号码
        :rtype: str
        """
        return self._MyKadNumber

    @MyKadNumber.setter
    def MyKadNumber(self, MyKadNumber):
        self._MyKadNumber = MyKadNumber

    @property
    def WarnCardInfos(self):
        r"""告警码
-9101 证件边框不完整告警
-9102 证件复印件告警
-9103 证件翻拍告警
-9104 证件PS告警
-9107 证件反光告警
-9108 证件模糊告警
-9109 告警能力未开通
        :rtype: list of int
        """
        return self._WarnCardInfos

    @WarnCardInfos.setter
    def WarnCardInfos(self, WarnCardInfos):
        self._WarnCardInfos = WarnCardInfos

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._ID = params.get("ID")
        self._Name = params.get("Name")
        self._Address = params.get("Address")
        self._Sex = params.get("Sex")
        self._Warn = params.get("Warn")
        self._Image = params.get("Image")
        self._AdvancedInfo = params.get("AdvancedInfo")
        self._Type = params.get("Type")
        self._Birthday = params.get("Birthday")
        self._MyKadNumber = params.get("MyKadNumber")
        self._WarnCardInfos = params.get("WarnCardInfos")
        self._RequestId = params.get("RequestId")


class MLIDPassportOCRRequest(AbstractModel):
    r"""MLIDPassportOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。建议卡片部分占据图片2/3以上。
        :type ImageBase64: str
        :param _RetImage: 是否返回图片，默认false
        :type RetImage: bool
        :param _ImageUrl: 图片的 Url 地址。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。建议卡片部分占据图片2/3以上。图片下载时间不超过 3 秒。建议图片存储于腾讯云，可保障更高的下载速度和稳定性。
        :type ImageUrl: str
        """
        self._ImageBase64 = None
        self._RetImage = None
        self._ImageUrl = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。建议卡片部分占据图片2/3以上。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def RetImage(self):
        r"""是否返回图片，默认false
        :rtype: bool
        """
        return self._RetImage

    @RetImage.setter
    def RetImage(self, RetImage):
        self._RetImage = RetImage

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。建议卡片部分占据图片2/3以上。图片下载时间不超过 3 秒。建议图片存储于腾讯云，可保障更高的下载速度和稳定性。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._RetImage = params.get("RetImage")
        self._ImageUrl = params.get("ImageUrl")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class MLIDPassportOCRResponse(AbstractModel):
    r"""MLIDPassportOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _ID: 护照ID（机读码区的解析结果）
        :type ID: str
        :param _Name: 姓名（机读码区的解析结果）
        :type Name: str
        :param _DateOfBirth: 出生日期（机读码区的解析结果）
        :type DateOfBirth: str
        :param _Sex: 性别（F女，M男）（机读码区的解析结果）
        :type Sex: str
        :param _DateOfExpiration: 有效期（机读码区的解析结果）
        :type DateOfExpiration: str
        :param _IssuingCountry: 发行国（机读码区的解析结果）
        :type IssuingCountry: str
        :param _Nationality: 国家地区代码（机读码区的解析结果）
        :type Nationality: str
        :param _Warn: 该字段已废弃， 将固定返回空数组，不建议使用。

        :type Warn: list of int
        :param _Image: 证件中的人像图片base64
        :type Image: str
        :param _AdvancedInfo: 该字段已废弃， 将固定返回"1"，不建议使用。

        :type AdvancedInfo: str
        :param _CodeSet: 最下方第一行 MRZ Code 序列
        :type CodeSet: str
        :param _CodeCrc: 最下方第二行 MRZ Code 序列
        :type CodeCrc: str
        :param _Surname: 姓（机读码区的解析结果）
注意：此字段可能返回 null，表示取不到有效值。
        :type Surname: str
        :param _GivenName: 名（机读码区的解析结果）
注意：此字段可能返回 null，表示取不到有效值。
        :type GivenName: str
        :param _Type: 类型（机读码区的解析结果）
        :type Type: str
        :param _PassportRecognizeInfos: 信息区证件内容
        :type PassportRecognizeInfos: :class:`tencentcloud.ocr.v20181119.models.PassportRecognizeInfos`
        :param _WarnCardInfos: 该字段仅对国际站请求起作用，国内站该字段将固定返回空数组。国际站告警码如下：  告警码-9101 证件边框不完整告警-9102 证件复印件告警-9103 证件翻拍告警-9104 证件PS告警-9107 证件反光告警-9108 证件模糊告警-9109 告警能力未开通
        :type WarnCardInfos: list of int
        :param _CardCount: 输入图片中的卡证数量（仅请求曼谷地域[ap-bangkok]返回）
        :type CardCount: int
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._ID = None
        self._Name = None
        self._DateOfBirth = None
        self._Sex = None
        self._DateOfExpiration = None
        self._IssuingCountry = None
        self._Nationality = None
        self._Warn = None
        self._Image = None
        self._AdvancedInfo = None
        self._CodeSet = None
        self._CodeCrc = None
        self._Surname = None
        self._GivenName = None
        self._Type = None
        self._PassportRecognizeInfos = None
        self._WarnCardInfos = None
        self._CardCount = None
        self._RequestId = None

    @property
    def ID(self):
        r"""护照ID（机读码区的解析结果）
        :rtype: str
        """
        return self._ID

    @ID.setter
    def ID(self, ID):
        self._ID = ID

    @property
    def Name(self):
        r"""姓名（机读码区的解析结果）
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def DateOfBirth(self):
        r"""出生日期（机读码区的解析结果）
        :rtype: str
        """
        return self._DateOfBirth

    @DateOfBirth.setter
    def DateOfBirth(self, DateOfBirth):
        self._DateOfBirth = DateOfBirth

    @property
    def Sex(self):
        r"""性别（F女，M男）（机读码区的解析结果）
        :rtype: str
        """
        return self._Sex

    @Sex.setter
    def Sex(self, Sex):
        self._Sex = Sex

    @property
    def DateOfExpiration(self):
        r"""有效期（机读码区的解析结果）
        :rtype: str
        """
        return self._DateOfExpiration

    @DateOfExpiration.setter
    def DateOfExpiration(self, DateOfExpiration):
        self._DateOfExpiration = DateOfExpiration

    @property
    def IssuingCountry(self):
        r"""发行国（机读码区的解析结果）
        :rtype: str
        """
        return self._IssuingCountry

    @IssuingCountry.setter
    def IssuingCountry(self, IssuingCountry):
        self._IssuingCountry = IssuingCountry

    @property
    def Nationality(self):
        r"""国家地区代码（机读码区的解析结果）
        :rtype: str
        """
        return self._Nationality

    @Nationality.setter
    def Nationality(self, Nationality):
        self._Nationality = Nationality

    @property
    def Warn(self):
        warnings.warn("parameter `Warn` is deprecated", DeprecationWarning) 

        r"""该字段已废弃， 将固定返回空数组，不建议使用。

        :rtype: list of int
        """
        return self._Warn

    @Warn.setter
    def Warn(self, Warn):
        warnings.warn("parameter `Warn` is deprecated", DeprecationWarning) 

        self._Warn = Warn

    @property
    def Image(self):
        r"""证件中的人像图片base64
        :rtype: str
        """
        return self._Image

    @Image.setter
    def Image(self, Image):
        self._Image = Image

    @property
    def AdvancedInfo(self):
        warnings.warn("parameter `AdvancedInfo` is deprecated", DeprecationWarning) 

        r"""该字段已废弃， 将固定返回"1"，不建议使用。

        :rtype: str
        """
        return self._AdvancedInfo

    @AdvancedInfo.setter
    def AdvancedInfo(self, AdvancedInfo):
        warnings.warn("parameter `AdvancedInfo` is deprecated", DeprecationWarning) 

        self._AdvancedInfo = AdvancedInfo

    @property
    def CodeSet(self):
        r"""最下方第一行 MRZ Code 序列
        :rtype: str
        """
        return self._CodeSet

    @CodeSet.setter
    def CodeSet(self, CodeSet):
        self._CodeSet = CodeSet

    @property
    def CodeCrc(self):
        r"""最下方第二行 MRZ Code 序列
        :rtype: str
        """
        return self._CodeCrc

    @CodeCrc.setter
    def CodeCrc(self, CodeCrc):
        self._CodeCrc = CodeCrc

    @property
    def Surname(self):
        r"""姓（机读码区的解析结果）
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Surname

    @Surname.setter
    def Surname(self, Surname):
        self._Surname = Surname

    @property
    def GivenName(self):
        r"""名（机读码区的解析结果）
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._GivenName

    @GivenName.setter
    def GivenName(self, GivenName):
        self._GivenName = GivenName

    @property
    def Type(self):
        r"""类型（机读码区的解析结果）
        :rtype: str
        """
        return self._Type

    @Type.setter
    def Type(self, Type):
        self._Type = Type

    @property
    def PassportRecognizeInfos(self):
        r"""信息区证件内容
        :rtype: :class:`tencentcloud.ocr.v20181119.models.PassportRecognizeInfos`
        """
        return self._PassportRecognizeInfos

    @PassportRecognizeInfos.setter
    def PassportRecognizeInfos(self, PassportRecognizeInfos):
        self._PassportRecognizeInfos = PassportRecognizeInfos

    @property
    def WarnCardInfos(self):
        r"""该字段仅对国际站请求起作用，国内站该字段将固定返回空数组。国际站告警码如下：  告警码-9101 证件边框不完整告警-9102 证件复印件告警-9103 证件翻拍告警-9104 证件PS告警-9107 证件反光告警-9108 证件模糊告警-9109 告警能力未开通
        :rtype: list of int
        """
        return self._WarnCardInfos

    @WarnCardInfos.setter
    def WarnCardInfos(self, WarnCardInfos):
        self._WarnCardInfos = WarnCardInfos

    @property
    def CardCount(self):
        r"""输入图片中的卡证数量（仅请求曼谷地域[ap-bangkok]返回）
        :rtype: int
        """
        return self._CardCount

    @CardCount.setter
    def CardCount(self, CardCount):
        self._CardCount = CardCount

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._ID = params.get("ID")
        self._Name = params.get("Name")
        self._DateOfBirth = params.get("DateOfBirth")
        self._Sex = params.get("Sex")
        self._DateOfExpiration = params.get("DateOfExpiration")
        self._IssuingCountry = params.get("IssuingCountry")
        self._Nationality = params.get("Nationality")
        self._Warn = params.get("Warn")
        self._Image = params.get("Image")
        self._AdvancedInfo = params.get("AdvancedInfo")
        self._CodeSet = params.get("CodeSet")
        self._CodeCrc = params.get("CodeCrc")
        self._Surname = params.get("Surname")
        self._GivenName = params.get("GivenName")
        self._Type = params.get("Type")
        if params.get("PassportRecognizeInfos") is not None:
            self._PassportRecognizeInfos = PassportRecognizeInfos()
            self._PassportRecognizeInfos._deserialize(params.get("PassportRecognizeInfos"))
        self._WarnCardInfos = params.get("WarnCardInfos")
        self._CardCount = params.get("CardCount")
        self._RequestId = params.get("RequestId")


class MachinePrintedInvoice(AbstractModel):
    r"""通用机打发票

    """

    def __init__(self):
        r"""
        :param _Title: 发票名称
        :type Title: str
        :param _QRCodeMark: 是否存在二维码（1：有，0：无）
        :type QRCodeMark: int
        :param _Code: 发票代码
        :type Code: str
        :param _Number: 发票号码
        :type Number: str
        :param _Date: 开票日期
        :type Date: str
        :param _Time: 时间
        :type Time: str
        :param _CheckCode: 校验码
        :type CheckCode: str
        :param _Ciphertext: 密码区
        :type Ciphertext: str
        :param _Category: 种类
        :type Category: str
        :param _PretaxAmount: 税前金额
        :type PretaxAmount: str
        :param _Total: 价税合计（小写）
        :type Total: str
        :param _TotalCn: 价税合计（大写）
        :type TotalCn: str
        :param _Tax: 合计税额
        :type Tax: str
        :param _IndustryClass: 行业分类
        :type IndustryClass: str
        :param _Seller: 销售方名称
        :type Seller: str
        :param _SellerTaxID: 销售方纳税人识别号
        :type SellerTaxID: str
        :param _SellerAddrTel: 销售方地址电话
        :type SellerAddrTel: str
        :param _SellerBankAccount: 销售方银行账号
        :type SellerBankAccount: str
        :param _Buyer: 购买方名称
        :type Buyer: str
        :param _BuyerTaxID: 购买方纳税人识别号
        :type BuyerTaxID: str
        :param _BuyerAddrTel: 购买方地址电话
        :type BuyerAddrTel: str
        :param _BuyerBankAccount: 购买方银行账号
        :type BuyerBankAccount: str
        :param _Kind: 发票消费类型
        :type Kind: str
        :param _Province: 省
        :type Province: str
        :param _City: 市
        :type City: str
        :param _CompanySealMark: 是否有公司印章（0：没有，1：有）
        :type CompanySealMark: int
        :param _ElectronicMark: 是否为浙江/广东通用机打发票（0：没有，1：有）
        :type ElectronicMark: int
        :param _Issuer: 开票人
        :type Issuer: str
        :param _Receiptor: 收款人
        :type Receiptor: str
        :param _Reviewer: 复核人
        :type Reviewer: str
        :param _Remark: 备注
        :type Remark: str
        :param _PaymentInfo: 经办人支付信息
        :type PaymentInfo: str
        :param _TicketPickupUser: 经办人取票用户
        :type TicketPickupUser: str
        :param _MerchantNumber: 经办人商户号
        :type MerchantNumber: str
        :param _OrderNumber: 经办人订单号
        :type OrderNumber: str
        :param _GeneralMachineItems: 条目
        :type GeneralMachineItems: list of GeneralMachineItem
        """
        self._Title = None
        self._QRCodeMark = None
        self._Code = None
        self._Number = None
        self._Date = None
        self._Time = None
        self._CheckCode = None
        self._Ciphertext = None
        self._Category = None
        self._PretaxAmount = None
        self._Total = None
        self._TotalCn = None
        self._Tax = None
        self._IndustryClass = None
        self._Seller = None
        self._SellerTaxID = None
        self._SellerAddrTel = None
        self._SellerBankAccount = None
        self._Buyer = None
        self._BuyerTaxID = None
        self._BuyerAddrTel = None
        self._BuyerBankAccount = None
        self._Kind = None
        self._Province = None
        self._City = None
        self._CompanySealMark = None
        self._ElectronicMark = None
        self._Issuer = None
        self._Receiptor = None
        self._Reviewer = None
        self._Remark = None
        self._PaymentInfo = None
        self._TicketPickupUser = None
        self._MerchantNumber = None
        self._OrderNumber = None
        self._GeneralMachineItems = None

    @property
    def Title(self):
        r"""发票名称
        :rtype: str
        """
        return self._Title

    @Title.setter
    def Title(self, Title):
        self._Title = Title

    @property
    def QRCodeMark(self):
        r"""是否存在二维码（1：有，0：无）
        :rtype: int
        """
        return self._QRCodeMark

    @QRCodeMark.setter
    def QRCodeMark(self, QRCodeMark):
        self._QRCodeMark = QRCodeMark

    @property
    def Code(self):
        r"""发票代码
        :rtype: str
        """
        return self._Code

    @Code.setter
    def Code(self, Code):
        self._Code = Code

    @property
    def Number(self):
        r"""发票号码
        :rtype: str
        """
        return self._Number

    @Number.setter
    def Number(self, Number):
        self._Number = Number

    @property
    def Date(self):
        r"""开票日期
        :rtype: str
        """
        return self._Date

    @Date.setter
    def Date(self, Date):
        self._Date = Date

    @property
    def Time(self):
        r"""时间
        :rtype: str
        """
        return self._Time

    @Time.setter
    def Time(self, Time):
        self._Time = Time

    @property
    def CheckCode(self):
        r"""校验码
        :rtype: str
        """
        return self._CheckCode

    @CheckCode.setter
    def CheckCode(self, CheckCode):
        self._CheckCode = CheckCode

    @property
    def Ciphertext(self):
        r"""密码区
        :rtype: str
        """
        return self._Ciphertext

    @Ciphertext.setter
    def Ciphertext(self, Ciphertext):
        self._Ciphertext = Ciphertext

    @property
    def Category(self):
        r"""种类
        :rtype: str
        """
        return self._Category

    @Category.setter
    def Category(self, Category):
        self._Category = Category

    @property
    def PretaxAmount(self):
        r"""税前金额
        :rtype: str
        """
        return self._PretaxAmount

    @PretaxAmount.setter
    def PretaxAmount(self, PretaxAmount):
        self._PretaxAmount = PretaxAmount

    @property
    def Total(self):
        r"""价税合计（小写）
        :rtype: str
        """
        return self._Total

    @Total.setter
    def Total(self, Total):
        self._Total = Total

    @property
    def TotalCn(self):
        r"""价税合计（大写）
        :rtype: str
        """
        return self._TotalCn

    @TotalCn.setter
    def TotalCn(self, TotalCn):
        self._TotalCn = TotalCn

    @property
    def Tax(self):
        r"""合计税额
        :rtype: str
        """
        return self._Tax

    @Tax.setter
    def Tax(self, Tax):
        self._Tax = Tax

    @property
    def IndustryClass(self):
        r"""行业分类
        :rtype: str
        """
        return self._IndustryClass

    @IndustryClass.setter
    def IndustryClass(self, IndustryClass):
        self._IndustryClass = IndustryClass

    @property
    def Seller(self):
        r"""销售方名称
        :rtype: str
        """
        return self._Seller

    @Seller.setter
    def Seller(self, Seller):
        self._Seller = Seller

    @property
    def SellerTaxID(self):
        r"""销售方纳税人识别号
        :rtype: str
        """
        return self._SellerTaxID

    @SellerTaxID.setter
    def SellerTaxID(self, SellerTaxID):
        self._SellerTaxID = SellerTaxID

    @property
    def SellerAddrTel(self):
        r"""销售方地址电话
        :rtype: str
        """
        return self._SellerAddrTel

    @SellerAddrTel.setter
    def SellerAddrTel(self, SellerAddrTel):
        self._SellerAddrTel = SellerAddrTel

    @property
    def SellerBankAccount(self):
        r"""销售方银行账号
        :rtype: str
        """
        return self._SellerBankAccount

    @SellerBankAccount.setter
    def SellerBankAccount(self, SellerBankAccount):
        self._SellerBankAccount = SellerBankAccount

    @property
    def Buyer(self):
        r"""购买方名称
        :rtype: str
        """
        return self._Buyer

    @Buyer.setter
    def Buyer(self, Buyer):
        self._Buyer = Buyer

    @property
    def BuyerTaxID(self):
        r"""购买方纳税人识别号
        :rtype: str
        """
        return self._BuyerTaxID

    @BuyerTaxID.setter
    def BuyerTaxID(self, BuyerTaxID):
        self._BuyerTaxID = BuyerTaxID

    @property
    def BuyerAddrTel(self):
        r"""购买方地址电话
        :rtype: str
        """
        return self._BuyerAddrTel

    @BuyerAddrTel.setter
    def BuyerAddrTel(self, BuyerAddrTel):
        self._BuyerAddrTel = BuyerAddrTel

    @property
    def BuyerBankAccount(self):
        r"""购买方银行账号
        :rtype: str
        """
        return self._BuyerBankAccount

    @BuyerBankAccount.setter
    def BuyerBankAccount(self, BuyerBankAccount):
        self._BuyerBankAccount = BuyerBankAccount

    @property
    def Kind(self):
        r"""发票消费类型
        :rtype: str
        """
        return self._Kind

    @Kind.setter
    def Kind(self, Kind):
        self._Kind = Kind

    @property
    def Province(self):
        r"""省
        :rtype: str
        """
        return self._Province

    @Province.setter
    def Province(self, Province):
        self._Province = Province

    @property
    def City(self):
        r"""市
        :rtype: str
        """
        return self._City

    @City.setter
    def City(self, City):
        self._City = City

    @property
    def CompanySealMark(self):
        r"""是否有公司印章（0：没有，1：有）
        :rtype: int
        """
        return self._CompanySealMark

    @CompanySealMark.setter
    def CompanySealMark(self, CompanySealMark):
        self._CompanySealMark = CompanySealMark

    @property
    def ElectronicMark(self):
        r"""是否为浙江/广东通用机打发票（0：没有，1：有）
        :rtype: int
        """
        return self._ElectronicMark

    @ElectronicMark.setter
    def ElectronicMark(self, ElectronicMark):
        self._ElectronicMark = ElectronicMark

    @property
    def Issuer(self):
        r"""开票人
        :rtype: str
        """
        return self._Issuer

    @Issuer.setter
    def Issuer(self, Issuer):
        self._Issuer = Issuer

    @property
    def Receiptor(self):
        r"""收款人
        :rtype: str
        """
        return self._Receiptor

    @Receiptor.setter
    def Receiptor(self, Receiptor):
        self._Receiptor = Receiptor

    @property
    def Reviewer(self):
        r"""复核人
        :rtype: str
        """
        return self._Reviewer

    @Reviewer.setter
    def Reviewer(self, Reviewer):
        self._Reviewer = Reviewer

    @property
    def Remark(self):
        r"""备注
        :rtype: str
        """
        return self._Remark

    @Remark.setter
    def Remark(self, Remark):
        self._Remark = Remark

    @property
    def PaymentInfo(self):
        r"""经办人支付信息
        :rtype: str
        """
        return self._PaymentInfo

    @PaymentInfo.setter
    def PaymentInfo(self, PaymentInfo):
        self._PaymentInfo = PaymentInfo

    @property
    def TicketPickupUser(self):
        r"""经办人取票用户
        :rtype: str
        """
        return self._TicketPickupUser

    @TicketPickupUser.setter
    def TicketPickupUser(self, TicketPickupUser):
        self._TicketPickupUser = TicketPickupUser

    @property
    def MerchantNumber(self):
        r"""经办人商户号
        :rtype: str
        """
        return self._MerchantNumber

    @MerchantNumber.setter
    def MerchantNumber(self, MerchantNumber):
        self._MerchantNumber = MerchantNumber

    @property
    def OrderNumber(self):
        r"""经办人订单号
        :rtype: str
        """
        return self._OrderNumber

    @OrderNumber.setter
    def OrderNumber(self, OrderNumber):
        self._OrderNumber = OrderNumber

    @property
    def GeneralMachineItems(self):
        r"""条目
        :rtype: list of GeneralMachineItem
        """
        return self._GeneralMachineItems

    @GeneralMachineItems.setter
    def GeneralMachineItems(self, GeneralMachineItems):
        self._GeneralMachineItems = GeneralMachineItems


    def _deserialize(self, params):
        self._Title = params.get("Title")
        self._QRCodeMark = params.get("QRCodeMark")
        self._Code = params.get("Code")
        self._Number = params.get("Number")
        self._Date = params.get("Date")
        self._Time = params.get("Time")
        self._CheckCode = params.get("CheckCode")
        self._Ciphertext = params.get("Ciphertext")
        self._Category = params.get("Category")
        self._PretaxAmount = params.get("PretaxAmount")
        self._Total = params.get("Total")
        self._TotalCn = params.get("TotalCn")
        self._Tax = params.get("Tax")
        self._IndustryClass = params.get("IndustryClass")
        self._Seller = params.get("Seller")
        self._SellerTaxID = params.get("SellerTaxID")
        self._SellerAddrTel = params.get("SellerAddrTel")
        self._SellerBankAccount = params.get("SellerBankAccount")
        self._Buyer = params.get("Buyer")
        self._BuyerTaxID = params.get("BuyerTaxID")
        self._BuyerAddrTel = params.get("BuyerAddrTel")
        self._BuyerBankAccount = params.get("BuyerBankAccount")
        self._Kind = params.get("Kind")
        self._Province = params.get("Province")
        self._City = params.get("City")
        self._CompanySealMark = params.get("CompanySealMark")
        self._ElectronicMark = params.get("ElectronicMark")
        self._Issuer = params.get("Issuer")
        self._Receiptor = params.get("Receiptor")
        self._Reviewer = params.get("Reviewer")
        self._Remark = params.get("Remark")
        self._PaymentInfo = params.get("PaymentInfo")
        self._TicketPickupUser = params.get("TicketPickupUser")
        self._MerchantNumber = params.get("MerchantNumber")
        self._OrderNumber = params.get("OrderNumber")
        if params.get("GeneralMachineItems") is not None:
            self._GeneralMachineItems = []
            for item in params.get("GeneralMachineItems"):
                obj = GeneralMachineItem()
                obj._deserialize(item)
                self._GeneralMachineItems.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class MainlandPermitOCRRequest(AbstractModel):
    r"""MainlandPermitOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: <p>图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。</p>
        :type ImageBase64: str
        :param _ImageUrl: <p>图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。</p>
        :type ImageUrl: str
        :param _RetProfile: <p>是否返回头像。默认不返回。</p>
        :type RetProfile: bool
        :param _CardSide: <p>图片正反面<br>FRONT：正面<br>BACK：反面 （仅支持来往内地通行证反面识别，不支持港澳台通行证反面识别）<br>默认为FRONT</p>
        :type CardSide: str
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._RetProfile = None
        self._CardSide = None

    @property
    def ImageBase64(self):
        r"""<p>图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。</p>
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""<p>图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。</p>
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def RetProfile(self):
        r"""<p>是否返回头像。默认不返回。</p>
        :rtype: bool
        """
        return self._RetProfile

    @RetProfile.setter
    def RetProfile(self, RetProfile):
        self._RetProfile = RetProfile

    @property
    def CardSide(self):
        r"""<p>图片正反面<br>FRONT：正面<br>BACK：反面 （仅支持来往内地通行证反面识别，不支持港澳台通行证反面识别）<br>默认为FRONT</p>
        :rtype: str
        """
        return self._CardSide

    @CardSide.setter
    def CardSide(self, CardSide):
        self._CardSide = CardSide


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._RetProfile = params.get("RetProfile")
        self._CardSide = params.get("CardSide")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class MainlandPermitOCRResponse(AbstractModel):
    r"""MainlandPermitOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Name: <p>中文姓名</p>
        :type Name: str
        :param _EnglishName: <p>英文姓名</p>
        :type EnglishName: str
        :param _Sex: <p>性别</p>
        :type Sex: str
        :param _Birthday: <p>出生日期</p>
        :type Birthday: str
        :param _IssueAuthority: <p>签发机关</p>
        :type IssueAuthority: str
        :param _ValidDate: <p>有效期限</p>
        :type ValidDate: str
        :param _Number: <p>证件号</p>
        :type Number: str
        :param _IssueAddress: <p>签发地点</p>
        :type IssueAddress: str
        :param _IssueNumber: <p>签发次数</p>
        :type IssueNumber: str
        :param _Type: <p>证件类别， 如：台湾居民来往大陆通行证、港澳居民来往内地通行证、往来港澳通行证。</p>
        :type Type: str
        :param _Profile: <p>RetProfile为True时返回头像字段， Base64编码</p>
        :type Profile: str
        :param _Nationality: <p>国籍</p>
        :type Nationality: str
        :param _MainlandTravelPermitBackInfos: <p>背面字段信息</p>
        :type MainlandTravelPermitBackInfos: :class:`tencentcloud.ocr.v20181119.models.MainlandTravelPermitBackInfos`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Name = None
        self._EnglishName = None
        self._Sex = None
        self._Birthday = None
        self._IssueAuthority = None
        self._ValidDate = None
        self._Number = None
        self._IssueAddress = None
        self._IssueNumber = None
        self._Type = None
        self._Profile = None
        self._Nationality = None
        self._MainlandTravelPermitBackInfos = None
        self._RequestId = None

    @property
    def Name(self):
        r"""<p>中文姓名</p>
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def EnglishName(self):
        r"""<p>英文姓名</p>
        :rtype: str
        """
        return self._EnglishName

    @EnglishName.setter
    def EnglishName(self, EnglishName):
        self._EnglishName = EnglishName

    @property
    def Sex(self):
        r"""<p>性别</p>
        :rtype: str
        """
        return self._Sex

    @Sex.setter
    def Sex(self, Sex):
        self._Sex = Sex

    @property
    def Birthday(self):
        r"""<p>出生日期</p>
        :rtype: str
        """
        return self._Birthday

    @Birthday.setter
    def Birthday(self, Birthday):
        self._Birthday = Birthday

    @property
    def IssueAuthority(self):
        r"""<p>签发机关</p>
        :rtype: str
        """
        return self._IssueAuthority

    @IssueAuthority.setter
    def IssueAuthority(self, IssueAuthority):
        self._IssueAuthority = IssueAuthority

    @property
    def ValidDate(self):
        r"""<p>有效期限</p>
        :rtype: str
        """
        return self._ValidDate

    @ValidDate.setter
    def ValidDate(self, ValidDate):
        self._ValidDate = ValidDate

    @property
    def Number(self):
        r"""<p>证件号</p>
        :rtype: str
        """
        return self._Number

    @Number.setter
    def Number(self, Number):
        self._Number = Number

    @property
    def IssueAddress(self):
        r"""<p>签发地点</p>
        :rtype: str
        """
        return self._IssueAddress

    @IssueAddress.setter
    def IssueAddress(self, IssueAddress):
        self._IssueAddress = IssueAddress

    @property
    def IssueNumber(self):
        r"""<p>签发次数</p>
        :rtype: str
        """
        return self._IssueNumber

    @IssueNumber.setter
    def IssueNumber(self, IssueNumber):
        self._IssueNumber = IssueNumber

    @property
    def Type(self):
        r"""<p>证件类别， 如：台湾居民来往大陆通行证、港澳居民来往内地通行证、往来港澳通行证。</p>
        :rtype: str
        """
        return self._Type

    @Type.setter
    def Type(self, Type):
        self._Type = Type

    @property
    def Profile(self):
        r"""<p>RetProfile为True时返回头像字段， Base64编码</p>
        :rtype: str
        """
        return self._Profile

    @Profile.setter
    def Profile(self, Profile):
        self._Profile = Profile

    @property
    def Nationality(self):
        r"""<p>国籍</p>
        :rtype: str
        """
        return self._Nationality

    @Nationality.setter
    def Nationality(self, Nationality):
        self._Nationality = Nationality

    @property
    def MainlandTravelPermitBackInfos(self):
        r"""<p>背面字段信息</p>
        :rtype: :class:`tencentcloud.ocr.v20181119.models.MainlandTravelPermitBackInfos`
        """
        return self._MainlandTravelPermitBackInfos

    @MainlandTravelPermitBackInfos.setter
    def MainlandTravelPermitBackInfos(self, MainlandTravelPermitBackInfos):
        self._MainlandTravelPermitBackInfos = MainlandTravelPermitBackInfos

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._Name = params.get("Name")
        self._EnglishName = params.get("EnglishName")
        self._Sex = params.get("Sex")
        self._Birthday = params.get("Birthday")
        self._IssueAuthority = params.get("IssueAuthority")
        self._ValidDate = params.get("ValidDate")
        self._Number = params.get("Number")
        self._IssueAddress = params.get("IssueAddress")
        self._IssueNumber = params.get("IssueNumber")
        self._Type = params.get("Type")
        self._Profile = params.get("Profile")
        self._Nationality = params.get("Nationality")
        if params.get("MainlandTravelPermitBackInfos") is not None:
            self._MainlandTravelPermitBackInfos = MainlandTravelPermitBackInfos()
            self._MainlandTravelPermitBackInfos._deserialize(params.get("MainlandTravelPermitBackInfos"))
        self._RequestId = params.get("RequestId")


class MainlandTravelPermitBackInfos(AbstractModel):
    r"""港澳台来往内地通行证背面字段信息

    """

    def __init__(self):
        r"""
        :param _Type: String	证件类别， 如：台湾居民来往大陆通行证、港澳居民来往内地通行证。
注意：此字段可能返回 null，表示取不到有效值。
        :type Type: str
        :param _Name: 卡证背面的中文姓名	
注意：此字段可能返回 null，表示取不到有效值。
        :type Name: str
        :param _IDNumber: 卡证背面的身份证号码	
注意：此字段可能返回 null，表示取不到有效值。
        :type IDNumber: str
        :param _HistoryNumber: 历史通行证号码	
注意：此字段可能返回 null，表示取不到有效值。
        :type HistoryNumber: str
        """
        self._Type = None
        self._Name = None
        self._IDNumber = None
        self._HistoryNumber = None

    @property
    def Type(self):
        r"""String	证件类别， 如：台湾居民来往大陆通行证、港澳居民来往内地通行证。
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Type

    @Type.setter
    def Type(self, Type):
        self._Type = Type

    @property
    def Name(self):
        r"""卡证背面的中文姓名	
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def IDNumber(self):
        r"""卡证背面的身份证号码	
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._IDNumber

    @IDNumber.setter
    def IDNumber(self, IDNumber):
        self._IDNumber = IDNumber

    @property
    def HistoryNumber(self):
        r"""历史通行证号码	
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._HistoryNumber

    @HistoryNumber.setter
    def HistoryNumber(self, HistoryNumber):
        self._HistoryNumber = HistoryNumber


    def _deserialize(self, params):
        self._Type = params.get("Type")
        self._Name = params.get("Name")
        self._IDNumber = params.get("IDNumber")
        self._HistoryNumber = params.get("HistoryNumber")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class MarkEssaySuggestions(AbstractModel):
    r"""作文批改建议

    """

    def __init__(self):
        r"""
        :param _ID: 作文批改序号
        :type ID: int
        :param _Type: 批改类型：主要包括：词汇、语句
        :type Type: str
        :param _SubType: 子类型，基于Type返回二级类型

词汇： 错别字、使用拼音、词语误用、词语冗余、词汇贫乏、多字/漏字

语句：语法硬伤、逻辑问题、表达不佳、标点误用、优美句子
        :type SubType: str
        :param _Origin: 原文内容
        :type Origin: str
        :param _Replace: 批改后的内容
        :type Replace: str
        :param _Message: 点评内容
        :type Message: str
        :param _Positions: array[][]二维数组，原文内容可能存在跨行的句子，会有多组坐标返回

切图区域的4个角点坐标, 是个长度为8的数组

[0,1,2,3,4,5,6,7]

(0,1) 左上角坐标
(2,3) 右上角坐标
(4,5) 右下角坐标
(6,7) 左下角坐标
        :type Positions: list of Positions
        """
        self._ID = None
        self._Type = None
        self._SubType = None
        self._Origin = None
        self._Replace = None
        self._Message = None
        self._Positions = None

    @property
    def ID(self):
        r"""作文批改序号
        :rtype: int
        """
        return self._ID

    @ID.setter
    def ID(self, ID):
        self._ID = ID

    @property
    def Type(self):
        r"""批改类型：主要包括：词汇、语句
        :rtype: str
        """
        return self._Type

    @Type.setter
    def Type(self, Type):
        self._Type = Type

    @property
    def SubType(self):
        r"""子类型，基于Type返回二级类型

词汇： 错别字、使用拼音、词语误用、词语冗余、词汇贫乏、多字/漏字

语句：语法硬伤、逻辑问题、表达不佳、标点误用、优美句子
        :rtype: str
        """
        return self._SubType

    @SubType.setter
    def SubType(self, SubType):
        self._SubType = SubType

    @property
    def Origin(self):
        r"""原文内容
        :rtype: str
        """
        return self._Origin

    @Origin.setter
    def Origin(self, Origin):
        self._Origin = Origin

    @property
    def Replace(self):
        r"""批改后的内容
        :rtype: str
        """
        return self._Replace

    @Replace.setter
    def Replace(self, Replace):
        self._Replace = Replace

    @property
    def Message(self):
        r"""点评内容
        :rtype: str
        """
        return self._Message

    @Message.setter
    def Message(self, Message):
        self._Message = Message

    @property
    def Positions(self):
        r"""array[][]二维数组，原文内容可能存在跨行的句子，会有多组坐标返回

切图区域的4个角点坐标, 是个长度为8的数组

[0,1,2,3,4,5,6,7]

(0,1) 左上角坐标
(2,3) 右上角坐标
(4,5) 右下角坐标
(6,7) 左下角坐标
        :rtype: list of Positions
        """
        return self._Positions

    @Positions.setter
    def Positions(self, Positions):
        self._Positions = Positions


    def _deserialize(self, params):
        self._ID = params.get("ID")
        self._Type = params.get("Type")
        self._SubType = params.get("SubType")
        self._Origin = params.get("Origin")
        self._Replace = params.get("Replace")
        self._Message = params.get("Message")
        if params.get("Positions") is not None:
            self._Positions = []
            for item in params.get("Positions"):
                obj = Positions()
                obj._deserialize(item)
                self._Positions.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class MarkInfo(AbstractModel):
    r"""整张试卷所有题目批改信息

    """

    def __init__(self):
        r"""
        :param _MarkItemTitle: <p>题目的题干信息</p>
        :type MarkItemTitle: str
        :param _AnswerInfos: <p>批改答案列表（每个小题存在多个答案，比如多个填空区域答案，循序按照从左到右，从上到下排列）</p>
        :type AnswerInfos: list of AnswerInfo
        :param _MarkInfos: <p>嵌套题目结构（如果有多层嵌套则会返回子题信息，如果没有嵌套题目则返回空）</p>
        :type MarkInfos: list of MarkInfo
        :param _QuestionPositions: <p>题干坐标</p><p>单位：px</p>
        :type QuestionPositions: list of int
        :param _QuestionImagePositions: <p>题干插图坐标列表，每个元素包含一张插图的4个角点坐标</p>
        :type QuestionImagePositions: list of Positions
        :param _RightAnswer: <p>题目级正确答案（步骤批改时使用，包含完整解题步骤）</p>
        :type RightAnswer: str
        :param _Subject: <p>学科（如语文、数学、英语）</p>
        :type Subject: str
        :param _QuestionType: <p>题型（如选择题、填空题、计算题、应用题、判断题、作文题）</p>
        :type QuestionType: str
        """
        self._MarkItemTitle = None
        self._AnswerInfos = None
        self._MarkInfos = None
        self._QuestionPositions = None
        self._QuestionImagePositions = None
        self._RightAnswer = None
        self._Subject = None
        self._QuestionType = None

    @property
    def MarkItemTitle(self):
        r"""<p>题目的题干信息</p>
        :rtype: str
        """
        return self._MarkItemTitle

    @MarkItemTitle.setter
    def MarkItemTitle(self, MarkItemTitle):
        self._MarkItemTitle = MarkItemTitle

    @property
    def AnswerInfos(self):
        r"""<p>批改答案列表（每个小题存在多个答案，比如多个填空区域答案，循序按照从左到右，从上到下排列）</p>
        :rtype: list of AnswerInfo
        """
        return self._AnswerInfos

    @AnswerInfos.setter
    def AnswerInfos(self, AnswerInfos):
        self._AnswerInfos = AnswerInfos

    @property
    def MarkInfos(self):
        r"""<p>嵌套题目结构（如果有多层嵌套则会返回子题信息，如果没有嵌套题目则返回空）</p>
        :rtype: list of MarkInfo
        """
        return self._MarkInfos

    @MarkInfos.setter
    def MarkInfos(self, MarkInfos):
        self._MarkInfos = MarkInfos

    @property
    def QuestionPositions(self):
        r"""<p>题干坐标</p><p>单位：px</p>
        :rtype: list of int
        """
        return self._QuestionPositions

    @QuestionPositions.setter
    def QuestionPositions(self, QuestionPositions):
        self._QuestionPositions = QuestionPositions

    @property
    def QuestionImagePositions(self):
        r"""<p>题干插图坐标列表，每个元素包含一张插图的4个角点坐标</p>
        :rtype: list of Positions
        """
        return self._QuestionImagePositions

    @QuestionImagePositions.setter
    def QuestionImagePositions(self, QuestionImagePositions):
        self._QuestionImagePositions = QuestionImagePositions

    @property
    def RightAnswer(self):
        r"""<p>题目级正确答案（步骤批改时使用，包含完整解题步骤）</p>
        :rtype: str
        """
        return self._RightAnswer

    @RightAnswer.setter
    def RightAnswer(self, RightAnswer):
        self._RightAnswer = RightAnswer

    @property
    def Subject(self):
        r"""<p>学科（如语文、数学、英语）</p>
        :rtype: str
        """
        return self._Subject

    @Subject.setter
    def Subject(self, Subject):
        self._Subject = Subject

    @property
    def QuestionType(self):
        r"""<p>题型（如选择题、填空题、计算题、应用题、判断题、作文题）</p>
        :rtype: str
        """
        return self._QuestionType

    @QuestionType.setter
    def QuestionType(self, QuestionType):
        self._QuestionType = QuestionType


    def _deserialize(self, params):
        self._MarkItemTitle = params.get("MarkItemTitle")
        if params.get("AnswerInfos") is not None:
            self._AnswerInfos = []
            for item in params.get("AnswerInfos"):
                obj = AnswerInfo()
                obj._deserialize(item)
                self._AnswerInfos.append(obj)
        if params.get("MarkInfos") is not None:
            self._MarkInfos = []
            for item in params.get("MarkInfos"):
                obj = MarkInfo()
                obj._deserialize(item)
                self._MarkInfos.append(obj)
        self._QuestionPositions = params.get("QuestionPositions")
        if params.get("QuestionImagePositions") is not None:
            self._QuestionImagePositions = []
            for item in params.get("QuestionImagePositions"):
                obj = Positions()
                obj._deserialize(item)
                self._QuestionImagePositions.append(obj)
        self._RightAnswer = params.get("RightAnswer")
        self._Subject = params.get("Subject")
        self._QuestionType = params.get("QuestionType")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class MedicalInvoice(AbstractModel):
    r"""医疗票据信息

    """

    def __init__(self):
        r"""
        :param _Title: 发票名称
        :type Title: str
        :param _Code: 发票代码
        :type Code: str
        :param _Number: 发票号码
        :type Number: str
        :param _Total: 价税合计（小写）
        :type Total: str
        :param _TotalCn: 价税合计（大写）
        :type TotalCn: str
        :param _Date: 开票日期
        :type Date: str
        :param _CheckCode: 校验码
        :type CheckCode: str
        :param _Place: 发票属地
        :type Place: str
        :param _Reviewer: 复核人
        :type Reviewer: str
        """
        self._Title = None
        self._Code = None
        self._Number = None
        self._Total = None
        self._TotalCn = None
        self._Date = None
        self._CheckCode = None
        self._Place = None
        self._Reviewer = None

    @property
    def Title(self):
        r"""发票名称
        :rtype: str
        """
        return self._Title

    @Title.setter
    def Title(self, Title):
        self._Title = Title

    @property
    def Code(self):
        r"""发票代码
        :rtype: str
        """
        return self._Code

    @Code.setter
    def Code(self, Code):
        self._Code = Code

    @property
    def Number(self):
        r"""发票号码
        :rtype: str
        """
        return self._Number

    @Number.setter
    def Number(self, Number):
        self._Number = Number

    @property
    def Total(self):
        r"""价税合计（小写）
        :rtype: str
        """
        return self._Total

    @Total.setter
    def Total(self, Total):
        self._Total = Total

    @property
    def TotalCn(self):
        r"""价税合计（大写）
        :rtype: str
        """
        return self._TotalCn

    @TotalCn.setter
    def TotalCn(self, TotalCn):
        self._TotalCn = TotalCn

    @property
    def Date(self):
        r"""开票日期
        :rtype: str
        """
        return self._Date

    @Date.setter
    def Date(self, Date):
        self._Date = Date

    @property
    def CheckCode(self):
        r"""校验码
        :rtype: str
        """
        return self._CheckCode

    @CheckCode.setter
    def CheckCode(self, CheckCode):
        self._CheckCode = CheckCode

    @property
    def Place(self):
        r"""发票属地
        :rtype: str
        """
        return self._Place

    @Place.setter
    def Place(self, Place):
        self._Place = Place

    @property
    def Reviewer(self):
        r"""复核人
        :rtype: str
        """
        return self._Reviewer

    @Reviewer.setter
    def Reviewer(self, Reviewer):
        self._Reviewer = Reviewer


    def _deserialize(self, params):
        self._Title = params.get("Title")
        self._Code = params.get("Code")
        self._Number = params.get("Number")
        self._Total = params.get("Total")
        self._TotalCn = params.get("TotalCn")
        self._Date = params.get("Date")
        self._CheckCode = params.get("CheckCode")
        self._Place = params.get("Place")
        self._Reviewer = params.get("Reviewer")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class MedicalInvoiceInfo(AbstractModel):
    r"""医疗发票识别结果

    """

    def __init__(self):
        r"""
        :param _MedicalInvoiceItems: 医疗发票识别结果条目
        :type MedicalInvoiceItems: list of MedicalInvoiceItem
        """
        self._MedicalInvoiceItems = None

    @property
    def MedicalInvoiceItems(self):
        r"""医疗发票识别结果条目
        :rtype: list of MedicalInvoiceItem
        """
        return self._MedicalInvoiceItems

    @MedicalInvoiceItems.setter
    def MedicalInvoiceItems(self, MedicalInvoiceItems):
        self._MedicalInvoiceItems = MedicalInvoiceItems


    def _deserialize(self, params):
        if params.get("MedicalInvoiceItems") is not None:
            self._MedicalInvoiceItems = []
            for item in params.get("MedicalInvoiceItems"):
                obj = MedicalInvoiceItem()
                obj._deserialize(item)
                self._MedicalInvoiceItems.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class MedicalInvoiceItem(AbstractModel):
    r"""医疗发票识别结果

    """

    def __init__(self):
        r"""
        :param _Name: 识别出的字段名称
<table><tr><td>分类</td><td>name</td></tr><tr><td>票据基本信息</td><td>发票名称</td></tr><tr><td></td><td>票据代码</td></tr><tr><td></td><td>票据号码</td></tr><tr><td></td><td>电子票据代码</td></tr><tr><td></td><td>电子票据号码</td></tr><tr><td></td><td>交款人统一社会信用代码</td></tr><tr><td></td><td>校验码</td></tr><tr><td></td><td>交款人</td></tr><tr><td></td><td>开票日期</td></tr><tr><td></td><td>收款单位</td></tr><tr><td></td><td>复核人</td></tr><tr><td></td><td>收款人</td></tr><tr><td></td><td>业务流水号</td></tr><tr><td></td><td>门诊号</td></tr><tr><td></td><td>就诊日期</td></tr><tr><td></td><td>医疗机构类型</td></tr><tr><td></td><td>医保类型</td></tr><tr><td></td><td>医保编号</td></tr><tr><td></td><td>性别</td></tr><tr><td></td><td>医保统筹基金支付</td></tr><tr><td></td><td>其他支付</td></tr><tr><td></td><td>个人账户支付</td></tr><tr><td></td><td>个人现金支付</td></tr><tr><td></td><td>个人自付</td></tr><tr><td></td><td>个人自费</td></tr><tr><td></td><td>病历号</td></tr><tr><td></td><td>住院号</td></tr><tr><td></td><td>住院科别</td></tr><tr><td></td><td>住院时间</td></tr><tr><td></td><td>预缴金额</td></tr><tr><td></td><td>补缴金额</td></tr><tr><td></td><td>退费金额</td></tr><tr><td></td><td>发票属地</td></tr><tr><td></td><td>发票类型</td></tr><tr><td>总金额</td><td>总金额大写</td></tr><tr><td></td><td>总金额小写</td></tr><tr><td>收费大项</td><td>大项名称</td></tr><tr><td></td><td>大项金额</td></tr><tr><td>收费细项</td><td>项目名称</td></tr><tr><td></td><td>数量</td></tr><tr><td></td><td>单位</td></tr><tr><td></td><td>金额</td></tr><tr><td></td><td>备注</td></tr><tr><td>票据其他信息</td><td>入院时间</td></tr><tr><td></td><td>出院时间</td></tr><tr><td></td><td>住院天数</td></tr><tr><td></td><td>自付二</td></tr><tr><td></td><td>自付一</td></tr><tr><td></td><td>起付金额</td></tr><tr><td></td><td>超封顶金额</td></tr><tr><td></td><td>自费</td></tr><tr><td></td><td>本次医保范围内金额</td></tr><tr><td></td><td>累计医保内范围金额</td></tr><tr><td></td><td>门诊大额支付</td></tr><tr><td></td><td>残军补助支付</td></tr><tr><td></td><td>年度门诊大额累计支付</td></tr><tr><td></td><td>单位补充险[原公疗]支付</td></tr><tr><td></td><td>社会保障卡号</td></tr><tr><td></td><td>姓名</td></tr><tr><td></td><td>交易流水号</td></tr><tr><td></td><td>本次支付后个人账户余额</td></tr><tr><td></td><td>基金支付</td></tr><tr><td></td><td>现金支付</td></tr><tr><td></td><td>复核</td></tr><tr><td></td><td>自负</td></tr><tr><td></td><td>结算方式</td></tr><tr><td></td><td>医保统筹/公医记账</td></tr><tr><td></td><td>其他</td></tr><tr><td></td><td>个人支付金额</td></tr><tr><td></td><td>欠费</td></tr><tr><td></td><td>退休补充支付</td></tr><tr><td></td><td>医院类型</td></tr><tr><td></td><td>退款</td></tr><tr><td></td><td>补收</td></tr><tr><td></td><td>附加支付</td></tr><tr><td></td><td>分类自负</td></tr><tr><td></td><td>其它</td></tr><tr><td></td><td>预交款</td></tr><tr><td></td><td>个人缴费</td></tr></table>
        :type Name: str
        :param _Content: 识别出的字段名称对应的值，也就是字段name对应的字符串结果
        :type Content: str
        :param _Vertex: 识别出的文本行四点坐标
注意：此字段可能返回 null，表示取不到有效值。
        :type Vertex: :class:`tencentcloud.ocr.v20181119.models.Polygon`
        :param _Coord: 识别出的文本行在旋转纠正之后的图像中的像素坐标
注意：此字段可能返回 null，表示取不到有效值。
        :type Coord: :class:`tencentcloud.ocr.v20181119.models.Rect`
        """
        self._Name = None
        self._Content = None
        self._Vertex = None
        self._Coord = None

    @property
    def Name(self):
        r"""识别出的字段名称
<table><tr><td>分类</td><td>name</td></tr><tr><td>票据基本信息</td><td>发票名称</td></tr><tr><td></td><td>票据代码</td></tr><tr><td></td><td>票据号码</td></tr><tr><td></td><td>电子票据代码</td></tr><tr><td></td><td>电子票据号码</td></tr><tr><td></td><td>交款人统一社会信用代码</td></tr><tr><td></td><td>校验码</td></tr><tr><td></td><td>交款人</td></tr><tr><td></td><td>开票日期</td></tr><tr><td></td><td>收款单位</td></tr><tr><td></td><td>复核人</td></tr><tr><td></td><td>收款人</td></tr><tr><td></td><td>业务流水号</td></tr><tr><td></td><td>门诊号</td></tr><tr><td></td><td>就诊日期</td></tr><tr><td></td><td>医疗机构类型</td></tr><tr><td></td><td>医保类型</td></tr><tr><td></td><td>医保编号</td></tr><tr><td></td><td>性别</td></tr><tr><td></td><td>医保统筹基金支付</td></tr><tr><td></td><td>其他支付</td></tr><tr><td></td><td>个人账户支付</td></tr><tr><td></td><td>个人现金支付</td></tr><tr><td></td><td>个人自付</td></tr><tr><td></td><td>个人自费</td></tr><tr><td></td><td>病历号</td></tr><tr><td></td><td>住院号</td></tr><tr><td></td><td>住院科别</td></tr><tr><td></td><td>住院时间</td></tr><tr><td></td><td>预缴金额</td></tr><tr><td></td><td>补缴金额</td></tr><tr><td></td><td>退费金额</td></tr><tr><td></td><td>发票属地</td></tr><tr><td></td><td>发票类型</td></tr><tr><td>总金额</td><td>总金额大写</td></tr><tr><td></td><td>总金额小写</td></tr><tr><td>收费大项</td><td>大项名称</td></tr><tr><td></td><td>大项金额</td></tr><tr><td>收费细项</td><td>项目名称</td></tr><tr><td></td><td>数量</td></tr><tr><td></td><td>单位</td></tr><tr><td></td><td>金额</td></tr><tr><td></td><td>备注</td></tr><tr><td>票据其他信息</td><td>入院时间</td></tr><tr><td></td><td>出院时间</td></tr><tr><td></td><td>住院天数</td></tr><tr><td></td><td>自付二</td></tr><tr><td></td><td>自付一</td></tr><tr><td></td><td>起付金额</td></tr><tr><td></td><td>超封顶金额</td></tr><tr><td></td><td>自费</td></tr><tr><td></td><td>本次医保范围内金额</td></tr><tr><td></td><td>累计医保内范围金额</td></tr><tr><td></td><td>门诊大额支付</td></tr><tr><td></td><td>残军补助支付</td></tr><tr><td></td><td>年度门诊大额累计支付</td></tr><tr><td></td><td>单位补充险[原公疗]支付</td></tr><tr><td></td><td>社会保障卡号</td></tr><tr><td></td><td>姓名</td></tr><tr><td></td><td>交易流水号</td></tr><tr><td></td><td>本次支付后个人账户余额</td></tr><tr><td></td><td>基金支付</td></tr><tr><td></td><td>现金支付</td></tr><tr><td></td><td>复核</td></tr><tr><td></td><td>自负</td></tr><tr><td></td><td>结算方式</td></tr><tr><td></td><td>医保统筹/公医记账</td></tr><tr><td></td><td>其他</td></tr><tr><td></td><td>个人支付金额</td></tr><tr><td></td><td>欠费</td></tr><tr><td></td><td>退休补充支付</td></tr><tr><td></td><td>医院类型</td></tr><tr><td></td><td>退款</td></tr><tr><td></td><td>补收</td></tr><tr><td></td><td>附加支付</td></tr><tr><td></td><td>分类自负</td></tr><tr><td></td><td>其它</td></tr><tr><td></td><td>预交款</td></tr><tr><td></td><td>个人缴费</td></tr></table>
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Content(self):
        r"""识别出的字段名称对应的值，也就是字段name对应的字符串结果
        :rtype: str
        """
        return self._Content

    @Content.setter
    def Content(self, Content):
        self._Content = Content

    @property
    def Vertex(self):
        r"""识别出的文本行四点坐标
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Polygon`
        """
        return self._Vertex

    @Vertex.setter
    def Vertex(self, Vertex):
        self._Vertex = Vertex

    @property
    def Coord(self):
        r"""识别出的文本行在旋转纠正之后的图像中的像素坐标
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Rect`
        """
        return self._Coord

    @Coord.setter
    def Coord(self, Coord):
        self._Coord = Coord


    def _deserialize(self, params):
        self._Name = params.get("Name")
        self._Content = params.get("Content")
        if params.get("Vertex") is not None:
            self._Vertex = Polygon()
            self._Vertex._deserialize(params.get("Vertex"))
        if params.get("Coord") is not None:
            self._Coord = Rect()
            self._Coord._deserialize(params.get("Coord"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class MixedInvoiceDetectRequest(AbstractModel):
    r"""MixedInvoiceDetect请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ReturnImage: 是否需要返回裁剪后的图片。
        :type ReturnImage: bool
        :param _ImageBase64: 图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        :param _IsPdf: 是否开启PDF识别，默认值为true，开启后可同时支持图片和PDF的识别。
        :type IsPdf: bool
        :param _PdfPageNumber: 需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :type PdfPageNumber: int
        """
        self._ReturnImage = None
        self._ImageBase64 = None
        self._ImageUrl = None
        self._IsPdf = None
        self._PdfPageNumber = None

    @property
    def ReturnImage(self):
        r"""是否需要返回裁剪后的图片。
        :rtype: bool
        """
        return self._ReturnImage

    @ReturnImage.setter
    def ReturnImage(self, ReturnImage):
        self._ReturnImage = ReturnImage

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def IsPdf(self):
        r"""是否开启PDF识别，默认值为true，开启后可同时支持图片和PDF的识别。
        :rtype: bool
        """
        return self._IsPdf

    @IsPdf.setter
    def IsPdf(self, IsPdf):
        self._IsPdf = IsPdf

    @property
    def PdfPageNumber(self):
        r"""需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :rtype: int
        """
        return self._PdfPageNumber

    @PdfPageNumber.setter
    def PdfPageNumber(self, PdfPageNumber):
        self._PdfPageNumber = PdfPageNumber


    def _deserialize(self, params):
        self._ReturnImage = params.get("ReturnImage")
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._IsPdf = params.get("IsPdf")
        self._PdfPageNumber = params.get("PdfPageNumber")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class MixedInvoiceDetectResponse(AbstractModel):
    r"""MixedInvoiceDetect返回参数结构体

    """

    def __init__(self):
        r"""
        :param _InvoiceDetectInfos: 检测出的票据类型列表，具体内容请点击左侧链接。
        :type InvoiceDetectInfos: list of InvoiceDetectInfo
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._InvoiceDetectInfos = None
        self._RequestId = None

    @property
    def InvoiceDetectInfos(self):
        r"""检测出的票据类型列表，具体内容请点击左侧链接。
        :rtype: list of InvoiceDetectInfo
        """
        return self._InvoiceDetectInfos

    @InvoiceDetectInfos.setter
    def InvoiceDetectInfos(self, InvoiceDetectInfos):
        self._InvoiceDetectInfos = InvoiceDetectInfos

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("InvoiceDetectInfos") is not None:
            self._InvoiceDetectInfos = []
            for item in params.get("InvoiceDetectInfos"):
                obj = InvoiceDetectInfo()
                obj._deserialize(item)
                self._InvoiceDetectInfos.append(obj)
        self._RequestId = params.get("RequestId")


class MixedInvoiceItem(AbstractModel):
    r"""混贴票据单张发票识别信息

    """

    def __init__(self):
        r"""
        :param _Code: 识别结果。
OK：表示识别成功；FailedOperation.UnsupportedInvioce：表示不支持识别；
FailedOperation.UnKnowError：表示识别失败；
其它错误码见各个票据接口的定义。
        :type Code: str
        :param _Type: 识别出的图片所属的票据类型。
-1：未知类型
0：出租车发票
1：定额发票
2：火车票
3：增值税发票
5：机票行程单
8：通用机打发票
9：汽车票
10：轮船票
11：增值税发票（卷票）
12：购车发票
13：过路过桥费发票
15：非税发票
16：全电发票
        :type Type: int
        :param _Rect: 识别出的图片在混贴票据图片中的位置信息。与Angel结合可以得出原图位置，组成RotatedRect((X+0.5\*Width,Y+0.5\*Height), (Width, Height), Angle)，详情可参考OpenCV文档。
        :type Rect: :class:`tencentcloud.ocr.v20181119.models.Rect`
        :param _Angle: 识别出的图片在混贴票据图片中的旋转角度。
        :type Angle: float
        :param _SingleInvoiceInfos: 识别到的内容。
        :type SingleInvoiceInfos: list of SingleInvoiceInfo
        :param _Page: 发票处于识别图片或PDF文件中的页教，默认从1开始。
        :type Page: int
        """
        self._Code = None
        self._Type = None
        self._Rect = None
        self._Angle = None
        self._SingleInvoiceInfos = None
        self._Page = None

    @property
    def Code(self):
        r"""识别结果。
OK：表示识别成功；FailedOperation.UnsupportedInvioce：表示不支持识别；
FailedOperation.UnKnowError：表示识别失败；
其它错误码见各个票据接口的定义。
        :rtype: str
        """
        return self._Code

    @Code.setter
    def Code(self, Code):
        self._Code = Code

    @property
    def Type(self):
        r"""识别出的图片所属的票据类型。
-1：未知类型
0：出租车发票
1：定额发票
2：火车票
3：增值税发票
5：机票行程单
8：通用机打发票
9：汽车票
10：轮船票
11：增值税发票（卷票）
12：购车发票
13：过路过桥费发票
15：非税发票
16：全电发票
        :rtype: int
        """
        return self._Type

    @Type.setter
    def Type(self, Type):
        self._Type = Type

    @property
    def Rect(self):
        r"""识别出的图片在混贴票据图片中的位置信息。与Angel结合可以得出原图位置，组成RotatedRect((X+0.5\*Width,Y+0.5\*Height), (Width, Height), Angle)，详情可参考OpenCV文档。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Rect`
        """
        return self._Rect

    @Rect.setter
    def Rect(self, Rect):
        self._Rect = Rect

    @property
    def Angle(self):
        r"""识别出的图片在混贴票据图片中的旋转角度。
        :rtype: float
        """
        return self._Angle

    @Angle.setter
    def Angle(self, Angle):
        self._Angle = Angle

    @property
    def SingleInvoiceInfos(self):
        r"""识别到的内容。
        :rtype: list of SingleInvoiceInfo
        """
        return self._SingleInvoiceInfos

    @SingleInvoiceInfos.setter
    def SingleInvoiceInfos(self, SingleInvoiceInfos):
        self._SingleInvoiceInfos = SingleInvoiceInfos

    @property
    def Page(self):
        r"""发票处于识别图片或PDF文件中的页教，默认从1开始。
        :rtype: int
        """
        return self._Page

    @Page.setter
    def Page(self, Page):
        self._Page = Page


    def _deserialize(self, params):
        self._Code = params.get("Code")
        self._Type = params.get("Type")
        if params.get("Rect") is not None:
            self._Rect = Rect()
            self._Rect._deserialize(params.get("Rect"))
        self._Angle = params.get("Angle")
        if params.get("SingleInvoiceInfos") is not None:
            self._SingleInvoiceInfos = []
            for item in params.get("SingleInvoiceInfos"):
                obj = SingleInvoiceInfo()
                obj._deserialize(item)
                self._SingleInvoiceInfos.append(obj)
        self._Page = params.get("Page")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class MixedInvoiceOCRRequest(AbstractModel):
    r"""MixedInvoiceOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG、PDF，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG、PDF，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        :param _Types: 需要识别的票据类型列表，为空或不填表示识别全部类型。
0：出租车发票
1：定额发票
2：火车票
3：增值税发票
5：机票行程单
8：通用机打发票
9：汽车票
10：轮船票
11：增值税发票（卷票 ）
12：购车发票
13：过路过桥费发票
15：非税发票
16：全电发票
----------------------
-1：其他发票,（只传入此类型时，图片均采用其他票类型进行识别）
        :type Types: list of int
        :param _ReturnOther: 是否识别其他类型发票，默认为Yes
Yes：识别其他类型发票
No：不识别其他类型发票
        :type ReturnOther: str
        :param _IsPdf: 是否开启PDF识别，默认值为true，开启后可同时支持图片和PDF的识别。
        :type IsPdf: bool
        :param _PdfPageNumber: 需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :type PdfPageNumber: int
        :param _ReturnMultiplePage: 是否开启PDF多页识别，默认值为false，开启后可同时支持多页PDF的识别返回，仅支持返回文件前30页。开启后IsPDF和PdfPageNumber入参不进行控制。
        :type ReturnMultiplePage: bool
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._Types = None
        self._ReturnOther = None
        self._IsPdf = None
        self._PdfPageNumber = None
        self._ReturnMultiplePage = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG、PDF，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG、PDF，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def Types(self):
        r"""需要识别的票据类型列表，为空或不填表示识别全部类型。
0：出租车发票
1：定额发票
2：火车票
3：增值税发票
5：机票行程单
8：通用机打发票
9：汽车票
10：轮船票
11：增值税发票（卷票 ）
12：购车发票
13：过路过桥费发票
15：非税发票
16：全电发票
----------------------
-1：其他发票,（只传入此类型时，图片均采用其他票类型进行识别）
        :rtype: list of int
        """
        return self._Types

    @Types.setter
    def Types(self, Types):
        self._Types = Types

    @property
    def ReturnOther(self):
        r"""是否识别其他类型发票，默认为Yes
Yes：识别其他类型发票
No：不识别其他类型发票
        :rtype: str
        """
        return self._ReturnOther

    @ReturnOther.setter
    def ReturnOther(self, ReturnOther):
        self._ReturnOther = ReturnOther

    @property
    def IsPdf(self):
        r"""是否开启PDF识别，默认值为true，开启后可同时支持图片和PDF的识别。
        :rtype: bool
        """
        return self._IsPdf

    @IsPdf.setter
    def IsPdf(self, IsPdf):
        self._IsPdf = IsPdf

    @property
    def PdfPageNumber(self):
        r"""需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :rtype: int
        """
        return self._PdfPageNumber

    @PdfPageNumber.setter
    def PdfPageNumber(self, PdfPageNumber):
        self._PdfPageNumber = PdfPageNumber

    @property
    def ReturnMultiplePage(self):
        r"""是否开启PDF多页识别，默认值为false，开启后可同时支持多页PDF的识别返回，仅支持返回文件前30页。开启后IsPDF和PdfPageNumber入参不进行控制。
        :rtype: bool
        """
        return self._ReturnMultiplePage

    @ReturnMultiplePage.setter
    def ReturnMultiplePage(self, ReturnMultiplePage):
        self._ReturnMultiplePage = ReturnMultiplePage


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._Types = params.get("Types")
        self._ReturnOther = params.get("ReturnOther")
        self._IsPdf = params.get("IsPdf")
        self._PdfPageNumber = params.get("PdfPageNumber")
        self._ReturnMultiplePage = params.get("ReturnMultiplePage")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class MixedInvoiceOCRResponse(AbstractModel):
    r"""MixedInvoiceOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _MixedInvoiceItems: 混贴票据识别结果，具体内容请点击左侧链接。
        :type MixedInvoiceItems: list of MixedInvoiceItem
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._MixedInvoiceItems = None
        self._RequestId = None

    @property
    def MixedInvoiceItems(self):
        r"""混贴票据识别结果，具体内容请点击左侧链接。
        :rtype: list of MixedInvoiceItem
        """
        return self._MixedInvoiceItems

    @MixedInvoiceItems.setter
    def MixedInvoiceItems(self, MixedInvoiceItems):
        self._MixedInvoiceItems = MixedInvoiceItems

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("MixedInvoiceItems") is not None:
            self._MixedInvoiceItems = []
            for item in params.get("MixedInvoiceItems"):
                obj = MixedInvoiceItem()
                obj._deserialize(item)
                self._MixedInvoiceItems.append(obj)
        self._RequestId = params.get("RequestId")


class MotorVehicleSaleInvoice(AbstractModel):
    r"""机动车销售统一发票

    """

    def __init__(self):
        r"""
        :param _Title: 发票名称
        :type Title: str
        :param _Code: 发票代码
        :type Code: str
        :param _Number: 发票号码
        :type Number: str
        :param _Date: 开票日期
        :type Date: str
        :param _PretaxAmount: 税前金额
        :type PretaxAmount: str
        :param _Total: 价税合计（小写）
        :type Total: str
        :param _TotalCn: 价税合计（大写）
        :type TotalCn: str
        :param _Seller: 销售方名称
        :type Seller: str
        :param _SellerTaxID: 销售方单位代码
        :type SellerTaxID: str
        :param _SellerTel: 销售方电话
        :type SellerTel: str
        :param _SellerAddress: 销售方地址
        :type SellerAddress: str
        :param _SellerBank: 销售方开户行
        :type SellerBank: str
        :param _SellerBankAccount: 销售方银行账号
        :type SellerBankAccount: str
        :param _Buyer: 购买方名称
        :type Buyer: str
        :param _BuyerTaxID: 购买方纳税人识别号
        :type BuyerTaxID: str
        :param _BuyerID: 购买方身份证号码/组织机构代码
        :type BuyerID: str
        :param _TaxAuthorities: 主管税务机关
        :type TaxAuthorities: str
        :param _TaxAuthoritiesCode: 主管税务机关代码
        :type TaxAuthoritiesCode: str
        :param _VIN: 车辆识别代码
        :type VIN: str
        :param _VehicleModel: 厂牌型号
        :type VehicleModel: str
        :param _VehicleEngineCode: 发动机号码
        :type VehicleEngineCode: str
        :param _CertificateNumber: 合格证号
        :type CertificateNumber: str
        :param _InspectionNumber: 商检单号
        :type InspectionNumber: str
        :param _MachineID: 机器编号
        :type MachineID: str
        :param _VehicleType: 车辆类型
        :type VehicleType: str
        :param _Kind: 发票消费类型
        :type Kind: str
        :param _Province: 省
        :type Province: str
        :param _City: 市
        :type City: str
        :param _Tax: 合计税额
        :type Tax: str
        :param _TaxRate: 税率
        :type TaxRate: str
        :param _CompanySealMark: 是否有公司印章（0：没有，1：有）
        :type CompanySealMark: int
        :param _Tonnage: 吨位
        :type Tonnage: str
        :param _Remark: 备注
        :type Remark: str
        :param _FormType: 发票联次
        :type FormType: str
        :param _FormName: 发票联名
        :type FormName: str
        :param _Issuer: 开票人
        :type Issuer: str
        :param _TaxNum: 进口证明书号
        :type TaxNum: str
        :param _TaxPayNum: 完税凭证号码
        :type TaxPayNum: str
        :param _TaxCode: 税控码
        :type TaxCode: str
        :param _MaxPeopleNum: 限乘人数
        :type MaxPeopleNum: str
        :param _Origin: 产地
        :type Origin: str
        :param _MachineCode: 机打发票代码
        :type MachineCode: str
        :param _MachineNumber: 机打发票号码
        :type MachineNumber: str
        :param _QRCodeMark: 是否存在二维码（1：有，0：无）
        :type QRCodeMark: int
        """
        self._Title = None
        self._Code = None
        self._Number = None
        self._Date = None
        self._PretaxAmount = None
        self._Total = None
        self._TotalCn = None
        self._Seller = None
        self._SellerTaxID = None
        self._SellerTel = None
        self._SellerAddress = None
        self._SellerBank = None
        self._SellerBankAccount = None
        self._Buyer = None
        self._BuyerTaxID = None
        self._BuyerID = None
        self._TaxAuthorities = None
        self._TaxAuthoritiesCode = None
        self._VIN = None
        self._VehicleModel = None
        self._VehicleEngineCode = None
        self._CertificateNumber = None
        self._InspectionNumber = None
        self._MachineID = None
        self._VehicleType = None
        self._Kind = None
        self._Province = None
        self._City = None
        self._Tax = None
        self._TaxRate = None
        self._CompanySealMark = None
        self._Tonnage = None
        self._Remark = None
        self._FormType = None
        self._FormName = None
        self._Issuer = None
        self._TaxNum = None
        self._TaxPayNum = None
        self._TaxCode = None
        self._MaxPeopleNum = None
        self._Origin = None
        self._MachineCode = None
        self._MachineNumber = None
        self._QRCodeMark = None

    @property
    def Title(self):
        r"""发票名称
        :rtype: str
        """
        return self._Title

    @Title.setter
    def Title(self, Title):
        self._Title = Title

    @property
    def Code(self):
        r"""发票代码
        :rtype: str
        """
        return self._Code

    @Code.setter
    def Code(self, Code):
        self._Code = Code

    @property
    def Number(self):
        r"""发票号码
        :rtype: str
        """
        return self._Number

    @Number.setter
    def Number(self, Number):
        self._Number = Number

    @property
    def Date(self):
        r"""开票日期
        :rtype: str
        """
        return self._Date

    @Date.setter
    def Date(self, Date):
        self._Date = Date

    @property
    def PretaxAmount(self):
        r"""税前金额
        :rtype: str
        """
        return self._PretaxAmount

    @PretaxAmount.setter
    def PretaxAmount(self, PretaxAmount):
        self._PretaxAmount = PretaxAmount

    @property
    def Total(self):
        r"""价税合计（小写）
        :rtype: str
        """
        return self._Total

    @Total.setter
    def Total(self, Total):
        self._Total = Total

    @property
    def TotalCn(self):
        r"""价税合计（大写）
        :rtype: str
        """
        return self._TotalCn

    @TotalCn.setter
    def TotalCn(self, TotalCn):
        self._TotalCn = TotalCn

    @property
    def Seller(self):
        r"""销售方名称
        :rtype: str
        """
        return self._Seller

    @Seller.setter
    def Seller(self, Seller):
        self._Seller = Seller

    @property
    def SellerTaxID(self):
        r"""销售方单位代码
        :rtype: str
        """
        return self._SellerTaxID

    @SellerTaxID.setter
    def SellerTaxID(self, SellerTaxID):
        self._SellerTaxID = SellerTaxID

    @property
    def SellerTel(self):
        r"""销售方电话
        :rtype: str
        """
        return self._SellerTel

    @SellerTel.setter
    def SellerTel(self, SellerTel):
        self._SellerTel = SellerTel

    @property
    def SellerAddress(self):
        r"""销售方地址
        :rtype: str
        """
        return self._SellerAddress

    @SellerAddress.setter
    def SellerAddress(self, SellerAddress):
        self._SellerAddress = SellerAddress

    @property
    def SellerBank(self):
        r"""销售方开户行
        :rtype: str
        """
        return self._SellerBank

    @SellerBank.setter
    def SellerBank(self, SellerBank):
        self._SellerBank = SellerBank

    @property
    def SellerBankAccount(self):
        r"""销售方银行账号
        :rtype: str
        """
        return self._SellerBankAccount

    @SellerBankAccount.setter
    def SellerBankAccount(self, SellerBankAccount):
        self._SellerBankAccount = SellerBankAccount

    @property
    def Buyer(self):
        r"""购买方名称
        :rtype: str
        """
        return self._Buyer

    @Buyer.setter
    def Buyer(self, Buyer):
        self._Buyer = Buyer

    @property
    def BuyerTaxID(self):
        r"""购买方纳税人识别号
        :rtype: str
        """
        return self._BuyerTaxID

    @BuyerTaxID.setter
    def BuyerTaxID(self, BuyerTaxID):
        self._BuyerTaxID = BuyerTaxID

    @property
    def BuyerID(self):
        r"""购买方身份证号码/组织机构代码
        :rtype: str
        """
        return self._BuyerID

    @BuyerID.setter
    def BuyerID(self, BuyerID):
        self._BuyerID = BuyerID

    @property
    def TaxAuthorities(self):
        r"""主管税务机关
        :rtype: str
        """
        return self._TaxAuthorities

    @TaxAuthorities.setter
    def TaxAuthorities(self, TaxAuthorities):
        self._TaxAuthorities = TaxAuthorities

    @property
    def TaxAuthoritiesCode(self):
        r"""主管税务机关代码
        :rtype: str
        """
        return self._TaxAuthoritiesCode

    @TaxAuthoritiesCode.setter
    def TaxAuthoritiesCode(self, TaxAuthoritiesCode):
        self._TaxAuthoritiesCode = TaxAuthoritiesCode

    @property
    def VIN(self):
        r"""车辆识别代码
        :rtype: str
        """
        return self._VIN

    @VIN.setter
    def VIN(self, VIN):
        self._VIN = VIN

    @property
    def VehicleModel(self):
        r"""厂牌型号
        :rtype: str
        """
        return self._VehicleModel

    @VehicleModel.setter
    def VehicleModel(self, VehicleModel):
        self._VehicleModel = VehicleModel

    @property
    def VehicleEngineCode(self):
        r"""发动机号码
        :rtype: str
        """
        return self._VehicleEngineCode

    @VehicleEngineCode.setter
    def VehicleEngineCode(self, VehicleEngineCode):
        self._VehicleEngineCode = VehicleEngineCode

    @property
    def CertificateNumber(self):
        r"""合格证号
        :rtype: str
        """
        return self._CertificateNumber

    @CertificateNumber.setter
    def CertificateNumber(self, CertificateNumber):
        self._CertificateNumber = CertificateNumber

    @property
    def InspectionNumber(self):
        r"""商检单号
        :rtype: str
        """
        return self._InspectionNumber

    @InspectionNumber.setter
    def InspectionNumber(self, InspectionNumber):
        self._InspectionNumber = InspectionNumber

    @property
    def MachineID(self):
        r"""机器编号
        :rtype: str
        """
        return self._MachineID

    @MachineID.setter
    def MachineID(self, MachineID):
        self._MachineID = MachineID

    @property
    def VehicleType(self):
        r"""车辆类型
        :rtype: str
        """
        return self._VehicleType

    @VehicleType.setter
    def VehicleType(self, VehicleType):
        self._VehicleType = VehicleType

    @property
    def Kind(self):
        r"""发票消费类型
        :rtype: str
        """
        return self._Kind

    @Kind.setter
    def Kind(self, Kind):
        self._Kind = Kind

    @property
    def Province(self):
        r"""省
        :rtype: str
        """
        return self._Province

    @Province.setter
    def Province(self, Province):
        self._Province = Province

    @property
    def City(self):
        r"""市
        :rtype: str
        """
        return self._City

    @City.setter
    def City(self, City):
        self._City = City

    @property
    def Tax(self):
        r"""合计税额
        :rtype: str
        """
        return self._Tax

    @Tax.setter
    def Tax(self, Tax):
        self._Tax = Tax

    @property
    def TaxRate(self):
        r"""税率
        :rtype: str
        """
        return self._TaxRate

    @TaxRate.setter
    def TaxRate(self, TaxRate):
        self._TaxRate = TaxRate

    @property
    def CompanySealMark(self):
        r"""是否有公司印章（0：没有，1：有）
        :rtype: int
        """
        return self._CompanySealMark

    @CompanySealMark.setter
    def CompanySealMark(self, CompanySealMark):
        self._CompanySealMark = CompanySealMark

    @property
    def Tonnage(self):
        r"""吨位
        :rtype: str
        """
        return self._Tonnage

    @Tonnage.setter
    def Tonnage(self, Tonnage):
        self._Tonnage = Tonnage

    @property
    def Remark(self):
        r"""备注
        :rtype: str
        """
        return self._Remark

    @Remark.setter
    def Remark(self, Remark):
        self._Remark = Remark

    @property
    def FormType(self):
        r"""发票联次
        :rtype: str
        """
        return self._FormType

    @FormType.setter
    def FormType(self, FormType):
        self._FormType = FormType

    @property
    def FormName(self):
        r"""发票联名
        :rtype: str
        """
        return self._FormName

    @FormName.setter
    def FormName(self, FormName):
        self._FormName = FormName

    @property
    def Issuer(self):
        r"""开票人
        :rtype: str
        """
        return self._Issuer

    @Issuer.setter
    def Issuer(self, Issuer):
        self._Issuer = Issuer

    @property
    def TaxNum(self):
        r"""进口证明书号
        :rtype: str
        """
        return self._TaxNum

    @TaxNum.setter
    def TaxNum(self, TaxNum):
        self._TaxNum = TaxNum

    @property
    def TaxPayNum(self):
        r"""完税凭证号码
        :rtype: str
        """
        return self._TaxPayNum

    @TaxPayNum.setter
    def TaxPayNum(self, TaxPayNum):
        self._TaxPayNum = TaxPayNum

    @property
    def TaxCode(self):
        r"""税控码
        :rtype: str
        """
        return self._TaxCode

    @TaxCode.setter
    def TaxCode(self, TaxCode):
        self._TaxCode = TaxCode

    @property
    def MaxPeopleNum(self):
        r"""限乘人数
        :rtype: str
        """
        return self._MaxPeopleNum

    @MaxPeopleNum.setter
    def MaxPeopleNum(self, MaxPeopleNum):
        self._MaxPeopleNum = MaxPeopleNum

    @property
    def Origin(self):
        r"""产地
        :rtype: str
        """
        return self._Origin

    @Origin.setter
    def Origin(self, Origin):
        self._Origin = Origin

    @property
    def MachineCode(self):
        r"""机打发票代码
        :rtype: str
        """
        return self._MachineCode

    @MachineCode.setter
    def MachineCode(self, MachineCode):
        self._MachineCode = MachineCode

    @property
    def MachineNumber(self):
        r"""机打发票号码
        :rtype: str
        """
        return self._MachineNumber

    @MachineNumber.setter
    def MachineNumber(self, MachineNumber):
        self._MachineNumber = MachineNumber

    @property
    def QRCodeMark(self):
        r"""是否存在二维码（1：有，0：无）
        :rtype: int
        """
        return self._QRCodeMark

    @QRCodeMark.setter
    def QRCodeMark(self, QRCodeMark):
        self._QRCodeMark = QRCodeMark


    def _deserialize(self, params):
        self._Title = params.get("Title")
        self._Code = params.get("Code")
        self._Number = params.get("Number")
        self._Date = params.get("Date")
        self._PretaxAmount = params.get("PretaxAmount")
        self._Total = params.get("Total")
        self._TotalCn = params.get("TotalCn")
        self._Seller = params.get("Seller")
        self._SellerTaxID = params.get("SellerTaxID")
        self._SellerTel = params.get("SellerTel")
        self._SellerAddress = params.get("SellerAddress")
        self._SellerBank = params.get("SellerBank")
        self._SellerBankAccount = params.get("SellerBankAccount")
        self._Buyer = params.get("Buyer")
        self._BuyerTaxID = params.get("BuyerTaxID")
        self._BuyerID = params.get("BuyerID")
        self._TaxAuthorities = params.get("TaxAuthorities")
        self._TaxAuthoritiesCode = params.get("TaxAuthoritiesCode")
        self._VIN = params.get("VIN")
        self._VehicleModel = params.get("VehicleModel")
        self._VehicleEngineCode = params.get("VehicleEngineCode")
        self._CertificateNumber = params.get("CertificateNumber")
        self._InspectionNumber = params.get("InspectionNumber")
        self._MachineID = params.get("MachineID")
        self._VehicleType = params.get("VehicleType")
        self._Kind = params.get("Kind")
        self._Province = params.get("Province")
        self._City = params.get("City")
        self._Tax = params.get("Tax")
        self._TaxRate = params.get("TaxRate")
        self._CompanySealMark = params.get("CompanySealMark")
        self._Tonnage = params.get("Tonnage")
        self._Remark = params.get("Remark")
        self._FormType = params.get("FormType")
        self._FormName = params.get("FormName")
        self._Issuer = params.get("Issuer")
        self._TaxNum = params.get("TaxNum")
        self._TaxPayNum = params.get("TaxPayNum")
        self._TaxCode = params.get("TaxCode")
        self._MaxPeopleNum = params.get("MaxPeopleNum")
        self._Origin = params.get("Origin")
        self._MachineCode = params.get("MachineCode")
        self._MachineNumber = params.get("MachineNumber")
        self._QRCodeMark = params.get("QRCodeMark")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class NonTaxIncomeBill(AbstractModel):
    r"""非税收入

    """

    def __init__(self):
        r"""
        :param _Title: 发票名称
        :type Title: str
        :param _Number: 发票号码
        :type Number: str
        :param _Code: 发票代码
        :type Code: str
        :param _CheckCode: 校验码
        :type CheckCode: str
        :param _Date: 开票日期
        :type Date: str
        :param _Total: 价税合计（小写）
        :type Total: str
        :param _TotalCn: 价税合计（大写）
        :type TotalCn: str
        :param _Buyer: 交款人名称
        :type Buyer: str
        :param _BuyerTaxID: 交款人纳税人识别号
        :type BuyerTaxID: str
        :param _Seller: 收款人名称
        :type Seller: str
        :param _SellerCompany: 收款单位名称
        :type SellerCompany: str
        :param _Remark: 备注
        :type Remark: str
        :param _CurrencyCode: 币种
        :type CurrencyCode: str
        :param _Reviewer: 复核人
        :type Reviewer: str
        :param _QRCodeMark: 是否存在二维码（1：有，0：无）
        :type QRCodeMark: int
        :param _OtherInfo: 其他信息
        :type OtherInfo: str
        :param _PaymentCode: 缴款码
        :type PaymentCode: str
        :param _ReceiveUnitCode: 执收单位编码
        :type ReceiveUnitCode: str
        :param _Receiver: 执收单位名称
        :type Receiver: str
        :param _Operator: 经办人
        :type Operator: str
        :param _PayerAccount: 付款人账号
        :type PayerAccount: str
        :param _PayerBank: 付款人开户银行
        :type PayerBank: str
        :param _ReceiverAccount: 收款人账号
        :type ReceiverAccount: str
        :param _ReceiverBank: 收款人开户银行
        :type ReceiverBank: str
        :param _NonTaxItems: 条目
        :type NonTaxItems: list of NonTaxItem
        """
        self._Title = None
        self._Number = None
        self._Code = None
        self._CheckCode = None
        self._Date = None
        self._Total = None
        self._TotalCn = None
        self._Buyer = None
        self._BuyerTaxID = None
        self._Seller = None
        self._SellerCompany = None
        self._Remark = None
        self._CurrencyCode = None
        self._Reviewer = None
        self._QRCodeMark = None
        self._OtherInfo = None
        self._PaymentCode = None
        self._ReceiveUnitCode = None
        self._Receiver = None
        self._Operator = None
        self._PayerAccount = None
        self._PayerBank = None
        self._ReceiverAccount = None
        self._ReceiverBank = None
        self._NonTaxItems = None

    @property
    def Title(self):
        r"""发票名称
        :rtype: str
        """
        return self._Title

    @Title.setter
    def Title(self, Title):
        self._Title = Title

    @property
    def Number(self):
        r"""发票号码
        :rtype: str
        """
        return self._Number

    @Number.setter
    def Number(self, Number):
        self._Number = Number

    @property
    def Code(self):
        r"""发票代码
        :rtype: str
        """
        return self._Code

    @Code.setter
    def Code(self, Code):
        self._Code = Code

    @property
    def CheckCode(self):
        r"""校验码
        :rtype: str
        """
        return self._CheckCode

    @CheckCode.setter
    def CheckCode(self, CheckCode):
        self._CheckCode = CheckCode

    @property
    def Date(self):
        r"""开票日期
        :rtype: str
        """
        return self._Date

    @Date.setter
    def Date(self, Date):
        self._Date = Date

    @property
    def Total(self):
        r"""价税合计（小写）
        :rtype: str
        """
        return self._Total

    @Total.setter
    def Total(self, Total):
        self._Total = Total

    @property
    def TotalCn(self):
        r"""价税合计（大写）
        :rtype: str
        """
        return self._TotalCn

    @TotalCn.setter
    def TotalCn(self, TotalCn):
        self._TotalCn = TotalCn

    @property
    def Buyer(self):
        r"""交款人名称
        :rtype: str
        """
        return self._Buyer

    @Buyer.setter
    def Buyer(self, Buyer):
        self._Buyer = Buyer

    @property
    def BuyerTaxID(self):
        r"""交款人纳税人识别号
        :rtype: str
        """
        return self._BuyerTaxID

    @BuyerTaxID.setter
    def BuyerTaxID(self, BuyerTaxID):
        self._BuyerTaxID = BuyerTaxID

    @property
    def Seller(self):
        r"""收款人名称
        :rtype: str
        """
        return self._Seller

    @Seller.setter
    def Seller(self, Seller):
        self._Seller = Seller

    @property
    def SellerCompany(self):
        r"""收款单位名称
        :rtype: str
        """
        return self._SellerCompany

    @SellerCompany.setter
    def SellerCompany(self, SellerCompany):
        self._SellerCompany = SellerCompany

    @property
    def Remark(self):
        r"""备注
        :rtype: str
        """
        return self._Remark

    @Remark.setter
    def Remark(self, Remark):
        self._Remark = Remark

    @property
    def CurrencyCode(self):
        r"""币种
        :rtype: str
        """
        return self._CurrencyCode

    @CurrencyCode.setter
    def CurrencyCode(self, CurrencyCode):
        self._CurrencyCode = CurrencyCode

    @property
    def Reviewer(self):
        r"""复核人
        :rtype: str
        """
        return self._Reviewer

    @Reviewer.setter
    def Reviewer(self, Reviewer):
        self._Reviewer = Reviewer

    @property
    def QRCodeMark(self):
        r"""是否存在二维码（1：有，0：无）
        :rtype: int
        """
        return self._QRCodeMark

    @QRCodeMark.setter
    def QRCodeMark(self, QRCodeMark):
        self._QRCodeMark = QRCodeMark

    @property
    def OtherInfo(self):
        r"""其他信息
        :rtype: str
        """
        return self._OtherInfo

    @OtherInfo.setter
    def OtherInfo(self, OtherInfo):
        self._OtherInfo = OtherInfo

    @property
    def PaymentCode(self):
        r"""缴款码
        :rtype: str
        """
        return self._PaymentCode

    @PaymentCode.setter
    def PaymentCode(self, PaymentCode):
        self._PaymentCode = PaymentCode

    @property
    def ReceiveUnitCode(self):
        r"""执收单位编码
        :rtype: str
        """
        return self._ReceiveUnitCode

    @ReceiveUnitCode.setter
    def ReceiveUnitCode(self, ReceiveUnitCode):
        self._ReceiveUnitCode = ReceiveUnitCode

    @property
    def Receiver(self):
        r"""执收单位名称
        :rtype: str
        """
        return self._Receiver

    @Receiver.setter
    def Receiver(self, Receiver):
        self._Receiver = Receiver

    @property
    def Operator(self):
        r"""经办人
        :rtype: str
        """
        return self._Operator

    @Operator.setter
    def Operator(self, Operator):
        self._Operator = Operator

    @property
    def PayerAccount(self):
        r"""付款人账号
        :rtype: str
        """
        return self._PayerAccount

    @PayerAccount.setter
    def PayerAccount(self, PayerAccount):
        self._PayerAccount = PayerAccount

    @property
    def PayerBank(self):
        r"""付款人开户银行
        :rtype: str
        """
        return self._PayerBank

    @PayerBank.setter
    def PayerBank(self, PayerBank):
        self._PayerBank = PayerBank

    @property
    def ReceiverAccount(self):
        r"""收款人账号
        :rtype: str
        """
        return self._ReceiverAccount

    @ReceiverAccount.setter
    def ReceiverAccount(self, ReceiverAccount):
        self._ReceiverAccount = ReceiverAccount

    @property
    def ReceiverBank(self):
        r"""收款人开户银行
        :rtype: str
        """
        return self._ReceiverBank

    @ReceiverBank.setter
    def ReceiverBank(self, ReceiverBank):
        self._ReceiverBank = ReceiverBank

    @property
    def NonTaxItems(self):
        r"""条目
        :rtype: list of NonTaxItem
        """
        return self._NonTaxItems

    @NonTaxItems.setter
    def NonTaxItems(self, NonTaxItems):
        self._NonTaxItems = NonTaxItems


    def _deserialize(self, params):
        self._Title = params.get("Title")
        self._Number = params.get("Number")
        self._Code = params.get("Code")
        self._CheckCode = params.get("CheckCode")
        self._Date = params.get("Date")
        self._Total = params.get("Total")
        self._TotalCn = params.get("TotalCn")
        self._Buyer = params.get("Buyer")
        self._BuyerTaxID = params.get("BuyerTaxID")
        self._Seller = params.get("Seller")
        self._SellerCompany = params.get("SellerCompany")
        self._Remark = params.get("Remark")
        self._CurrencyCode = params.get("CurrencyCode")
        self._Reviewer = params.get("Reviewer")
        self._QRCodeMark = params.get("QRCodeMark")
        self._OtherInfo = params.get("OtherInfo")
        self._PaymentCode = params.get("PaymentCode")
        self._ReceiveUnitCode = params.get("ReceiveUnitCode")
        self._Receiver = params.get("Receiver")
        self._Operator = params.get("Operator")
        self._PayerAccount = params.get("PayerAccount")
        self._PayerBank = params.get("PayerBank")
        self._ReceiverAccount = params.get("ReceiverAccount")
        self._ReceiverBank = params.get("ReceiverBank")
        if params.get("NonTaxItems") is not None:
            self._NonTaxItems = []
            for item in params.get("NonTaxItems"):
                obj = NonTaxItem()
                obj._deserialize(item)
                self._NonTaxItems.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class NonTaxItem(AbstractModel):
    r"""非税收入条目

    """

    def __init__(self):
        r"""
        :param _ItemID: 项目编码
        :type ItemID: str
        :param _Name: 项目名称
        :type Name: str
        :param _Unit: 单位
        :type Unit: str
        :param _Quantity: 数量
        :type Quantity: str
        :param _Standard: 标准
        :type Standard: str
        :param _Total: 金额
        :type Total: str
        """
        self._ItemID = None
        self._Name = None
        self._Unit = None
        self._Quantity = None
        self._Standard = None
        self._Total = None

    @property
    def ItemID(self):
        r"""项目编码
        :rtype: str
        """
        return self._ItemID

    @ItemID.setter
    def ItemID(self, ItemID):
        self._ItemID = ItemID

    @property
    def Name(self):
        r"""项目名称
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Unit(self):
        r"""单位
        :rtype: str
        """
        return self._Unit

    @Unit.setter
    def Unit(self, Unit):
        self._Unit = Unit

    @property
    def Quantity(self):
        r"""数量
        :rtype: str
        """
        return self._Quantity

    @Quantity.setter
    def Quantity(self, Quantity):
        self._Quantity = Quantity

    @property
    def Standard(self):
        r"""标准
        :rtype: str
        """
        return self._Standard

    @Standard.setter
    def Standard(self, Standard):
        self._Standard = Standard

    @property
    def Total(self):
        r"""金额
        :rtype: str
        """
        return self._Total

    @Total.setter
    def Total(self, Total):
        self._Total = Total


    def _deserialize(self, params):
        self._ItemID = params.get("ItemID")
        self._Name = params.get("Name")
        self._Unit = params.get("Unit")
        self._Quantity = params.get("Quantity")
        self._Standard = params.get("Standard")
        self._Total = params.get("Total")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class OCRResult(AbstractModel):
    r"""ocr结果信息

    """

    def __init__(self):
        r"""
        :param _IDCardResult: 身份证结果
注意：此字段可能返回 null，表示取不到有效值。
        :type IDCardResult: :class:`tencentcloud.ocr.v20181119.models.IDCardResult`
        """
        self._IDCardResult = None

    @property
    def IDCardResult(self):
        r"""身份证结果
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.IDCardResult`
        """
        return self._IDCardResult

    @IDCardResult.setter
    def IDCardResult(self, IDCardResult):
        self._IDCardResult = IDCardResult


    def _deserialize(self, params):
        if params.get("IDCardResult") is not None:
            self._IDCardResult = IDCardResult()
            self._IDCardResult._deserialize(params.get("IDCardResult"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class OnlineTaxiItinerary(AbstractModel):
    r"""网约车行程单

    """

    def __init__(self):
        r"""
        :param _Title: 发票名称
        :type Title: str
        :param _Content: 识别出的字段名称
        :type Content: list of OnlineTaxiItineraryInfo
        """
        self._Title = None
        self._Content = None

    @property
    def Title(self):
        r"""发票名称
        :rtype: str
        """
        return self._Title

    @Title.setter
    def Title(self, Title):
        self._Title = Title

    @property
    def Content(self):
        r"""识别出的字段名称
        :rtype: list of OnlineTaxiItineraryInfo
        """
        return self._Content

    @Content.setter
    def Content(self, Content):
        self._Content = Content


    def _deserialize(self, params):
        self._Title = params.get("Title")
        if params.get("Content") is not None:
            self._Content = []
            for item in params.get("Content"):
                obj = OnlineTaxiItineraryInfo()
                obj._deserialize(item)
                self._Content.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class OnlineTaxiItineraryInfo(AbstractModel):
    r"""网约车行程单识别结果

    """

    def __init__(self):
        r"""
        :param _Name: 识别出的字段名称(关键字)，支持以下字段：
发票代码、 机打代码、 发票号码、 发动机号码、 合格证号、 机打号码、 价税合计(小写)、 销货单位名称、 身份证号码/组织机构代码、 购买方名称、 销售方纳税人识别号、 购买方纳税人识别号、主管税务机关、 主管税务机关代码、 开票日期、 不含税价(小写)、 吨位、增值税税率或征收率、 车辆识别代号/车架号码、 增值税税额、 厂牌型号、 省、 市、 发票消费类型、 销售方电话、 销售方账号、 产地、 进口证明书号、 车辆类型、 机器编号、备注、开票人、限乘人数、商检单号、销售方地址、销售方开户银行、价税合计、发票类型。
        :type Name: str
        :param _Value: 识别出的字段名称对应的值，也就是字段name对应的字符串结果。
        :type Value: str
        :param _Row: 字段所在行，下标从0开始，非行字段或未能识别行号的返回-1
        :type Row: int
        """
        self._Name = None
        self._Value = None
        self._Row = None

    @property
    def Name(self):
        r"""识别出的字段名称(关键字)，支持以下字段：
发票代码、 机打代码、 发票号码、 发动机号码、 合格证号、 机打号码、 价税合计(小写)、 销货单位名称、 身份证号码/组织机构代码、 购买方名称、 销售方纳税人识别号、 购买方纳税人识别号、主管税务机关、 主管税务机关代码、 开票日期、 不含税价(小写)、 吨位、增值税税率或征收率、 车辆识别代号/车架号码、 增值税税额、 厂牌型号、 省、 市、 发票消费类型、 销售方电话、 销售方账号、 产地、 进口证明书号、 车辆类型、 机器编号、备注、开票人、限乘人数、商检单号、销售方地址、销售方开户银行、价税合计、发票类型。
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Value(self):
        r"""识别出的字段名称对应的值，也就是字段name对应的字符串结果。
        :rtype: str
        """
        return self._Value

    @Value.setter
    def Value(self, Value):
        self._Value = Value

    @property
    def Row(self):
        r"""字段所在行，下标从0开始，非行字段或未能识别行号的返回-1
        :rtype: int
        """
        return self._Row

    @Row.setter
    def Row(self, Row):
        self._Row = Row


    def _deserialize(self, params):
        self._Name = params.get("Name")
        self._Value = params.get("Value")
        self._Row = params.get("Row")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class OtherInvoice(AbstractModel):
    r"""其他发票

    """

    def __init__(self):
        r"""
        :param _Title: 发票名称
        :type Title: str
        :param _Total: 金额
        :type Total: str
        :param _OtherInvoiceListItems: 列表
        :type OtherInvoiceListItems: list of OtherInvoiceItem
        :param _OtherInvoiceTableItems: 表格
        :type OtherInvoiceTableItems: list of OtherInvoiceList
        :param _Date: 发票日期
        :type Date: str
        """
        self._Title = None
        self._Total = None
        self._OtherInvoiceListItems = None
        self._OtherInvoiceTableItems = None
        self._Date = None

    @property
    def Title(self):
        r"""发票名称
        :rtype: str
        """
        return self._Title

    @Title.setter
    def Title(self, Title):
        self._Title = Title

    @property
    def Total(self):
        r"""金额
        :rtype: str
        """
        return self._Total

    @Total.setter
    def Total(self, Total):
        self._Total = Total

    @property
    def OtherInvoiceListItems(self):
        r"""列表
        :rtype: list of OtherInvoiceItem
        """
        return self._OtherInvoiceListItems

    @OtherInvoiceListItems.setter
    def OtherInvoiceListItems(self, OtherInvoiceListItems):
        self._OtherInvoiceListItems = OtherInvoiceListItems

    @property
    def OtherInvoiceTableItems(self):
        r"""表格
        :rtype: list of OtherInvoiceList
        """
        return self._OtherInvoiceTableItems

    @OtherInvoiceTableItems.setter
    def OtherInvoiceTableItems(self, OtherInvoiceTableItems):
        self._OtherInvoiceTableItems = OtherInvoiceTableItems

    @property
    def Date(self):
        r"""发票日期
        :rtype: str
        """
        return self._Date

    @Date.setter
    def Date(self, Date):
        self._Date = Date


    def _deserialize(self, params):
        self._Title = params.get("Title")
        self._Total = params.get("Total")
        if params.get("OtherInvoiceListItems") is not None:
            self._OtherInvoiceListItems = []
            for item in params.get("OtherInvoiceListItems"):
                obj = OtherInvoiceItem()
                obj._deserialize(item)
                self._OtherInvoiceListItems.append(obj)
        if params.get("OtherInvoiceTableItems") is not None:
            self._OtherInvoiceTableItems = []
            for item in params.get("OtherInvoiceTableItems"):
                obj = OtherInvoiceList()
                obj._deserialize(item)
                self._OtherInvoiceTableItems.append(obj)
        self._Date = params.get("Date")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class OtherInvoiceItem(AbstractModel):
    r"""OtherInvoiceItem

    """

    def __init__(self):
        r"""
        :param _Name: 票面key值
        :type Name: str
        :param _Value: 票面value值
        :type Value: str
        """
        self._Name = None
        self._Value = None

    @property
    def Name(self):
        r"""票面key值
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Value(self):
        r"""票面value值
        :rtype: str
        """
        return self._Value

    @Value.setter
    def Value(self, Value):
        self._Value = Value


    def _deserialize(self, params):
        self._Name = params.get("Name")
        self._Value = params.get("Value")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class OtherInvoiceList(AbstractModel):
    r"""其他票Table

    """

    def __init__(self):
        r"""
        :param _OtherInvoiceItemList: 列表
        :type OtherInvoiceItemList: list of OtherInvoiceItem
        """
        self._OtherInvoiceItemList = None

    @property
    def OtherInvoiceItemList(self):
        r"""列表
        :rtype: list of OtherInvoiceItem
        """
        return self._OtherInvoiceItemList

    @OtherInvoiceItemList.setter
    def OtherInvoiceItemList(self, OtherInvoiceItemList):
        self._OtherInvoiceItemList = OtherInvoiceItemList


    def _deserialize(self, params):
        if params.get("OtherInvoiceItemList") is not None:
            self._OtherInvoiceItemList = []
            for item in params.get("OtherInvoiceItemList"):
                obj = OtherInvoiceItem()
                obj._deserialize(item)
                self._OtherInvoiceItemList.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class OverseasInvoice(AbstractModel):
    r"""海外发票

    """

    def __init__(self):
        r"""
        :param _Title: 发票名称
        :type Title: str
        :param _Content: 识别出的字段名称(关键字)
        :type Content: list of OtherInvoiceItem
        """
        self._Title = None
        self._Content = None

    @property
    def Title(self):
        r"""发票名称
        :rtype: str
        """
        return self._Title

    @Title.setter
    def Title(self, Title):
        self._Title = Title

    @property
    def Content(self):
        r"""识别出的字段名称(关键字)
        :rtype: list of OtherInvoiceItem
        """
        return self._Content

    @Content.setter
    def Content(self, Content):
        self._Content = Content


    def _deserialize(self, params):
        self._Title = params.get("Title")
        if params.get("Content") is not None:
            self._Content = []
            for item in params.get("Content"):
                obj = OtherInvoiceItem()
                obj._deserialize(item)
                self._Content.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class PassInvoiceInfo(AbstractModel):
    r"""通行费发票信息

    """

    def __init__(self):
        r"""
        :param _NumberPlate: 通行费车牌号
        :type NumberPlate: str
        :param _Type: 通行费类型
        :type Type: str
        :param _PassDateBegin: 通行日期起
        :type PassDateBegin: str
        :param _PassDateEnd: 通行日期止
        :type PassDateEnd: str
        :param _TaxClassifyCode: 税收分类编码
        :type TaxClassifyCode: str
        """
        self._NumberPlate = None
        self._Type = None
        self._PassDateBegin = None
        self._PassDateEnd = None
        self._TaxClassifyCode = None

    @property
    def NumberPlate(self):
        r"""通行费车牌号
        :rtype: str
        """
        return self._NumberPlate

    @NumberPlate.setter
    def NumberPlate(self, NumberPlate):
        self._NumberPlate = NumberPlate

    @property
    def Type(self):
        r"""通行费类型
        :rtype: str
        """
        return self._Type

    @Type.setter
    def Type(self, Type):
        self._Type = Type

    @property
    def PassDateBegin(self):
        r"""通行日期起
        :rtype: str
        """
        return self._PassDateBegin

    @PassDateBegin.setter
    def PassDateBegin(self, PassDateBegin):
        self._PassDateBegin = PassDateBegin

    @property
    def PassDateEnd(self):
        r"""通行日期止
        :rtype: str
        """
        return self._PassDateEnd

    @PassDateEnd.setter
    def PassDateEnd(self, PassDateEnd):
        self._PassDateEnd = PassDateEnd

    @property
    def TaxClassifyCode(self):
        r"""税收分类编码
        :rtype: str
        """
        return self._TaxClassifyCode

    @TaxClassifyCode.setter
    def TaxClassifyCode(self, TaxClassifyCode):
        self._TaxClassifyCode = TaxClassifyCode


    def _deserialize(self, params):
        self._NumberPlate = params.get("NumberPlate")
        self._Type = params.get("Type")
        self._PassDateBegin = params.get("PassDateBegin")
        self._PassDateEnd = params.get("PassDateEnd")
        self._TaxClassifyCode = params.get("TaxClassifyCode")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class PassportOCRRequest(AbstractModel):
    r"""PassportOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。建议图片存储于腾讯云，可保障更高的下载速度和稳定性。
        :type ImageUrl: str
        :param _Type: 默认填写CN
支持中国大陆地区护照。
        :type Type: str
        :param _CropPortrait: 是否返回头像和位置坐标
        :type CropPortrait: bool
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._Type = None
        self._CropPortrait = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。建议图片存储于腾讯云，可保障更高的下载速度和稳定性。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def Type(self):
        r"""默认填写CN
支持中国大陆地区护照。
        :rtype: str
        """
        return self._Type

    @Type.setter
    def Type(self, Type):
        self._Type = Type

    @property
    def CropPortrait(self):
        r"""是否返回头像和位置坐标
        :rtype: bool
        """
        return self._CropPortrait

    @CropPortrait.setter
    def CropPortrait(self, CropPortrait):
        self._CropPortrait = CropPortrait


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._Type = params.get("Type")
        self._CropPortrait = params.get("CropPortrait")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class PassportOCRResponse(AbstractModel):
    r"""PassportOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Country: 国家码
        :type Country: str
        :param _PassportNo: 护照号
        :type PassportNo: str
        :param _Sex: 性别
        :type Sex: str
        :param _Nationality: 国籍
        :type Nationality: str
        :param _BirthDate: 出生日期
        :type BirthDate: str
        :param _BirthPlace: 出生地点
        :type BirthPlace: str
        :param _IssueDate: 签发日期
        :type IssueDate: str
        :param _IssuePlace: 签发地点
        :type IssuePlace: str
        :param _ExpiryDate: 有效期
        :type ExpiryDate: str
        :param _Signature: 持证人签名
        :type Signature: str
        :param _CodeSet: 最下方第一行 MRZ Code 序列
        :type CodeSet: str
        :param _CodeCrc: 最下方第二行 MRZ Code 序列
        :type CodeCrc: str
        :param _Name: 姓名
        :type Name: str
        :param _FamilyName: 姓
        :type FamilyName: str
        :param _FirstName: 名
        :type FirstName: str
        :param _PortraitImageInfo: 头像和坐标信息
        :type PortraitImageInfo: :class:`tencentcloud.ocr.v20181119.models.PortraitImageInfo`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Country = None
        self._PassportNo = None
        self._Sex = None
        self._Nationality = None
        self._BirthDate = None
        self._BirthPlace = None
        self._IssueDate = None
        self._IssuePlace = None
        self._ExpiryDate = None
        self._Signature = None
        self._CodeSet = None
        self._CodeCrc = None
        self._Name = None
        self._FamilyName = None
        self._FirstName = None
        self._PortraitImageInfo = None
        self._RequestId = None

    @property
    def Country(self):
        r"""国家码
        :rtype: str
        """
        return self._Country

    @Country.setter
    def Country(self, Country):
        self._Country = Country

    @property
    def PassportNo(self):
        r"""护照号
        :rtype: str
        """
        return self._PassportNo

    @PassportNo.setter
    def PassportNo(self, PassportNo):
        self._PassportNo = PassportNo

    @property
    def Sex(self):
        r"""性别
        :rtype: str
        """
        return self._Sex

    @Sex.setter
    def Sex(self, Sex):
        self._Sex = Sex

    @property
    def Nationality(self):
        r"""国籍
        :rtype: str
        """
        return self._Nationality

    @Nationality.setter
    def Nationality(self, Nationality):
        self._Nationality = Nationality

    @property
    def BirthDate(self):
        r"""出生日期
        :rtype: str
        """
        return self._BirthDate

    @BirthDate.setter
    def BirthDate(self, BirthDate):
        self._BirthDate = BirthDate

    @property
    def BirthPlace(self):
        r"""出生地点
        :rtype: str
        """
        return self._BirthPlace

    @BirthPlace.setter
    def BirthPlace(self, BirthPlace):
        self._BirthPlace = BirthPlace

    @property
    def IssueDate(self):
        r"""签发日期
        :rtype: str
        """
        return self._IssueDate

    @IssueDate.setter
    def IssueDate(self, IssueDate):
        self._IssueDate = IssueDate

    @property
    def IssuePlace(self):
        r"""签发地点
        :rtype: str
        """
        return self._IssuePlace

    @IssuePlace.setter
    def IssuePlace(self, IssuePlace):
        self._IssuePlace = IssuePlace

    @property
    def ExpiryDate(self):
        r"""有效期
        :rtype: str
        """
        return self._ExpiryDate

    @ExpiryDate.setter
    def ExpiryDate(self, ExpiryDate):
        self._ExpiryDate = ExpiryDate

    @property
    def Signature(self):
        r"""持证人签名
        :rtype: str
        """
        return self._Signature

    @Signature.setter
    def Signature(self, Signature):
        self._Signature = Signature

    @property
    def CodeSet(self):
        r"""最下方第一行 MRZ Code 序列
        :rtype: str
        """
        return self._CodeSet

    @CodeSet.setter
    def CodeSet(self, CodeSet):
        self._CodeSet = CodeSet

    @property
    def CodeCrc(self):
        r"""最下方第二行 MRZ Code 序列
        :rtype: str
        """
        return self._CodeCrc

    @CodeCrc.setter
    def CodeCrc(self, CodeCrc):
        self._CodeCrc = CodeCrc

    @property
    def Name(self):
        r"""姓名
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def FamilyName(self):
        r"""姓
        :rtype: str
        """
        return self._FamilyName

    @FamilyName.setter
    def FamilyName(self, FamilyName):
        self._FamilyName = FamilyName

    @property
    def FirstName(self):
        r"""名
        :rtype: str
        """
        return self._FirstName

    @FirstName.setter
    def FirstName(self, FirstName):
        self._FirstName = FirstName

    @property
    def PortraitImageInfo(self):
        r"""头像和坐标信息
        :rtype: :class:`tencentcloud.ocr.v20181119.models.PortraitImageInfo`
        """
        return self._PortraitImageInfo

    @PortraitImageInfo.setter
    def PortraitImageInfo(self, PortraitImageInfo):
        self._PortraitImageInfo = PortraitImageInfo

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._Country = params.get("Country")
        self._PassportNo = params.get("PassportNo")
        self._Sex = params.get("Sex")
        self._Nationality = params.get("Nationality")
        self._BirthDate = params.get("BirthDate")
        self._BirthPlace = params.get("BirthPlace")
        self._IssueDate = params.get("IssueDate")
        self._IssuePlace = params.get("IssuePlace")
        self._ExpiryDate = params.get("ExpiryDate")
        self._Signature = params.get("Signature")
        self._CodeSet = params.get("CodeSet")
        self._CodeCrc = params.get("CodeCrc")
        self._Name = params.get("Name")
        self._FamilyName = params.get("FamilyName")
        self._FirstName = params.get("FirstName")
        if params.get("PortraitImageInfo") is not None:
            self._PortraitImageInfo = PortraitImageInfo()
            self._PortraitImageInfo._deserialize(params.get("PortraitImageInfo"))
        self._RequestId = params.get("RequestId")


class PassportRecognizeInfos(AbstractModel):
    r"""信息区证件内容

    """

    def __init__(self):
        r"""
        :param _Type: <p>证件类型（护照信息页识别结果）</p>
        :type Type: str
        :param _IssuingCountry: <p>发行国家（护照信息页识别结果）</p>
        :type IssuingCountry: str
        :param _PassportID: <p>护照号码（护照信息页识别结果）</p>
        :type PassportID: str
        :param _Surname: <p>姓（护照信息页识别结果）</p>
        :type Surname: str
        :param _GivenName: <p>名（护照信息页识别结果）</p>
        :type GivenName: str
        :param _Name: <p>姓名（护照信息页识别结果）</p>
        :type Name: str
        :param _Nationality: <p>国籍信息（护照信息页识别结果）</p>
        :type Nationality: str
        :param _DateOfBirth: <p>出生日期（护照信息页识别结果）</p>
        :type DateOfBirth: str
        :param _Sex: <p>性别（护照信息页识别结果）</p>
        :type Sex: str
        :param _DateOfIssuance: <p>发行日期（护照信息页识别结果）</p>
        :type DateOfIssuance: str
        :param _DateOfExpiration: <p>截止日期（护照信息页识别结果）</p>
        :type DateOfExpiration: str
        :param _Signature: <p>持证人签名（护照信息页识别结果）</p><p>仅中国大陆护照支持返回此字段，港澳台及境外护照不支持</p>
        :type Signature: str
        :param _IssuePlace: <p>签发地点（护照信息页识别结果）</p><p>仅中国大陆护照支持返回此字段，港澳台及境外护照不支持</p>
        :type IssuePlace: str
        :param _IssuingAuthority: <p>签发机关（护照信息页识别结果）</p><p>仅中国大陆护照支持返回此字段，港澳台及境外护照不支持</p>
        :type IssuingAuthority: str
        :param _BirthPlace: <p>出生地（护照信息页识别结果）</p>
        :type BirthPlace: str
        """
        self._Type = None
        self._IssuingCountry = None
        self._PassportID = None
        self._Surname = None
        self._GivenName = None
        self._Name = None
        self._Nationality = None
        self._DateOfBirth = None
        self._Sex = None
        self._DateOfIssuance = None
        self._DateOfExpiration = None
        self._Signature = None
        self._IssuePlace = None
        self._IssuingAuthority = None
        self._BirthPlace = None

    @property
    def Type(self):
        r"""<p>证件类型（护照信息页识别结果）</p>
        :rtype: str
        """
        return self._Type

    @Type.setter
    def Type(self, Type):
        self._Type = Type

    @property
    def IssuingCountry(self):
        r"""<p>发行国家（护照信息页识别结果）</p>
        :rtype: str
        """
        return self._IssuingCountry

    @IssuingCountry.setter
    def IssuingCountry(self, IssuingCountry):
        self._IssuingCountry = IssuingCountry

    @property
    def PassportID(self):
        r"""<p>护照号码（护照信息页识别结果）</p>
        :rtype: str
        """
        return self._PassportID

    @PassportID.setter
    def PassportID(self, PassportID):
        self._PassportID = PassportID

    @property
    def Surname(self):
        r"""<p>姓（护照信息页识别结果）</p>
        :rtype: str
        """
        return self._Surname

    @Surname.setter
    def Surname(self, Surname):
        self._Surname = Surname

    @property
    def GivenName(self):
        r"""<p>名（护照信息页识别结果）</p>
        :rtype: str
        """
        return self._GivenName

    @GivenName.setter
    def GivenName(self, GivenName):
        self._GivenName = GivenName

    @property
    def Name(self):
        r"""<p>姓名（护照信息页识别结果）</p>
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Nationality(self):
        r"""<p>国籍信息（护照信息页识别结果）</p>
        :rtype: str
        """
        return self._Nationality

    @Nationality.setter
    def Nationality(self, Nationality):
        self._Nationality = Nationality

    @property
    def DateOfBirth(self):
        r"""<p>出生日期（护照信息页识别结果）</p>
        :rtype: str
        """
        return self._DateOfBirth

    @DateOfBirth.setter
    def DateOfBirth(self, DateOfBirth):
        self._DateOfBirth = DateOfBirth

    @property
    def Sex(self):
        r"""<p>性别（护照信息页识别结果）</p>
        :rtype: str
        """
        return self._Sex

    @Sex.setter
    def Sex(self, Sex):
        self._Sex = Sex

    @property
    def DateOfIssuance(self):
        r"""<p>发行日期（护照信息页识别结果）</p>
        :rtype: str
        """
        return self._DateOfIssuance

    @DateOfIssuance.setter
    def DateOfIssuance(self, DateOfIssuance):
        self._DateOfIssuance = DateOfIssuance

    @property
    def DateOfExpiration(self):
        r"""<p>截止日期（护照信息页识别结果）</p>
        :rtype: str
        """
        return self._DateOfExpiration

    @DateOfExpiration.setter
    def DateOfExpiration(self, DateOfExpiration):
        self._DateOfExpiration = DateOfExpiration

    @property
    def Signature(self):
        r"""<p>持证人签名（护照信息页识别结果）</p><p>仅中国大陆护照支持返回此字段，港澳台及境外护照不支持</p>
        :rtype: str
        """
        return self._Signature

    @Signature.setter
    def Signature(self, Signature):
        self._Signature = Signature

    @property
    def IssuePlace(self):
        r"""<p>签发地点（护照信息页识别结果）</p><p>仅中国大陆护照支持返回此字段，港澳台及境外护照不支持</p>
        :rtype: str
        """
        return self._IssuePlace

    @IssuePlace.setter
    def IssuePlace(self, IssuePlace):
        self._IssuePlace = IssuePlace

    @property
    def IssuingAuthority(self):
        r"""<p>签发机关（护照信息页识别结果）</p><p>仅中国大陆护照支持返回此字段，港澳台及境外护照不支持</p>
        :rtype: str
        """
        return self._IssuingAuthority

    @IssuingAuthority.setter
    def IssuingAuthority(self, IssuingAuthority):
        self._IssuingAuthority = IssuingAuthority

    @property
    def BirthPlace(self):
        r"""<p>出生地（护照信息页识别结果）</p>
        :rtype: str
        """
        return self._BirthPlace

    @BirthPlace.setter
    def BirthPlace(self, BirthPlace):
        self._BirthPlace = BirthPlace


    def _deserialize(self, params):
        self._Type = params.get("Type")
        self._IssuingCountry = params.get("IssuingCountry")
        self._PassportID = params.get("PassportID")
        self._Surname = params.get("Surname")
        self._GivenName = params.get("GivenName")
        self._Name = params.get("Name")
        self._Nationality = params.get("Nationality")
        self._DateOfBirth = params.get("DateOfBirth")
        self._Sex = params.get("Sex")
        self._DateOfIssuance = params.get("DateOfIssuance")
        self._DateOfExpiration = params.get("DateOfExpiration")
        self._Signature = params.get("Signature")
        self._IssuePlace = params.get("IssuePlace")
        self._IssuingAuthority = params.get("IssuingAuthority")
        self._BirthPlace = params.get("BirthPlace")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class PermanentResidencePermitInfo(AbstractModel):
    r"""外国人永久居留证信息返回

    """

    def __init__(self):
        r"""
        :param _Name: 姓名（人像面）
        :type Name: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _Sex: 性别（人像面）
        :type Sex: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _Nation: 民族（人像面）
        :type Nation: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _Birth: 出生日期（人像面）
        :type Birth: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _Address: 地址（人像面）
        :type Address: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _IdNum: 公民身份号码（人像面）
        :type IdNum: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _Authority: 发证机关（国徽面）
        :type Authority: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _ValidDate: 证件有效期（国徽面）
        :type ValidDate: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _WarnInfos: WarnInfos，告警信息
        :type WarnInfos: :class:`tencentcloud.ocr.v20181119.models.CardWarnInfo`
        :param _CardImage: IdCard，裁剪后身份证照片的base64编码，请求 EnableCropImage 时返回；
        :type CardImage: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _PortraitImage: Portrait，身份证头像照片的base64编码，请求 EnablePortrait 时返回；
        :type PortraitImage: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _HolderNum: 持证人持有号码，外国人永久居留证 返回该字段
        :type HolderNum: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _Nationality: 国籍，外国人永久居留证 返回该字段
        :type Nationality: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _EnName: 英文名
示例值：Ming Li
        :type EnName: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        self._Name = None
        self._Sex = None
        self._Nation = None
        self._Birth = None
        self._Address = None
        self._IdNum = None
        self._Authority = None
        self._ValidDate = None
        self._WarnInfos = None
        self._CardImage = None
        self._PortraitImage = None
        self._HolderNum = None
        self._Nationality = None
        self._EnName = None

    @property
    def Name(self):
        r"""姓名（人像面）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Sex(self):
        r"""性别（人像面）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._Sex

    @Sex.setter
    def Sex(self, Sex):
        self._Sex = Sex

    @property
    def Nation(self):
        r"""民族（人像面）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._Nation

    @Nation.setter
    def Nation(self, Nation):
        self._Nation = Nation

    @property
    def Birth(self):
        r"""出生日期（人像面）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._Birth

    @Birth.setter
    def Birth(self, Birth):
        self._Birth = Birth

    @property
    def Address(self):
        r"""地址（人像面）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._Address

    @Address.setter
    def Address(self, Address):
        self._Address = Address

    @property
    def IdNum(self):
        r"""公民身份号码（人像面）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._IdNum

    @IdNum.setter
    def IdNum(self, IdNum):
        self._IdNum = IdNum

    @property
    def Authority(self):
        r"""发证机关（国徽面）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._Authority

    @Authority.setter
    def Authority(self, Authority):
        self._Authority = Authority

    @property
    def ValidDate(self):
        r"""证件有效期（国徽面）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._ValidDate

    @ValidDate.setter
    def ValidDate(self, ValidDate):
        self._ValidDate = ValidDate

    @property
    def WarnInfos(self):
        r"""WarnInfos，告警信息
        :rtype: :class:`tencentcloud.ocr.v20181119.models.CardWarnInfo`
        """
        return self._WarnInfos

    @WarnInfos.setter
    def WarnInfos(self, WarnInfos):
        self._WarnInfos = WarnInfos

    @property
    def CardImage(self):
        r"""IdCard，裁剪后身份证照片的base64编码，请求 EnableCropImage 时返回；
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._CardImage

    @CardImage.setter
    def CardImage(self, CardImage):
        self._CardImage = CardImage

    @property
    def PortraitImage(self):
        r"""Portrait，身份证头像照片的base64编码，请求 EnablePortrait 时返回；
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._PortraitImage

    @PortraitImage.setter
    def PortraitImage(self, PortraitImage):
        self._PortraitImage = PortraitImage

    @property
    def HolderNum(self):
        r"""持证人持有号码，外国人永久居留证 返回该字段
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._HolderNum

    @HolderNum.setter
    def HolderNum(self, HolderNum):
        self._HolderNum = HolderNum

    @property
    def Nationality(self):
        r"""国籍，外国人永久居留证 返回该字段
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._Nationality

    @Nationality.setter
    def Nationality(self, Nationality):
        self._Nationality = Nationality

    @property
    def EnName(self):
        r"""英文名
示例值：Ming Li
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._EnName

    @EnName.setter
    def EnName(self, EnName):
        self._EnName = EnName


    def _deserialize(self, params):
        if params.get("Name") is not None:
            self._Name = ContentInfo()
            self._Name._deserialize(params.get("Name"))
        if params.get("Sex") is not None:
            self._Sex = ContentInfo()
            self._Sex._deserialize(params.get("Sex"))
        if params.get("Nation") is not None:
            self._Nation = ContentInfo()
            self._Nation._deserialize(params.get("Nation"))
        if params.get("Birth") is not None:
            self._Birth = ContentInfo()
            self._Birth._deserialize(params.get("Birth"))
        if params.get("Address") is not None:
            self._Address = ContentInfo()
            self._Address._deserialize(params.get("Address"))
        if params.get("IdNum") is not None:
            self._IdNum = ContentInfo()
            self._IdNum._deserialize(params.get("IdNum"))
        if params.get("Authority") is not None:
            self._Authority = ContentInfo()
            self._Authority._deserialize(params.get("Authority"))
        if params.get("ValidDate") is not None:
            self._ValidDate = ContentInfo()
            self._ValidDate._deserialize(params.get("ValidDate"))
        if params.get("WarnInfos") is not None:
            self._WarnInfos = CardWarnInfo()
            self._WarnInfos._deserialize(params.get("WarnInfos"))
        if params.get("CardImage") is not None:
            self._CardImage = ContentInfo()
            self._CardImage._deserialize(params.get("CardImage"))
        if params.get("PortraitImage") is not None:
            self._PortraitImage = ContentInfo()
            self._PortraitImage._deserialize(params.get("PortraitImage"))
        if params.get("HolderNum") is not None:
            self._HolderNum = ContentInfo()
            self._HolderNum._deserialize(params.get("HolderNum"))
        if params.get("Nationality") is not None:
            self._Nationality = ContentInfo()
            self._Nationality._deserialize(params.get("Nationality"))
        if params.get("EnName") is not None:
            self._EnName = ContentInfo()
            self._EnName._deserialize(params.get("EnName"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class PermitOCRRequest(AbstractModel):
    r"""PermitOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: <p>图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 7M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。</p>
        :type ImageBase64: str
        :param _ImageUrl: <p>图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 7M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。</p>
        :type ImageUrl: str
        :param _CropPortrait: <p>是否返回头像照片，默认为 false</p>
        :type CropPortrait: bool
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._CropPortrait = None

    @property
    def ImageBase64(self):
        r"""<p>图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 7M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。</p>
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""<p>图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 7M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。</p>
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def CropPortrait(self):
        r"""<p>是否返回头像照片，默认为 false</p>
        :rtype: bool
        """
        return self._CropPortrait

    @CropPortrait.setter
    def CropPortrait(self, CropPortrait):
        self._CropPortrait = CropPortrait


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._CropPortrait = params.get("CropPortrait")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class PermitOCRResponse(AbstractModel):
    r"""PermitOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Name: <p>姓名</p>
        :type Name: str
        :param _EnglishName: <p>英文姓名</p>
        :type EnglishName: str
        :param _Number: <p>证件号</p>
        :type Number: str
        :param _Sex: <p>性别</p>
        :type Sex: str
        :param _ValidDate: <p>有效期限</p>
        :type ValidDate: str
        :param _IssueAuthority: <p>签发机关</p>
        :type IssueAuthority: str
        :param _IssueAddress: <p>签发地点</p>
        :type IssueAddress: str
        :param _Birthday: <p>出生日期</p>
        :type Birthday: str
        :param _PortraitImage: <p>头像照片的base64</p>
        :type PortraitImage: str
        :param _Type: <p>返回类型</p>
        :type Type: str
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Name = None
        self._EnglishName = None
        self._Number = None
        self._Sex = None
        self._ValidDate = None
        self._IssueAuthority = None
        self._IssueAddress = None
        self._Birthday = None
        self._PortraitImage = None
        self._Type = None
        self._RequestId = None

    @property
    def Name(self):
        r"""<p>姓名</p>
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def EnglishName(self):
        r"""<p>英文姓名</p>
        :rtype: str
        """
        return self._EnglishName

    @EnglishName.setter
    def EnglishName(self, EnglishName):
        self._EnglishName = EnglishName

    @property
    def Number(self):
        r"""<p>证件号</p>
        :rtype: str
        """
        return self._Number

    @Number.setter
    def Number(self, Number):
        self._Number = Number

    @property
    def Sex(self):
        r"""<p>性别</p>
        :rtype: str
        """
        return self._Sex

    @Sex.setter
    def Sex(self, Sex):
        self._Sex = Sex

    @property
    def ValidDate(self):
        r"""<p>有效期限</p>
        :rtype: str
        """
        return self._ValidDate

    @ValidDate.setter
    def ValidDate(self, ValidDate):
        self._ValidDate = ValidDate

    @property
    def IssueAuthority(self):
        r"""<p>签发机关</p>
        :rtype: str
        """
        return self._IssueAuthority

    @IssueAuthority.setter
    def IssueAuthority(self, IssueAuthority):
        self._IssueAuthority = IssueAuthority

    @property
    def IssueAddress(self):
        r"""<p>签发地点</p>
        :rtype: str
        """
        return self._IssueAddress

    @IssueAddress.setter
    def IssueAddress(self, IssueAddress):
        self._IssueAddress = IssueAddress

    @property
    def Birthday(self):
        r"""<p>出生日期</p>
        :rtype: str
        """
        return self._Birthday

    @Birthday.setter
    def Birthday(self, Birthday):
        self._Birthday = Birthday

    @property
    def PortraitImage(self):
        r"""<p>头像照片的base64</p>
        :rtype: str
        """
        return self._PortraitImage

    @PortraitImage.setter
    def PortraitImage(self, PortraitImage):
        self._PortraitImage = PortraitImage

    @property
    def Type(self):
        r"""<p>返回类型</p>
        :rtype: str
        """
        return self._Type

    @Type.setter
    def Type(self, Type):
        self._Type = Type

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._Name = params.get("Name")
        self._EnglishName = params.get("EnglishName")
        self._Number = params.get("Number")
        self._Sex = params.get("Sex")
        self._ValidDate = params.get("ValidDate")
        self._IssueAuthority = params.get("IssueAuthority")
        self._IssueAddress = params.get("IssueAddress")
        self._Birthday = params.get("Birthday")
        self._PortraitImage = params.get("PortraitImage")
        self._Type = params.get("Type")
        self._RequestId = params.get("RequestId")


class Polygon(AbstractModel):
    r"""文本的坐标，以四个顶点坐标表示
    注意：此字段可能返回 null，表示取不到有效值

    """

    def __init__(self):
        r"""
        :param _LeftTop: 左上顶点坐标
        :type LeftTop: :class:`tencentcloud.ocr.v20181119.models.Coord`
        :param _RightTop: 右上顶点坐标
        :type RightTop: :class:`tencentcloud.ocr.v20181119.models.Coord`
        :param _RightBottom: 右下顶点坐标
        :type RightBottom: :class:`tencentcloud.ocr.v20181119.models.Coord`
        :param _LeftBottom: 左下顶点坐标
        :type LeftBottom: :class:`tencentcloud.ocr.v20181119.models.Coord`
        """
        self._LeftTop = None
        self._RightTop = None
        self._RightBottom = None
        self._LeftBottom = None

    @property
    def LeftTop(self):
        r"""左上顶点坐标
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Coord`
        """
        return self._LeftTop

    @LeftTop.setter
    def LeftTop(self, LeftTop):
        self._LeftTop = LeftTop

    @property
    def RightTop(self):
        r"""右上顶点坐标
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Coord`
        """
        return self._RightTop

    @RightTop.setter
    def RightTop(self, RightTop):
        self._RightTop = RightTop

    @property
    def RightBottom(self):
        r"""右下顶点坐标
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Coord`
        """
        return self._RightBottom

    @RightBottom.setter
    def RightBottom(self, RightBottom):
        self._RightBottom = RightBottom

    @property
    def LeftBottom(self):
        r"""左下顶点坐标
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Coord`
        """
        return self._LeftBottom

    @LeftBottom.setter
    def LeftBottom(self, LeftBottom):
        self._LeftBottom = LeftBottom


    def _deserialize(self, params):
        if params.get("LeftTop") is not None:
            self._LeftTop = Coord()
            self._LeftTop._deserialize(params.get("LeftTop"))
        if params.get("RightTop") is not None:
            self._RightTop = Coord()
            self._RightTop._deserialize(params.get("RightTop"))
        if params.get("RightBottom") is not None:
            self._RightBottom = Coord()
            self._RightBottom._deserialize(params.get("RightBottom"))
        if params.get("LeftBottom") is not None:
            self._LeftBottom = Coord()
            self._LeftBottom._deserialize(params.get("LeftBottom"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class PortraitImageInfo(AbstractModel):
    r"""头像照片和坐标

    """

    def __init__(self):
        r"""
        :param _PortraitImage: 头像
注意：此字段可能返回 null，表示取不到有效值。
        :type PortraitImage: str
        :param _ImageCoordinates: 头像坐标
注意：此字段可能返回 null，表示取不到有效值。
        :type ImageCoordinates: :class:`tencentcloud.ocr.v20181119.models.ImageCoordinates`
        """
        self._PortraitImage = None
        self._ImageCoordinates = None

    @property
    def PortraitImage(self):
        r"""头像
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._PortraitImage

    @PortraitImage.setter
    def PortraitImage(self, PortraitImage):
        self._PortraitImage = PortraitImage

    @property
    def ImageCoordinates(self):
        r"""头像坐标
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ImageCoordinates`
        """
        return self._ImageCoordinates

    @ImageCoordinates.setter
    def ImageCoordinates(self, ImageCoordinates):
        self._ImageCoordinates = ImageCoordinates


    def _deserialize(self, params):
        self._PortraitImage = params.get("PortraitImage")
        if params.get("ImageCoordinates") is not None:
            self._ImageCoordinates = ImageCoordinates()
            self._ImageCoordinates._deserialize(params.get("ImageCoordinates"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class Positions(AbstractModel):
    r"""这是OCR在高精度识别下返回的坐标值，采用的是由一个数组表示4个顶点的坐标构成，如[0,1,2,3,4,5,6,7]
    - (0,1) 左上角坐标
    - (2,3) 右上角坐标
    - (4,5) 右下角坐标
    - (6,7) 左下角坐标

    """

    def __init__(self):
        r"""
        :param _Position: 这是OCR在高精度识别下返回的坐标值，采用的是由一个数组表示4个顶点的坐标构成，如[0,1,2,3,4,5,6,7]
- (0,1) 左上角坐标
- (2,3) 右上角坐标
- (4,5) 右下角坐标
- (6,7) 左下角坐标
        :type Position: list of int
        """
        self._Position = None

    @property
    def Position(self):
        r"""这是OCR在高精度识别下返回的坐标值，采用的是由一个数组表示4个顶点的坐标构成，如[0,1,2,3,4,5,6,7]
- (0,1) 左上角坐标
- (2,3) 右上角坐标
- (4,5) 右下角坐标
- (6,7) 左下角坐标
        :rtype: list of int
        """
        return self._Position

    @Position.setter
    def Position(self, Position):
        self._Position = Position


    def _deserialize(self, params):
        self._Position = params.get("Position")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class QrcodeImgSize(AbstractModel):
    r"""图片大小

    """

    def __init__(self):
        r"""
        :param _Wide: 宽
        :type Wide: int
        :param _High: 高
        :type High: int
        """
        self._Wide = None
        self._High = None

    @property
    def Wide(self):
        r"""宽
        :rtype: int
        """
        return self._Wide

    @Wide.setter
    def Wide(self, Wide):
        self._Wide = Wide

    @property
    def High(self):
        r"""高
        :rtype: int
        """
        return self._High

    @High.setter
    def High(self, High):
        self._High = High


    def _deserialize(self, params):
        self._Wide = params.get("Wide")
        self._High = params.get("High")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class QrcodeOCRRequest(AbstractModel):
    r"""QrcodeOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。要求图片经Base64编码后不超过 10M，支持PNG、JPG、JPEG格式。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。要求图片经Base64编码后不超过 10M，支持PNG、JPG、JPEG格式。建议图片存储于腾讯云，可保障更高的下载速度和稳定性。
        :type ImageUrl: str
        """
        self._ImageBase64 = None
        self._ImageUrl = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。要求图片经Base64编码后不超过 10M，支持PNG、JPG、JPEG格式。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。要求图片经Base64编码后不超过 10M，支持PNG、JPG、JPEG格式。建议图片存储于腾讯云，可保障更高的下载速度和稳定性。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class QrcodeOCRResponse(AbstractModel):
    r"""QrcodeOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _CodeResults: 二维码/条形码识别结果信息，具体内容请点击左侧链接。
        :type CodeResults: list of QrcodeResultsInfo
        :param _ImgSize: 图片大小，具体内容请点击左侧链接。
        :type ImgSize: :class:`tencentcloud.ocr.v20181119.models.QrcodeImgSize`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._CodeResults = None
        self._ImgSize = None
        self._RequestId = None

    @property
    def CodeResults(self):
        r"""二维码/条形码识别结果信息，具体内容请点击左侧链接。
        :rtype: list of QrcodeResultsInfo
        """
        return self._CodeResults

    @CodeResults.setter
    def CodeResults(self, CodeResults):
        self._CodeResults = CodeResults

    @property
    def ImgSize(self):
        r"""图片大小，具体内容请点击左侧链接。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.QrcodeImgSize`
        """
        return self._ImgSize

    @ImgSize.setter
    def ImgSize(self, ImgSize):
        self._ImgSize = ImgSize

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("CodeResults") is not None:
            self._CodeResults = []
            for item in params.get("CodeResults"):
                obj = QrcodeResultsInfo()
                obj._deserialize(item)
                self._CodeResults.append(obj)
        if params.get("ImgSize") is not None:
            self._ImgSize = QrcodeImgSize()
            self._ImgSize._deserialize(params.get("ImgSize"))
        self._RequestId = params.get("RequestId")


class QrcodePositionObj(AbstractModel):
    r"""二维码/条形码坐标信息

    """

    def __init__(self):
        r"""
        :param _LeftTop: 左上顶点坐标（如果是条形码，X和Y都为-1）
        :type LeftTop: :class:`tencentcloud.ocr.v20181119.models.Coord`
        :param _RightTop: 右上顶点坐标（如果是条形码，X和Y都为-1）
        :type RightTop: :class:`tencentcloud.ocr.v20181119.models.Coord`
        :param _RightBottom: 右下顶点坐标（如果是条形码，X和Y都为-1）
        :type RightBottom: :class:`tencentcloud.ocr.v20181119.models.Coord`
        :param _LeftBottom: 左下顶点坐标（如果是条形码，X和Y都为-1）
        :type LeftBottom: :class:`tencentcloud.ocr.v20181119.models.Coord`
        """
        self._LeftTop = None
        self._RightTop = None
        self._RightBottom = None
        self._LeftBottom = None

    @property
    def LeftTop(self):
        r"""左上顶点坐标（如果是条形码，X和Y都为-1）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Coord`
        """
        return self._LeftTop

    @LeftTop.setter
    def LeftTop(self, LeftTop):
        self._LeftTop = LeftTop

    @property
    def RightTop(self):
        r"""右上顶点坐标（如果是条形码，X和Y都为-1）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Coord`
        """
        return self._RightTop

    @RightTop.setter
    def RightTop(self, RightTop):
        self._RightTop = RightTop

    @property
    def RightBottom(self):
        r"""右下顶点坐标（如果是条形码，X和Y都为-1）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Coord`
        """
        return self._RightBottom

    @RightBottom.setter
    def RightBottom(self, RightBottom):
        self._RightBottom = RightBottom

    @property
    def LeftBottom(self):
        r"""左下顶点坐标（如果是条形码，X和Y都为-1）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Coord`
        """
        return self._LeftBottom

    @LeftBottom.setter
    def LeftBottom(self, LeftBottom):
        self._LeftBottom = LeftBottom


    def _deserialize(self, params):
        if params.get("LeftTop") is not None:
            self._LeftTop = Coord()
            self._LeftTop._deserialize(params.get("LeftTop"))
        if params.get("RightTop") is not None:
            self._RightTop = Coord()
            self._RightTop._deserialize(params.get("RightTop"))
        if params.get("RightBottom") is not None:
            self._RightBottom = Coord()
            self._RightBottom._deserialize(params.get("RightBottom"))
        if params.get("LeftBottom") is not None:
            self._LeftBottom = Coord()
            self._LeftBottom._deserialize(params.get("LeftBottom"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class QrcodeResultsInfo(AbstractModel):
    r"""二维码/条形码识别结果信息

    """

    def __init__(self):
        r"""
        :param _TypeName: 类型包括
二维码：QR_CODE
一维码：EAN-13、EAN-8、EAN-2、UPC-A、UPC-E、CODE-39、CODE-93、CODE-128 
PDF：PDF_417
DataMatrix：DATA_MATRIX
小程序码：WX_CODE
        :type TypeName: str
        :param _Url: 二维码/条形码包含的地址
        :type Url: str
        :param _Position: 二维码/条形码坐标
        :type Position: :class:`tencentcloud.ocr.v20181119.models.QrcodePositionObj`
        """
        self._TypeName = None
        self._Url = None
        self._Position = None

    @property
    def TypeName(self):
        r"""类型包括
二维码：QR_CODE
一维码：EAN-13、EAN-8、EAN-2、UPC-A、UPC-E、CODE-39、CODE-93、CODE-128 
PDF：PDF_417
DataMatrix：DATA_MATRIX
小程序码：WX_CODE
        :rtype: str
        """
        return self._TypeName

    @TypeName.setter
    def TypeName(self, TypeName):
        self._TypeName = TypeName

    @property
    def Url(self):
        r"""二维码/条形码包含的地址
        :rtype: str
        """
        return self._Url

    @Url.setter
    def Url(self, Url):
        self._Url = Url

    @property
    def Position(self):
        r"""二维码/条形码坐标
        :rtype: :class:`tencentcloud.ocr.v20181119.models.QrcodePositionObj`
        """
        return self._Position

    @Position.setter
    def Position(self, Position):
        self._Position = Position


    def _deserialize(self, params):
        self._TypeName = params.get("TypeName")
        self._Url = params.get("Url")
        if params.get("Position") is not None:
            self._Position = QrcodePositionObj()
            self._Position._deserialize(params.get("Position"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class QuestionBlockObj(AbstractModel):
    r"""数学试题识别结构化对象

    """

    def __init__(self):
        r"""
        :param _QuestionArr: 数学试题识别结构化信息数组
        :type QuestionArr: list of QuestionObj
        :param _QuestionBboxCoord: 题目主体区域检测框在图片中的像素坐标
        :type QuestionBboxCoord: :class:`tencentcloud.ocr.v20181119.models.Rect`
        """
        self._QuestionArr = None
        self._QuestionBboxCoord = None

    @property
    def QuestionArr(self):
        r"""数学试题识别结构化信息数组
        :rtype: list of QuestionObj
        """
        return self._QuestionArr

    @QuestionArr.setter
    def QuestionArr(self, QuestionArr):
        self._QuestionArr = QuestionArr

    @property
    def QuestionBboxCoord(self):
        r"""题目主体区域检测框在图片中的像素坐标
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Rect`
        """
        return self._QuestionBboxCoord

    @QuestionBboxCoord.setter
    def QuestionBboxCoord(self, QuestionBboxCoord):
        self._QuestionBboxCoord = QuestionBboxCoord


    def _deserialize(self, params):
        if params.get("QuestionArr") is not None:
            self._QuestionArr = []
            for item in params.get("QuestionArr"):
                obj = QuestionObj()
                obj._deserialize(item)
                self._QuestionArr.append(obj)
        if params.get("QuestionBboxCoord") is not None:
            self._QuestionBboxCoord = Rect()
            self._QuestionBboxCoord._deserialize(params.get("QuestionBboxCoord"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class QuestionInfo(AbstractModel):
    r"""试题识别结果

    """

    def __init__(self):
        r"""
        :param _Angle: 旋转角度
        :type Angle: float
        :param _Height: 预处理后图片高度
        :type Height: int
        :param _Width: 预处理后图片宽度
        :type Width: int
        :param _ResultList: 文档元素
注意：此字段可能返回 null，表示取不到有效值。
        :type ResultList: list of ResultList
        :param _OrgHeight: 输入图片高度
        :type OrgHeight: int
        :param _OrgWidth: 输入图片宽度
        :type OrgWidth: int
        :param _ImageBase64: 预处理后的图片base64编码
        :type ImageBase64: str
        """
        self._Angle = None
        self._Height = None
        self._Width = None
        self._ResultList = None
        self._OrgHeight = None
        self._OrgWidth = None
        self._ImageBase64 = None

    @property
    def Angle(self):
        r"""旋转角度
        :rtype: float
        """
        return self._Angle

    @Angle.setter
    def Angle(self, Angle):
        self._Angle = Angle

    @property
    def Height(self):
        r"""预处理后图片高度
        :rtype: int
        """
        return self._Height

    @Height.setter
    def Height(self, Height):
        self._Height = Height

    @property
    def Width(self):
        r"""预处理后图片宽度
        :rtype: int
        """
        return self._Width

    @Width.setter
    def Width(self, Width):
        self._Width = Width

    @property
    def ResultList(self):
        r"""文档元素
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of ResultList
        """
        return self._ResultList

    @ResultList.setter
    def ResultList(self, ResultList):
        self._ResultList = ResultList

    @property
    def OrgHeight(self):
        r"""输入图片高度
        :rtype: int
        """
        return self._OrgHeight

    @OrgHeight.setter
    def OrgHeight(self, OrgHeight):
        self._OrgHeight = OrgHeight

    @property
    def OrgWidth(self):
        r"""输入图片宽度
        :rtype: int
        """
        return self._OrgWidth

    @OrgWidth.setter
    def OrgWidth(self, OrgWidth):
        self._OrgWidth = OrgWidth

    @property
    def ImageBase64(self):
        r"""预处理后的图片base64编码
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64


    def _deserialize(self, params):
        self._Angle = params.get("Angle")
        self._Height = params.get("Height")
        self._Width = params.get("Width")
        if params.get("ResultList") is not None:
            self._ResultList = []
            for item in params.get("ResultList"):
                obj = ResultList()
                obj._deserialize(item)
                self._ResultList.append(obj)
        self._OrgHeight = params.get("OrgHeight")
        self._OrgWidth = params.get("OrgWidth")
        self._ImageBase64 = params.get("ImageBase64")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class QuestionOCRRequest(AbstractModel):
    r"""QuestionOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageUrl: 图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。支持的图片像素：需介于20-10000px之间。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        :param _ImageBase64: 图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。支持的图片像素：需介于20-10000px之间。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _IsPdf: 是否开启PDF识别，默认值为false，开启后可同时支持图片和PDF的识别。
        :type IsPdf: bool
        :param _PdfPageNumber: 需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :type PdfPageNumber: int
        :param _EnableImageCrop: 是否开启切边增强和弯曲矫正,默认为false不开启
        :type EnableImageCrop: bool
        """
        self._ImageUrl = None
        self._ImageBase64 = None
        self._IsPdf = None
        self._PdfPageNumber = None
        self._EnableImageCrop = None

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。支持的图片像素：需介于20-10000px之间。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。支持的图片像素：需介于20-10000px之间。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def IsPdf(self):
        r"""是否开启PDF识别，默认值为false，开启后可同时支持图片和PDF的识别。
        :rtype: bool
        """
        return self._IsPdf

    @IsPdf.setter
    def IsPdf(self, IsPdf):
        self._IsPdf = IsPdf

    @property
    def PdfPageNumber(self):
        r"""需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :rtype: int
        """
        return self._PdfPageNumber

    @PdfPageNumber.setter
    def PdfPageNumber(self, PdfPageNumber):
        self._PdfPageNumber = PdfPageNumber

    @property
    def EnableImageCrop(self):
        r"""是否开启切边增强和弯曲矫正,默认为false不开启
        :rtype: bool
        """
        return self._EnableImageCrop

    @EnableImageCrop.setter
    def EnableImageCrop(self, EnableImageCrop):
        self._EnableImageCrop = EnableImageCrop


    def _deserialize(self, params):
        self._ImageUrl = params.get("ImageUrl")
        self._ImageBase64 = params.get("ImageBase64")
        self._IsPdf = params.get("IsPdf")
        self._PdfPageNumber = params.get("PdfPageNumber")
        self._EnableImageCrop = params.get("EnableImageCrop")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class QuestionOCRResponse(AbstractModel):
    r"""QuestionOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _QuestionInfo: 检测到的文本信息
        :type QuestionInfo: list of QuestionInfo
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._QuestionInfo = None
        self._RequestId = None

    @property
    def QuestionInfo(self):
        r"""检测到的文本信息
        :rtype: list of QuestionInfo
        """
        return self._QuestionInfo

    @QuestionInfo.setter
    def QuestionInfo(self, QuestionInfo):
        self._QuestionInfo = QuestionInfo

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("QuestionInfo") is not None:
            self._QuestionInfo = []
            for item in params.get("QuestionInfo"):
                obj = QuestionInfo()
                obj._deserialize(item)
                self._QuestionInfo.append(obj)
        self._RequestId = params.get("RequestId")


class QuestionObj(AbstractModel):
    r"""试题识别结构化信息

    """

    def __init__(self):
        r"""
        :param _QuestionTextNo: 题号
        :type QuestionTextNo: str
        :param _QuestionTextType: 题型：
1: "选择题"
2: "填空题"
3: "解答题"
        :type QuestionTextType: int
        :param _QuestionText: 题干
        :type QuestionText: str
        :param _QuestionOptions: 选择题选项，包含1个或多个option
        :type QuestionOptions: str
        :param _QuestionSubquestion: 所有子题的question属性
        :type QuestionSubquestion: str
        :param _QuestionImageCoords: 示意图检测框在的图片中的像素坐标
        :type QuestionImageCoords: list of Rect
        """
        self._QuestionTextNo = None
        self._QuestionTextType = None
        self._QuestionText = None
        self._QuestionOptions = None
        self._QuestionSubquestion = None
        self._QuestionImageCoords = None

    @property
    def QuestionTextNo(self):
        r"""题号
        :rtype: str
        """
        return self._QuestionTextNo

    @QuestionTextNo.setter
    def QuestionTextNo(self, QuestionTextNo):
        self._QuestionTextNo = QuestionTextNo

    @property
    def QuestionTextType(self):
        r"""题型：
1: "选择题"
2: "填空题"
3: "解答题"
        :rtype: int
        """
        return self._QuestionTextType

    @QuestionTextType.setter
    def QuestionTextType(self, QuestionTextType):
        self._QuestionTextType = QuestionTextType

    @property
    def QuestionText(self):
        r"""题干
        :rtype: str
        """
        return self._QuestionText

    @QuestionText.setter
    def QuestionText(self, QuestionText):
        self._QuestionText = QuestionText

    @property
    def QuestionOptions(self):
        r"""选择题选项，包含1个或多个option
        :rtype: str
        """
        return self._QuestionOptions

    @QuestionOptions.setter
    def QuestionOptions(self, QuestionOptions):
        self._QuestionOptions = QuestionOptions

    @property
    def QuestionSubquestion(self):
        r"""所有子题的question属性
        :rtype: str
        """
        return self._QuestionSubquestion

    @QuestionSubquestion.setter
    def QuestionSubquestion(self, QuestionSubquestion):
        self._QuestionSubquestion = QuestionSubquestion

    @property
    def QuestionImageCoords(self):
        r"""示意图检测框在的图片中的像素坐标
        :rtype: list of Rect
        """
        return self._QuestionImageCoords

    @QuestionImageCoords.setter
    def QuestionImageCoords(self, QuestionImageCoords):
        self._QuestionImageCoords = QuestionImageCoords


    def _deserialize(self, params):
        self._QuestionTextNo = params.get("QuestionTextNo")
        self._QuestionTextType = params.get("QuestionTextType")
        self._QuestionText = params.get("QuestionText")
        self._QuestionOptions = params.get("QuestionOptions")
        self._QuestionSubquestion = params.get("QuestionSubquestion")
        if params.get("QuestionImageCoords") is not None:
            self._QuestionImageCoords = []
            for item in params.get("QuestionImageCoords"):
                obj = Rect()
                obj._deserialize(item)
                self._QuestionImageCoords.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class QuestionSplitLayoutOCRRequest(AbstractModel):
    r"""QuestionSplitLayoutOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageUrl: 图片/PDF的 Url 地址。要求图片经Base64编码后不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        :param _ImageBase64: 图片/PDF的 Base64 值。要求Base64不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _IsPdf: 是否开启PDF识别，默认值为false，开启后可同时支持图片和PDF的识别。
        :type IsPdf: bool
        :param _PdfPageNumber: 需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :type PdfPageNumber: int
        :param _EnableImageCrop: 是否开启切边增强和弯曲矫正,默认为false不开启
        :type EnableImageCrop: bool
        :param _UseNewModel: false: 使用当前默认模型返回结构化信息更全面，但检测精度一般
true:  使用多模态推理模型，速度更快精度更高，但只返回题目最外层边框

API默认false, demo默认使用的是true
        :type UseNewModel: bool
        """
        self._ImageUrl = None
        self._ImageBase64 = None
        self._IsPdf = None
        self._PdfPageNumber = None
        self._EnableImageCrop = None
        self._UseNewModel = None

    @property
    def ImageUrl(self):
        r"""图片/PDF的 Url 地址。要求图片经Base64编码后不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def ImageBase64(self):
        r"""图片/PDF的 Base64 值。要求Base64不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def IsPdf(self):
        r"""是否开启PDF识别，默认值为false，开启后可同时支持图片和PDF的识别。
        :rtype: bool
        """
        return self._IsPdf

    @IsPdf.setter
    def IsPdf(self, IsPdf):
        self._IsPdf = IsPdf

    @property
    def PdfPageNumber(self):
        r"""需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :rtype: int
        """
        return self._PdfPageNumber

    @PdfPageNumber.setter
    def PdfPageNumber(self, PdfPageNumber):
        self._PdfPageNumber = PdfPageNumber

    @property
    def EnableImageCrop(self):
        r"""是否开启切边增强和弯曲矫正,默认为false不开启
        :rtype: bool
        """
        return self._EnableImageCrop

    @EnableImageCrop.setter
    def EnableImageCrop(self, EnableImageCrop):
        self._EnableImageCrop = EnableImageCrop

    @property
    def UseNewModel(self):
        r"""false: 使用当前默认模型返回结构化信息更全面，但检测精度一般
true:  使用多模态推理模型，速度更快精度更高，但只返回题目最外层边框

API默认false, demo默认使用的是true
        :rtype: bool
        """
        return self._UseNewModel

    @UseNewModel.setter
    def UseNewModel(self, UseNewModel):
        self._UseNewModel = UseNewModel


    def _deserialize(self, params):
        self._ImageUrl = params.get("ImageUrl")
        self._ImageBase64 = params.get("ImageBase64")
        self._IsPdf = params.get("IsPdf")
        self._PdfPageNumber = params.get("PdfPageNumber")
        self._EnableImageCrop = params.get("EnableImageCrop")
        self._UseNewModel = params.get("UseNewModel")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class QuestionSplitLayoutOCRResponse(AbstractModel):
    r"""QuestionSplitLayoutOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _QuestionInfo: 检测到的文本信息
        :type QuestionInfo: list of QuestionInfo
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._QuestionInfo = None
        self._RequestId = None

    @property
    def QuestionInfo(self):
        r"""检测到的文本信息
        :rtype: list of QuestionInfo
        """
        return self._QuestionInfo

    @QuestionInfo.setter
    def QuestionInfo(self, QuestionInfo):
        self._QuestionInfo = QuestionInfo

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("QuestionInfo") is not None:
            self._QuestionInfo = []
            for item in params.get("QuestionInfo"):
                obj = QuestionInfo()
                obj._deserialize(item)
                self._QuestionInfo.append(obj)
        self._RequestId = params.get("RequestId")


class QuestionSplitOCRRequest(AbstractModel):
    r"""QuestionSplitOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageUrl: 图片/PDF的 Url 地址。要求图片经Base64编码后不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        :param _ImageBase64: 图片/PDF的 Base64 值。要求Base64不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _IsPdf: 是否开启PDF识别，默认值为false，开启后可同时支持图片和PDF的识别。
        :type IsPdf: bool
        :param _PdfPageNumber: 需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :type PdfPageNumber: int
        :param _EnableImageCrop: 是否开启切边增强和弯曲矫正,默认为false不开启
        :type EnableImageCrop: bool
        :param _EnableOnlyDetectBorder: 是否只返回检测框，默认false
        :type EnableOnlyDetectBorder: bool
        :param _UseNewModel: false: 使用当前默认模型(结构化信息更全面，但手写答案坐标精度一般)  
true:  使用多模态推理模型，推理效果更强（题目框选、手写答案坐标定位能力更优，但不返回题目选项和题目类型信息）

API默认false, demo默认使用的是true
        :type UseNewModel: bool
        """
        self._ImageUrl = None
        self._ImageBase64 = None
        self._IsPdf = None
        self._PdfPageNumber = None
        self._EnableImageCrop = None
        self._EnableOnlyDetectBorder = None
        self._UseNewModel = None

    @property
    def ImageUrl(self):
        r"""图片/PDF的 Url 地址。要求图片经Base64编码后不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def ImageBase64(self):
        r"""图片/PDF的 Base64 值。要求Base64不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def IsPdf(self):
        r"""是否开启PDF识别，默认值为false，开启后可同时支持图片和PDF的识别。
        :rtype: bool
        """
        return self._IsPdf

    @IsPdf.setter
    def IsPdf(self, IsPdf):
        self._IsPdf = IsPdf

    @property
    def PdfPageNumber(self):
        r"""需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :rtype: int
        """
        return self._PdfPageNumber

    @PdfPageNumber.setter
    def PdfPageNumber(self, PdfPageNumber):
        self._PdfPageNumber = PdfPageNumber

    @property
    def EnableImageCrop(self):
        r"""是否开启切边增强和弯曲矫正,默认为false不开启
        :rtype: bool
        """
        return self._EnableImageCrop

    @EnableImageCrop.setter
    def EnableImageCrop(self, EnableImageCrop):
        self._EnableImageCrop = EnableImageCrop

    @property
    def EnableOnlyDetectBorder(self):
        r"""是否只返回检测框，默认false
        :rtype: bool
        """
        return self._EnableOnlyDetectBorder

    @EnableOnlyDetectBorder.setter
    def EnableOnlyDetectBorder(self, EnableOnlyDetectBorder):
        self._EnableOnlyDetectBorder = EnableOnlyDetectBorder

    @property
    def UseNewModel(self):
        r"""false: 使用当前默认模型(结构化信息更全面，但手写答案坐标精度一般)  
true:  使用多模态推理模型，推理效果更强（题目框选、手写答案坐标定位能力更优，但不返回题目选项和题目类型信息）

API默认false, demo默认使用的是true
        :rtype: bool
        """
        return self._UseNewModel

    @UseNewModel.setter
    def UseNewModel(self, UseNewModel):
        self._UseNewModel = UseNewModel


    def _deserialize(self, params):
        self._ImageUrl = params.get("ImageUrl")
        self._ImageBase64 = params.get("ImageBase64")
        self._IsPdf = params.get("IsPdf")
        self._PdfPageNumber = params.get("PdfPageNumber")
        self._EnableImageCrop = params.get("EnableImageCrop")
        self._EnableOnlyDetectBorder = params.get("EnableOnlyDetectBorder")
        self._UseNewModel = params.get("UseNewModel")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class QuestionSplitOCRResponse(AbstractModel):
    r"""QuestionSplitOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _QuestionInfo: 检测到的文本信息
        :type QuestionInfo: list of QuestionInfo
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._QuestionInfo = None
        self._RequestId = None

    @property
    def QuestionInfo(self):
        r"""检测到的文本信息
        :rtype: list of QuestionInfo
        """
        return self._QuestionInfo

    @QuestionInfo.setter
    def QuestionInfo(self, QuestionInfo):
        self._QuestionInfo = QuestionInfo

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("QuestionInfo") is not None:
            self._QuestionInfo = []
            for item in params.get("QuestionInfo"):
                obj = QuestionInfo()
                obj._deserialize(item)
                self._QuestionInfo.append(obj)
        self._RequestId = params.get("RequestId")


class QuotaInvoice(AbstractModel):
    r"""定额发票

    """

    def __init__(self):
        r"""
        :param _Title: 发票名称
        :type Title: str
        :param _Code: 发票代码
        :type Code: str
        :param _Number: 发票号码
        :type Number: str
        :param _Total: 价税合计（小写）
        :type Total: str
        :param _TotalCn: 价税合计（大写）
        :type TotalCn: str
        :param _Kind: 发票消费类型
        :type Kind: str
        :param _Province: 省
        :type Province: str
        :param _City: 市
        :type City: str
        :param _QRCodeMark: 是否存在二维码（1：有，0：无）
        :type QRCodeMark: int
        :param _CompanySealMark: 是否有公司印章（0：没有，1：有）
        :type CompanySealMark: int
        """
        self._Title = None
        self._Code = None
        self._Number = None
        self._Total = None
        self._TotalCn = None
        self._Kind = None
        self._Province = None
        self._City = None
        self._QRCodeMark = None
        self._CompanySealMark = None

    @property
    def Title(self):
        r"""发票名称
        :rtype: str
        """
        return self._Title

    @Title.setter
    def Title(self, Title):
        self._Title = Title

    @property
    def Code(self):
        r"""发票代码
        :rtype: str
        """
        return self._Code

    @Code.setter
    def Code(self, Code):
        self._Code = Code

    @property
    def Number(self):
        r"""发票号码
        :rtype: str
        """
        return self._Number

    @Number.setter
    def Number(self, Number):
        self._Number = Number

    @property
    def Total(self):
        r"""价税合计（小写）
        :rtype: str
        """
        return self._Total

    @Total.setter
    def Total(self, Total):
        self._Total = Total

    @property
    def TotalCn(self):
        r"""价税合计（大写）
        :rtype: str
        """
        return self._TotalCn

    @TotalCn.setter
    def TotalCn(self, TotalCn):
        self._TotalCn = TotalCn

    @property
    def Kind(self):
        r"""发票消费类型
        :rtype: str
        """
        return self._Kind

    @Kind.setter
    def Kind(self, Kind):
        self._Kind = Kind

    @property
    def Province(self):
        r"""省
        :rtype: str
        """
        return self._Province

    @Province.setter
    def Province(self, Province):
        self._Province = Province

    @property
    def City(self):
        r"""市
        :rtype: str
        """
        return self._City

    @City.setter
    def City(self, City):
        self._City = City

    @property
    def QRCodeMark(self):
        r"""是否存在二维码（1：有，0：无）
        :rtype: int
        """
        return self._QRCodeMark

    @QRCodeMark.setter
    def QRCodeMark(self, QRCodeMark):
        self._QRCodeMark = QRCodeMark

    @property
    def CompanySealMark(self):
        r"""是否有公司印章（0：没有，1：有）
        :rtype: int
        """
        return self._CompanySealMark

    @CompanySealMark.setter
    def CompanySealMark(self, CompanySealMark):
        self._CompanySealMark = CompanySealMark


    def _deserialize(self, params):
        self._Title = params.get("Title")
        self._Code = params.get("Code")
        self._Number = params.get("Number")
        self._Total = params.get("Total")
        self._TotalCn = params.get("TotalCn")
        self._Kind = params.get("Kind")
        self._Province = params.get("Province")
        self._City = params.get("City")
        self._QRCodeMark = params.get("QRCodeMark")
        self._CompanySealMark = params.get("CompanySealMark")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class RailwayTicketInfo(AbstractModel):
    r"""铁路电子客票信息

    """

    def __init__(self):
        r"""
        :param _TypeOfVoucher: 电子发票类型
        :type TypeOfVoucher: str
        :param _ElectronicTicketNum: 电子客票号
        :type ElectronicTicketNum: str
        :param _DateOfIssue: 开票日期
        :type DateOfIssue: str
        :param _TypeOfBusiness: 售票或退票类型
        :type TypeOfBusiness: str
        :param _DepartureStation: 始发站
        :type DepartureStation: str
        :param _PhonicsOfDepartureStation: 始发站英文
        :type PhonicsOfDepartureStation: str
        :param _DestinationStation: 到达站
        :type DestinationStation: str
        :param _PhonicsOfDestinationStation: 到达站英文
        :type PhonicsOfDestinationStation: str
        :param _TrainNumber: 火车号
        :type TrainNumber: str
        :param _TravelDate: 火车出发日期
        :type TravelDate: str
        :param _DepartureTime: 始发时间
        :type DepartureTime: str
        :param _AirConditioningCharacteristics: 空调特点
        :type AirConditioningCharacteristics: str
        :param _SeatLevel: 座位类型
        :type SeatLevel: str
        :param _Carriage: 火车第几车
        :type Carriage: str
        :param _Seat: 座位号
        :type Seat: str
        :param _Fare: 票价
        :type Fare: str
        :param _ElectronicInvoiceRailwayETicketNumber: 发票号码
        :type ElectronicInvoiceRailwayETicketNumber: str
        :param _IdNumber: 身份证号
        :type IdNumber: str
        :param _Name: 姓名
        :type Name: str
        :param _TotalAmountExcludingTax: 金额
        :type TotalAmountExcludingTax: str
        :param _TaxRate: 税率
        :type TaxRate: str
        :param _TaxAmount: 税额
        :type TaxAmount: str
        :param _NameOfPurchaser: 购买方名称
        :type NameOfPurchaser: str
        :param _UnifiedSocialCreditCodeOfPurchaser: 统一社会信用代码
        :type UnifiedSocialCreditCodeOfPurchaser: str
        :param _NumberOfOriginalInvoice: 原发票号码
        :type NumberOfOriginalInvoice: str
        """
        self._TypeOfVoucher = None
        self._ElectronicTicketNum = None
        self._DateOfIssue = None
        self._TypeOfBusiness = None
        self._DepartureStation = None
        self._PhonicsOfDepartureStation = None
        self._DestinationStation = None
        self._PhonicsOfDestinationStation = None
        self._TrainNumber = None
        self._TravelDate = None
        self._DepartureTime = None
        self._AirConditioningCharacteristics = None
        self._SeatLevel = None
        self._Carriage = None
        self._Seat = None
        self._Fare = None
        self._ElectronicInvoiceRailwayETicketNumber = None
        self._IdNumber = None
        self._Name = None
        self._TotalAmountExcludingTax = None
        self._TaxRate = None
        self._TaxAmount = None
        self._NameOfPurchaser = None
        self._UnifiedSocialCreditCodeOfPurchaser = None
        self._NumberOfOriginalInvoice = None

    @property
    def TypeOfVoucher(self):
        r"""电子发票类型
        :rtype: str
        """
        return self._TypeOfVoucher

    @TypeOfVoucher.setter
    def TypeOfVoucher(self, TypeOfVoucher):
        self._TypeOfVoucher = TypeOfVoucher

    @property
    def ElectronicTicketNum(self):
        r"""电子客票号
        :rtype: str
        """
        return self._ElectronicTicketNum

    @ElectronicTicketNum.setter
    def ElectronicTicketNum(self, ElectronicTicketNum):
        self._ElectronicTicketNum = ElectronicTicketNum

    @property
    def DateOfIssue(self):
        r"""开票日期
        :rtype: str
        """
        return self._DateOfIssue

    @DateOfIssue.setter
    def DateOfIssue(self, DateOfIssue):
        self._DateOfIssue = DateOfIssue

    @property
    def TypeOfBusiness(self):
        r"""售票或退票类型
        :rtype: str
        """
        return self._TypeOfBusiness

    @TypeOfBusiness.setter
    def TypeOfBusiness(self, TypeOfBusiness):
        self._TypeOfBusiness = TypeOfBusiness

    @property
    def DepartureStation(self):
        r"""始发站
        :rtype: str
        """
        return self._DepartureStation

    @DepartureStation.setter
    def DepartureStation(self, DepartureStation):
        self._DepartureStation = DepartureStation

    @property
    def PhonicsOfDepartureStation(self):
        r"""始发站英文
        :rtype: str
        """
        return self._PhonicsOfDepartureStation

    @PhonicsOfDepartureStation.setter
    def PhonicsOfDepartureStation(self, PhonicsOfDepartureStation):
        self._PhonicsOfDepartureStation = PhonicsOfDepartureStation

    @property
    def DestinationStation(self):
        r"""到达站
        :rtype: str
        """
        return self._DestinationStation

    @DestinationStation.setter
    def DestinationStation(self, DestinationStation):
        self._DestinationStation = DestinationStation

    @property
    def PhonicsOfDestinationStation(self):
        r"""到达站英文
        :rtype: str
        """
        return self._PhonicsOfDestinationStation

    @PhonicsOfDestinationStation.setter
    def PhonicsOfDestinationStation(self, PhonicsOfDestinationStation):
        self._PhonicsOfDestinationStation = PhonicsOfDestinationStation

    @property
    def TrainNumber(self):
        r"""火车号
        :rtype: str
        """
        return self._TrainNumber

    @TrainNumber.setter
    def TrainNumber(self, TrainNumber):
        self._TrainNumber = TrainNumber

    @property
    def TravelDate(self):
        r"""火车出发日期
        :rtype: str
        """
        return self._TravelDate

    @TravelDate.setter
    def TravelDate(self, TravelDate):
        self._TravelDate = TravelDate

    @property
    def DepartureTime(self):
        r"""始发时间
        :rtype: str
        """
        return self._DepartureTime

    @DepartureTime.setter
    def DepartureTime(self, DepartureTime):
        self._DepartureTime = DepartureTime

    @property
    def AirConditioningCharacteristics(self):
        r"""空调特点
        :rtype: str
        """
        return self._AirConditioningCharacteristics

    @AirConditioningCharacteristics.setter
    def AirConditioningCharacteristics(self, AirConditioningCharacteristics):
        self._AirConditioningCharacteristics = AirConditioningCharacteristics

    @property
    def SeatLevel(self):
        r"""座位类型
        :rtype: str
        """
        return self._SeatLevel

    @SeatLevel.setter
    def SeatLevel(self, SeatLevel):
        self._SeatLevel = SeatLevel

    @property
    def Carriage(self):
        r"""火车第几车
        :rtype: str
        """
        return self._Carriage

    @Carriage.setter
    def Carriage(self, Carriage):
        self._Carriage = Carriage

    @property
    def Seat(self):
        r"""座位号
        :rtype: str
        """
        return self._Seat

    @Seat.setter
    def Seat(self, Seat):
        self._Seat = Seat

    @property
    def Fare(self):
        r"""票价
        :rtype: str
        """
        return self._Fare

    @Fare.setter
    def Fare(self, Fare):
        self._Fare = Fare

    @property
    def ElectronicInvoiceRailwayETicketNumber(self):
        r"""发票号码
        :rtype: str
        """
        return self._ElectronicInvoiceRailwayETicketNumber

    @ElectronicInvoiceRailwayETicketNumber.setter
    def ElectronicInvoiceRailwayETicketNumber(self, ElectronicInvoiceRailwayETicketNumber):
        self._ElectronicInvoiceRailwayETicketNumber = ElectronicInvoiceRailwayETicketNumber

    @property
    def IdNumber(self):
        r"""身份证号
        :rtype: str
        """
        return self._IdNumber

    @IdNumber.setter
    def IdNumber(self, IdNumber):
        self._IdNumber = IdNumber

    @property
    def Name(self):
        r"""姓名
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def TotalAmountExcludingTax(self):
        r"""金额
        :rtype: str
        """
        return self._TotalAmountExcludingTax

    @TotalAmountExcludingTax.setter
    def TotalAmountExcludingTax(self, TotalAmountExcludingTax):
        self._TotalAmountExcludingTax = TotalAmountExcludingTax

    @property
    def TaxRate(self):
        r"""税率
        :rtype: str
        """
        return self._TaxRate

    @TaxRate.setter
    def TaxRate(self, TaxRate):
        self._TaxRate = TaxRate

    @property
    def TaxAmount(self):
        r"""税额
        :rtype: str
        """
        return self._TaxAmount

    @TaxAmount.setter
    def TaxAmount(self, TaxAmount):
        self._TaxAmount = TaxAmount

    @property
    def NameOfPurchaser(self):
        r"""购买方名称
        :rtype: str
        """
        return self._NameOfPurchaser

    @NameOfPurchaser.setter
    def NameOfPurchaser(self, NameOfPurchaser):
        self._NameOfPurchaser = NameOfPurchaser

    @property
    def UnifiedSocialCreditCodeOfPurchaser(self):
        r"""统一社会信用代码
        :rtype: str
        """
        return self._UnifiedSocialCreditCodeOfPurchaser

    @UnifiedSocialCreditCodeOfPurchaser.setter
    def UnifiedSocialCreditCodeOfPurchaser(self, UnifiedSocialCreditCodeOfPurchaser):
        self._UnifiedSocialCreditCodeOfPurchaser = UnifiedSocialCreditCodeOfPurchaser

    @property
    def NumberOfOriginalInvoice(self):
        r"""原发票号码
        :rtype: str
        """
        return self._NumberOfOriginalInvoice

    @NumberOfOriginalInvoice.setter
    def NumberOfOriginalInvoice(self, NumberOfOriginalInvoice):
        self._NumberOfOriginalInvoice = NumberOfOriginalInvoice


    def _deserialize(self, params):
        self._TypeOfVoucher = params.get("TypeOfVoucher")
        self._ElectronicTicketNum = params.get("ElectronicTicketNum")
        self._DateOfIssue = params.get("DateOfIssue")
        self._TypeOfBusiness = params.get("TypeOfBusiness")
        self._DepartureStation = params.get("DepartureStation")
        self._PhonicsOfDepartureStation = params.get("PhonicsOfDepartureStation")
        self._DestinationStation = params.get("DestinationStation")
        self._PhonicsOfDestinationStation = params.get("PhonicsOfDestinationStation")
        self._TrainNumber = params.get("TrainNumber")
        self._TravelDate = params.get("TravelDate")
        self._DepartureTime = params.get("DepartureTime")
        self._AirConditioningCharacteristics = params.get("AirConditioningCharacteristics")
        self._SeatLevel = params.get("SeatLevel")
        self._Carriage = params.get("Carriage")
        self._Seat = params.get("Seat")
        self._Fare = params.get("Fare")
        self._ElectronicInvoiceRailwayETicketNumber = params.get("ElectronicInvoiceRailwayETicketNumber")
        self._IdNumber = params.get("IdNumber")
        self._Name = params.get("Name")
        self._TotalAmountExcludingTax = params.get("TotalAmountExcludingTax")
        self._TaxRate = params.get("TaxRate")
        self._TaxAmount = params.get("TaxAmount")
        self._NameOfPurchaser = params.get("NameOfPurchaser")
        self._UnifiedSocialCreditCodeOfPurchaser = params.get("UnifiedSocialCreditCodeOfPurchaser")
        self._NumberOfOriginalInvoice = params.get("NumberOfOriginalInvoice")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class RecognizeAgentRequest(AbstractModel):
    r"""RecognizeAgent请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageUrl: <p>图片/PDF的 Url 地址。要求图片经Base64编码后不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP格式。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。</p>
        :type ImageUrl: str
        :param _ImageBase64: <p>图片/PDF的 Base64 值。要求图片经Base64编码后不超过 10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP格式。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。</p>
        :type ImageBase64: str
        :param _PdfPageNumber: <p>需识别的PDF页码。仅支持PDF单页识别，当上传文件为PDF时有效。</p><p>默认值：1</p>
        :type PdfPageNumber: int
        :param _SelectModel: <p>模型选择。</p><p>枚举值：</p><ul><li>0： 推理模型。</li><li>1： 识别、推理模型。</li></ul><p>默认值：0</p>
        :type SelectModel: int
        :param _QueryType: <p>任务类型。</p><p>枚举值：</p><ul><li><p>0： 全文识别。识别且输出全文内容。</p></li><li><p>1： 判断。判断输入图的内容是否为Query中的内容，返回结果为是或否。如Query:&quot;增值税发票&quot;，该任务类型下，将判断输入图是否为增值税发票，返回&quot;是&quot;或&quot;否&quot;。</p></li><li><p>2： 分类。判断输入图属于Query中具体哪个分类项。如Query:[&quot;营业执照&quot;,&quot;合同&quot;,&quot;票据&quot;]，在该任务类型下，将判断输入图是否属于&quot;营业执照&quot;、&quot;合同&quot;、&quot;票据&quot;，返回&quot;营业执照&quot;/&quot;合同&quot;/&quot;票据&quot;或&quot;均不符合&quot;。</p></li><li><p>3： 总结提炼。总结输入图与Query相关的内容。如Query:&quot;工作经历&quot;，在该任务类型下，将输出输入图中和&quot;工作经历&quot;相关的内容，或&quot;无相关内容&quot;。</p></li><li><p>4： 信息提取。按照自定义字段提取Key-Value，且支持多层级提取，详见入参SchemaItems说明。入参可参考下面的接口示例QueryType=4场景</p></li></ul><p>默认值：0</p>
        :type QueryType: int
        :param _SchemaItems: <p>自定义提取字段的结构，详见SchemaList结构。仅当QueryType=4时生效。</p><p>注：.N表示数组型参数。</p>
        :type SchemaItems: list of SchemaList
        :param _Query: <p>推理任务的提示词。与QueryType搭配使用，具体说明见QueryType描述。1）仅当QueryType=1/2/3时生效，且QueryType=1/3时，长度必须为1；2）QueryType=2，Query长度必须符合2≤x≤5。</p><p>注：.N表示数组型参数。</p>
        :type Query: list of str
        :param _EnableCoord: <p>是否需要返回坐标。</p><p>默认值：false</p><p>注：仅对QueryType=4时生效，且坐标位置为 Response.ExtractFields.Polygon。</p>
        :type EnableCoord: bool
        """
        self._ImageUrl = None
        self._ImageBase64 = None
        self._PdfPageNumber = None
        self._SelectModel = None
        self._QueryType = None
        self._SchemaItems = None
        self._Query = None
        self._EnableCoord = None

    @property
    def ImageUrl(self):
        r"""<p>图片/PDF的 Url 地址。要求图片经Base64编码后不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP格式。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。</p>
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def ImageBase64(self):
        r"""<p>图片/PDF的 Base64 值。要求图片经Base64编码后不超过 10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP格式。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。</p>
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def PdfPageNumber(self):
        r"""<p>需识别的PDF页码。仅支持PDF单页识别，当上传文件为PDF时有效。</p><p>默认值：1</p>
        :rtype: int
        """
        return self._PdfPageNumber

    @PdfPageNumber.setter
    def PdfPageNumber(self, PdfPageNumber):
        self._PdfPageNumber = PdfPageNumber

    @property
    def SelectModel(self):
        r"""<p>模型选择。</p><p>枚举值：</p><ul><li>0： 推理模型。</li><li>1： 识别、推理模型。</li></ul><p>默认值：0</p>
        :rtype: int
        """
        return self._SelectModel

    @SelectModel.setter
    def SelectModel(self, SelectModel):
        self._SelectModel = SelectModel

    @property
    def QueryType(self):
        r"""<p>任务类型。</p><p>枚举值：</p><ul><li><p>0： 全文识别。识别且输出全文内容。</p></li><li><p>1： 判断。判断输入图的内容是否为Query中的内容，返回结果为是或否。如Query:&quot;增值税发票&quot;，该任务类型下，将判断输入图是否为增值税发票，返回&quot;是&quot;或&quot;否&quot;。</p></li><li><p>2： 分类。判断输入图属于Query中具体哪个分类项。如Query:[&quot;营业执照&quot;,&quot;合同&quot;,&quot;票据&quot;]，在该任务类型下，将判断输入图是否属于&quot;营业执照&quot;、&quot;合同&quot;、&quot;票据&quot;，返回&quot;营业执照&quot;/&quot;合同&quot;/&quot;票据&quot;或&quot;均不符合&quot;。</p></li><li><p>3： 总结提炼。总结输入图与Query相关的内容。如Query:&quot;工作经历&quot;，在该任务类型下，将输出输入图中和&quot;工作经历&quot;相关的内容，或&quot;无相关内容&quot;。</p></li><li><p>4： 信息提取。按照自定义字段提取Key-Value，且支持多层级提取，详见入参SchemaItems说明。入参可参考下面的接口示例QueryType=4场景</p></li></ul><p>默认值：0</p>
        :rtype: int
        """
        return self._QueryType

    @QueryType.setter
    def QueryType(self, QueryType):
        self._QueryType = QueryType

    @property
    def SchemaItems(self):
        r"""<p>自定义提取字段的结构，详见SchemaList结构。仅当QueryType=4时生效。</p><p>注：.N表示数组型参数。</p>
        :rtype: list of SchemaList
        """
        return self._SchemaItems

    @SchemaItems.setter
    def SchemaItems(self, SchemaItems):
        self._SchemaItems = SchemaItems

    @property
    def Query(self):
        r"""<p>推理任务的提示词。与QueryType搭配使用，具体说明见QueryType描述。1）仅当QueryType=1/2/3时生效，且QueryType=1/3时，长度必须为1；2）QueryType=2，Query长度必须符合2≤x≤5。</p><p>注：.N表示数组型参数。</p>
        :rtype: list of str
        """
        return self._Query

    @Query.setter
    def Query(self, Query):
        self._Query = Query

    @property
    def EnableCoord(self):
        r"""<p>是否需要返回坐标。</p><p>默认值：false</p><p>注：仅对QueryType=4时生效，且坐标位置为 Response.ExtractFields.Polygon。</p>
        :rtype: bool
        """
        return self._EnableCoord

    @EnableCoord.setter
    def EnableCoord(self, EnableCoord):
        self._EnableCoord = EnableCoord


    def _deserialize(self, params):
        self._ImageUrl = params.get("ImageUrl")
        self._ImageBase64 = params.get("ImageBase64")
        self._PdfPageNumber = params.get("PdfPageNumber")
        self._SelectModel = params.get("SelectModel")
        self._QueryType = params.get("QueryType")
        if params.get("SchemaItems") is not None:
            self._SchemaItems = []
            for item in params.get("SchemaItems"):
                obj = SchemaList()
                obj._deserialize(item)
                self._SchemaItems.append(obj)
        self._Query = params.get("Query")
        self._EnableCoord = params.get("EnableCoord")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class RecognizeAgentResponse(AbstractModel):
    r"""RecognizeAgent返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Response: <p>返回内容。详见ListInfo。</p>
        :type Response: list of ListInfo
        :param _Angle: <p>图片旋转角度(角度制)，文本的水平方向为 0；顺时针为正，逆时针为负。</p>
        :type Angle: float
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Response = None
        self._Angle = None
        self._RequestId = None

    @property
    def Response(self):
        r"""<p>返回内容。详见ListInfo。</p>
        :rtype: list of ListInfo
        """
        return self._Response

    @Response.setter
    def Response(self, Response):
        self._Response = Response

    @property
    def Angle(self):
        r"""<p>图片旋转角度(角度制)，文本的水平方向为 0；顺时针为正，逆时针为负。</p>
        :rtype: float
        """
        return self._Angle

    @Angle.setter
    def Angle(self, Angle):
        self._Angle = Angle

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Response") is not None:
            self._Response = []
            for item in params.get("Response"):
                obj = ListInfo()
                obj._deserialize(item)
                self._Response.append(obj)
        self._Angle = params.get("Angle")
        self._RequestId = params.get("RequestId")


class RecognizeContainerOCRRequest(AbstractModel):
    r"""RecognizeContainerOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        """
        self._ImageBase64 = None
        self._ImageUrl = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class RecognizeContainerOCRResponse(AbstractModel):
    r"""RecognizeContainerOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _ContainerId: 集装箱箱号
        :type ContainerId: str
        :param _ContainerType: 集装箱类型
        :type ContainerType: str
        :param _GrossKG: 集装箱总重量，单位：千克（KG）
        :type GrossKG: str
        :param _GrossLB: 集装箱总重量，单位：磅（LB）
        :type GrossLB: str
        :param _PayloadKG: 集装箱有效承重，单位：千克（KG）
        :type PayloadKG: str
        :param _PayloadLB: 集装箱有效承重，单位：磅（LB）
        :type PayloadLB: str
        :param _CapacityM3: 集装箱容量，单位：立方米
        :type CapacityM3: str
        :param _CapacityFT3: 集装箱容量，单位：立英尺
        :type CapacityFT3: str
        :param _Warn: 告警码
-9926	集装箱箱号不完整或者不清晰
-9927	集装箱类型不完整或者不清晰
        :type Warn: list of int
        :param _TareKG: 集装箱自身重量，单位：千克（KG）
        :type TareKG: str
        :param _TareLB: 集装箱自身重量，单位：磅（LB）
        :type TareLB: str
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._ContainerId = None
        self._ContainerType = None
        self._GrossKG = None
        self._GrossLB = None
        self._PayloadKG = None
        self._PayloadLB = None
        self._CapacityM3 = None
        self._CapacityFT3 = None
        self._Warn = None
        self._TareKG = None
        self._TareLB = None
        self._RequestId = None

    @property
    def ContainerId(self):
        r"""集装箱箱号
        :rtype: str
        """
        return self._ContainerId

    @ContainerId.setter
    def ContainerId(self, ContainerId):
        self._ContainerId = ContainerId

    @property
    def ContainerType(self):
        r"""集装箱类型
        :rtype: str
        """
        return self._ContainerType

    @ContainerType.setter
    def ContainerType(self, ContainerType):
        self._ContainerType = ContainerType

    @property
    def GrossKG(self):
        r"""集装箱总重量，单位：千克（KG）
        :rtype: str
        """
        return self._GrossKG

    @GrossKG.setter
    def GrossKG(self, GrossKG):
        self._GrossKG = GrossKG

    @property
    def GrossLB(self):
        r"""集装箱总重量，单位：磅（LB）
        :rtype: str
        """
        return self._GrossLB

    @GrossLB.setter
    def GrossLB(self, GrossLB):
        self._GrossLB = GrossLB

    @property
    def PayloadKG(self):
        r"""集装箱有效承重，单位：千克（KG）
        :rtype: str
        """
        return self._PayloadKG

    @PayloadKG.setter
    def PayloadKG(self, PayloadKG):
        self._PayloadKG = PayloadKG

    @property
    def PayloadLB(self):
        r"""集装箱有效承重，单位：磅（LB）
        :rtype: str
        """
        return self._PayloadLB

    @PayloadLB.setter
    def PayloadLB(self, PayloadLB):
        self._PayloadLB = PayloadLB

    @property
    def CapacityM3(self):
        r"""集装箱容量，单位：立方米
        :rtype: str
        """
        return self._CapacityM3

    @CapacityM3.setter
    def CapacityM3(self, CapacityM3):
        self._CapacityM3 = CapacityM3

    @property
    def CapacityFT3(self):
        r"""集装箱容量，单位：立英尺
        :rtype: str
        """
        return self._CapacityFT3

    @CapacityFT3.setter
    def CapacityFT3(self, CapacityFT3):
        self._CapacityFT3 = CapacityFT3

    @property
    def Warn(self):
        r"""告警码
-9926	集装箱箱号不完整或者不清晰
-9927	集装箱类型不完整或者不清晰
        :rtype: list of int
        """
        return self._Warn

    @Warn.setter
    def Warn(self, Warn):
        self._Warn = Warn

    @property
    def TareKG(self):
        r"""集装箱自身重量，单位：千克（KG）
        :rtype: str
        """
        return self._TareKG

    @TareKG.setter
    def TareKG(self, TareKG):
        self._TareKG = TareKG

    @property
    def TareLB(self):
        r"""集装箱自身重量，单位：磅（LB）
        :rtype: str
        """
        return self._TareLB

    @TareLB.setter
    def TareLB(self, TareLB):
        self._TareLB = TareLB

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._ContainerId = params.get("ContainerId")
        self._ContainerType = params.get("ContainerType")
        self._GrossKG = params.get("GrossKG")
        self._GrossLB = params.get("GrossLB")
        self._PayloadKG = params.get("PayloadKG")
        self._PayloadLB = params.get("PayloadLB")
        self._CapacityM3 = params.get("CapacityM3")
        self._CapacityFT3 = params.get("CapacityFT3")
        self._Warn = params.get("Warn")
        self._TareKG = params.get("TareKG")
        self._TareLB = params.get("TareLB")
        self._RequestId = params.get("RequestId")


class RecognizeEncryptedIDCardOCRRequest(AbstractModel):
    r"""RecognizeEncryptedIDCardOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _EncryptedBody: <p>请求体被加密后的密文（Base64编码），本接口只支持加密传输</p>
        :type EncryptedBody: str
        :param _Encryption: <p>敏感数据加密信息。对传入信息有加密需求的用户可使用此参数，详情请点击左侧链接。</p>
        :type Encryption: :class:`tencentcloud.ocr.v20181119.models.Encryption`
        :param _ImageBase64: <p>图片的 Base64 值。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。</p>
        :type ImageBase64: str
        :param _ImageUrl: <p>图片的 Url 地址。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。图片下载时间不超过 3 秒。建议图片存储于腾讯云，可保障更高的下载速度和稳定性。</p>
        :type ImageUrl: str
        :param _CardSide: <p>FRONT：身份证有照片的一面（人像面），<br>BACK：身份证有国徽的一面（国徽面），<br>该参数如果不填，将为您自动判断身份证正反面。</p>
        :type CardSide: str
        :param _Config: <p>以下可选字段均为bool 类型，默认false：<br>CropIdCard，身份证照片裁剪（去掉证件外多余的边缘、自动矫正拍摄角度）<br>CropPortrait，人像照片裁剪（自动抠取身份证头像区域）<br>CopyWarn，复印件告警<br>BorderCheckWarn，边框不完整和框内遮挡告警<br>ReshootWarn，屏幕翻拍告警<br>DetectPsWarn，疑似存在PS痕迹告警（CardWarnType参数为 Advanced时同时开启电子身份证、水印告警）<br>TempIdWarn，临时身份证告警<br>InvalidDateWarn，身份证有效日期不合法告警<br>Quality，图片质量分数（评价图片的模糊程度）<br>MultiCardDetect，是否开启正反面同框识别（仅支持二代身份证正反页同框识别或临时身份证正反页同框识别）<br>ReflectWarn，是否开启反光检测<br>SDK 设置方式参考：Config = Json.stringify({&quot;CropIdCard&quot;:true,&quot;CropPortrait&quot;:true})<br>API 3.0 Explorer 设置方式参考：Config = {&quot;CropIdCard&quot;:true,&quot;CropPortrait&quot;:true}</p>
        :type Config: str
        :param _EnableRecognitionRectify: <p>默认值为true，打开识别结果纠正开关。开关开启后，身份证号、出生日期、性别，三个字段会进行矫正补齐，统一结果输出；若关闭此开关，以上三个字段不会进行矫正补齐，保持原始识别结果输出，若原图出现篡改情况，这三个字段的识别结果可能会不统一。</p>
        :type EnableRecognitionRectify: bool
        :param _EnableReflectDetail: <p>默认值为false。</p><p>此开关需要在反光检测开关开启下才会生效（即此开关生效的前提是config入参里的&quot;ReflectWarn&quot;:true），若EnableReflectDetail设置为true，则会返回反光点覆盖区域详情。反光点覆盖区域详情分为四部分：人像照片位置、国徽位置、识别字段位置、其他位置。一个反光点允许覆盖多个区域，且一张图片可能存在多个反光点。</p>
        :type EnableReflectDetail: bool
        :param _CardWarnType: <p>Basic：使用基础卡证告警能力（含基础PS告警）； Advanced：开启进阶PS告警能力，PS告警效果更佳但需要更长耗时；建议测试对比后选用，默认值为 Basic</p>
        :type CardWarnType: str
        """
        self._EncryptedBody = None
        self._Encryption = None
        self._ImageBase64 = None
        self._ImageUrl = None
        self._CardSide = None
        self._Config = None
        self._EnableRecognitionRectify = None
        self._EnableReflectDetail = None
        self._CardWarnType = None

    @property
    def EncryptedBody(self):
        r"""<p>请求体被加密后的密文（Base64编码），本接口只支持加密传输</p>
        :rtype: str
        """
        return self._EncryptedBody

    @EncryptedBody.setter
    def EncryptedBody(self, EncryptedBody):
        self._EncryptedBody = EncryptedBody

    @property
    def Encryption(self):
        r"""<p>敏感数据加密信息。对传入信息有加密需求的用户可使用此参数，详情请点击左侧链接。</p>
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Encryption`
        """
        return self._Encryption

    @Encryption.setter
    def Encryption(self, Encryption):
        self._Encryption = Encryption

    @property
    def ImageBase64(self):
        r"""<p>图片的 Base64 值。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。</p>
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""<p>图片的 Url 地址。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。图片下载时间不超过 3 秒。建议图片存储于腾讯云，可保障更高的下载速度和稳定性。</p>
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def CardSide(self):
        r"""<p>FRONT：身份证有照片的一面（人像面），<br>BACK：身份证有国徽的一面（国徽面），<br>该参数如果不填，将为您自动判断身份证正反面。</p>
        :rtype: str
        """
        return self._CardSide

    @CardSide.setter
    def CardSide(self, CardSide):
        self._CardSide = CardSide

    @property
    def Config(self):
        r"""<p>以下可选字段均为bool 类型，默认false：<br>CropIdCard，身份证照片裁剪（去掉证件外多余的边缘、自动矫正拍摄角度）<br>CropPortrait，人像照片裁剪（自动抠取身份证头像区域）<br>CopyWarn，复印件告警<br>BorderCheckWarn，边框不完整和框内遮挡告警<br>ReshootWarn，屏幕翻拍告警<br>DetectPsWarn，疑似存在PS痕迹告警（CardWarnType参数为 Advanced时同时开启电子身份证、水印告警）<br>TempIdWarn，临时身份证告警<br>InvalidDateWarn，身份证有效日期不合法告警<br>Quality，图片质量分数（评价图片的模糊程度）<br>MultiCardDetect，是否开启正反面同框识别（仅支持二代身份证正反页同框识别或临时身份证正反页同框识别）<br>ReflectWarn，是否开启反光检测<br>SDK 设置方式参考：Config = Json.stringify({&quot;CropIdCard&quot;:true,&quot;CropPortrait&quot;:true})<br>API 3.0 Explorer 设置方式参考：Config = {&quot;CropIdCard&quot;:true,&quot;CropPortrait&quot;:true}</p>
        :rtype: str
        """
        return self._Config

    @Config.setter
    def Config(self, Config):
        self._Config = Config

    @property
    def EnableRecognitionRectify(self):
        r"""<p>默认值为true，打开识别结果纠正开关。开关开启后，身份证号、出生日期、性别，三个字段会进行矫正补齐，统一结果输出；若关闭此开关，以上三个字段不会进行矫正补齐，保持原始识别结果输出，若原图出现篡改情况，这三个字段的识别结果可能会不统一。</p>
        :rtype: bool
        """
        return self._EnableRecognitionRectify

    @EnableRecognitionRectify.setter
    def EnableRecognitionRectify(self, EnableRecognitionRectify):
        self._EnableRecognitionRectify = EnableRecognitionRectify

    @property
    def EnableReflectDetail(self):
        r"""<p>默认值为false。</p><p>此开关需要在反光检测开关开启下才会生效（即此开关生效的前提是config入参里的&quot;ReflectWarn&quot;:true），若EnableReflectDetail设置为true，则会返回反光点覆盖区域详情。反光点覆盖区域详情分为四部分：人像照片位置、国徽位置、识别字段位置、其他位置。一个反光点允许覆盖多个区域，且一张图片可能存在多个反光点。</p>
        :rtype: bool
        """
        return self._EnableReflectDetail

    @EnableReflectDetail.setter
    def EnableReflectDetail(self, EnableReflectDetail):
        self._EnableReflectDetail = EnableReflectDetail

    @property
    def CardWarnType(self):
        r"""<p>Basic：使用基础卡证告警能力（含基础PS告警）； Advanced：开启进阶PS告警能力，PS告警效果更佳但需要更长耗时；建议测试对比后选用，默认值为 Basic</p>
        :rtype: str
        """
        return self._CardWarnType

    @CardWarnType.setter
    def CardWarnType(self, CardWarnType):
        self._CardWarnType = CardWarnType


    def _deserialize(self, params):
        self._EncryptedBody = params.get("EncryptedBody")
        if params.get("Encryption") is not None:
            self._Encryption = Encryption()
            self._Encryption._deserialize(params.get("Encryption"))
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._CardSide = params.get("CardSide")
        self._Config = params.get("Config")
        self._EnableRecognitionRectify = params.get("EnableRecognitionRectify")
        self._EnableReflectDetail = params.get("EnableReflectDetail")
        self._CardWarnType = params.get("CardWarnType")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class RecognizeEncryptedIDCardOCRResponse(AbstractModel):
    r"""RecognizeEncryptedIDCardOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Name: <p>姓名（人像面）</p>
        :type Name: str
        :param _Sex: <p>性别（人像面）</p>
        :type Sex: str
        :param _Nation: <p>民族（人像面）</p>
        :type Nation: str
        :param _Birth: <p>出生日期（人像面）</p>
        :type Birth: str
        :param _Address: <p>地址（人像面）</p>
        :type Address: str
        :param _IdNum: <p>身份证号（人像面）</p>
        :type IdNum: str
        :param _Authority: <p>发证机关（国徽面）</p>
        :type Authority: str
        :param _ValidDate: <p>证件有效期（国徽面）</p>
        :type ValidDate: str
        :param _AdvancedInfo: <p>扩展信息，不请求则不返回，具体输入参考示例3和示例4。<br>IdCard，裁剪后身份证照片的base64编码，请求 Config.CropIdCard 时返回；<br>Portrait，身份证头像照片的base64编码，请求 Config.CropPortrait 时返回；<br>Quality，图片质量分数，请求 Config.Quality 时返回（取值范围：0 ~ 100，分数越低越模糊，建议阈值≥50）;<br>BorderCodeValue，身份证边框不完整告警阈值分数，请求 Config.BorderCheckWarn时返回（取值范围：0 ~ 100，分数越低边框遮挡可能性越低，建议阈值≤50）;<br>WarnInfos，告警信息，Code 告警码列表和释义：<br>-9100 身份证有效日期不合法告警，<br>-9101 身份证边框不完整告警，<br>-9102 身份证复印件告警（黑白及彩色复印件）,<br>-9108 身份证复印件告警（仅黑白复印件），<br>-9103 身份证翻拍告警，<br>-9105 身份证框内遮挡告警，<br>-9104 临时身份证告警，<br>-9106 身份证疑似存在PS痕迹告警，<br>-9107 身份证反光告警，<br>-9110 电子身份证告警，<br>-9111 水印告警（仅CardWarnType参数为Advanced时），</p>
        :type AdvancedInfo: str
        :param _ReflectDetailInfos: <p>反光点覆盖区域详情结果，具体内容请点击左侧链接</p>
        :type ReflectDetailInfos: list of ReflectDetailInfo
        :param _EncryptedBody: <p>加密后的数据（Base64编码）</p>
        :type EncryptedBody: str
        :param _Encryption: <p>敏感数据加密信息</p>
        :type Encryption: :class:`tencentcloud.ocr.v20181119.models.Encryption`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Name = None
        self._Sex = None
        self._Nation = None
        self._Birth = None
        self._Address = None
        self._IdNum = None
        self._Authority = None
        self._ValidDate = None
        self._AdvancedInfo = None
        self._ReflectDetailInfos = None
        self._EncryptedBody = None
        self._Encryption = None
        self._RequestId = None

    @property
    def Name(self):
        r"""<p>姓名（人像面）</p>
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Sex(self):
        r"""<p>性别（人像面）</p>
        :rtype: str
        """
        return self._Sex

    @Sex.setter
    def Sex(self, Sex):
        self._Sex = Sex

    @property
    def Nation(self):
        r"""<p>民族（人像面）</p>
        :rtype: str
        """
        return self._Nation

    @Nation.setter
    def Nation(self, Nation):
        self._Nation = Nation

    @property
    def Birth(self):
        r"""<p>出生日期（人像面）</p>
        :rtype: str
        """
        return self._Birth

    @Birth.setter
    def Birth(self, Birth):
        self._Birth = Birth

    @property
    def Address(self):
        r"""<p>地址（人像面）</p>
        :rtype: str
        """
        return self._Address

    @Address.setter
    def Address(self, Address):
        self._Address = Address

    @property
    def IdNum(self):
        r"""<p>身份证号（人像面）</p>
        :rtype: str
        """
        return self._IdNum

    @IdNum.setter
    def IdNum(self, IdNum):
        self._IdNum = IdNum

    @property
    def Authority(self):
        r"""<p>发证机关（国徽面）</p>
        :rtype: str
        """
        return self._Authority

    @Authority.setter
    def Authority(self, Authority):
        self._Authority = Authority

    @property
    def ValidDate(self):
        r"""<p>证件有效期（国徽面）</p>
        :rtype: str
        """
        return self._ValidDate

    @ValidDate.setter
    def ValidDate(self, ValidDate):
        self._ValidDate = ValidDate

    @property
    def AdvancedInfo(self):
        r"""<p>扩展信息，不请求则不返回，具体输入参考示例3和示例4。<br>IdCard，裁剪后身份证照片的base64编码，请求 Config.CropIdCard 时返回；<br>Portrait，身份证头像照片的base64编码，请求 Config.CropPortrait 时返回；<br>Quality，图片质量分数，请求 Config.Quality 时返回（取值范围：0 ~ 100，分数越低越模糊，建议阈值≥50）;<br>BorderCodeValue，身份证边框不完整告警阈值分数，请求 Config.BorderCheckWarn时返回（取值范围：0 ~ 100，分数越低边框遮挡可能性越低，建议阈值≤50）;<br>WarnInfos，告警信息，Code 告警码列表和释义：<br>-9100 身份证有效日期不合法告警，<br>-9101 身份证边框不完整告警，<br>-9102 身份证复印件告警（黑白及彩色复印件）,<br>-9108 身份证复印件告警（仅黑白复印件），<br>-9103 身份证翻拍告警，<br>-9105 身份证框内遮挡告警，<br>-9104 临时身份证告警，<br>-9106 身份证疑似存在PS痕迹告警，<br>-9107 身份证反光告警，<br>-9110 电子身份证告警，<br>-9111 水印告警（仅CardWarnType参数为Advanced时），</p>
        :rtype: str
        """
        return self._AdvancedInfo

    @AdvancedInfo.setter
    def AdvancedInfo(self, AdvancedInfo):
        self._AdvancedInfo = AdvancedInfo

    @property
    def ReflectDetailInfos(self):
        r"""<p>反光点覆盖区域详情结果，具体内容请点击左侧链接</p>
        :rtype: list of ReflectDetailInfo
        """
        return self._ReflectDetailInfos

    @ReflectDetailInfos.setter
    def ReflectDetailInfos(self, ReflectDetailInfos):
        self._ReflectDetailInfos = ReflectDetailInfos

    @property
    def EncryptedBody(self):
        r"""<p>加密后的数据（Base64编码）</p>
        :rtype: str
        """
        return self._EncryptedBody

    @EncryptedBody.setter
    def EncryptedBody(self, EncryptedBody):
        self._EncryptedBody = EncryptedBody

    @property
    def Encryption(self):
        r"""<p>敏感数据加密信息</p>
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Encryption`
        """
        return self._Encryption

    @Encryption.setter
    def Encryption(self, Encryption):
        self._Encryption = Encryption

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._Name = params.get("Name")
        self._Sex = params.get("Sex")
        self._Nation = params.get("Nation")
        self._Birth = params.get("Birth")
        self._Address = params.get("Address")
        self._IdNum = params.get("IdNum")
        self._Authority = params.get("Authority")
        self._ValidDate = params.get("ValidDate")
        self._AdvancedInfo = params.get("AdvancedInfo")
        if params.get("ReflectDetailInfos") is not None:
            self._ReflectDetailInfos = []
            for item in params.get("ReflectDetailInfos"):
                obj = ReflectDetailInfo()
                obj._deserialize(item)
                self._ReflectDetailInfos.append(obj)
        self._EncryptedBody = params.get("EncryptedBody")
        if params.get("Encryption") is not None:
            self._Encryption = Encryption()
            self._Encryption._deserialize(params.get("Encryption"))
        self._RequestId = params.get("RequestId")


class RecognizeFormulaOCRRequest(AbstractModel):
    r"""RecognizeFormulaOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageUrl: 图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。支持的图片像素：需介于20-10000px之间。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        :param _ImageBase64: 图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。支持的图片像素：需介于20-10000px之间。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _IsPdf: 是否开启PDF识别，默认值为false，开启后可同时支持图片和PDF的识别。
        :type IsPdf: bool
        :param _PdfPageNumber: 需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :type PdfPageNumber: int
        """
        self._ImageUrl = None
        self._ImageBase64 = None
        self._IsPdf = None
        self._PdfPageNumber = None

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。支持的图片像素：需介于20-10000px之间。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。支持的图片像素：需介于20-10000px之间。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def IsPdf(self):
        r"""是否开启PDF识别，默认值为false，开启后可同时支持图片和PDF的识别。
        :rtype: bool
        """
        return self._IsPdf

    @IsPdf.setter
    def IsPdf(self, IsPdf):
        self._IsPdf = IsPdf

    @property
    def PdfPageNumber(self):
        r"""需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :rtype: int
        """
        return self._PdfPageNumber

    @PdfPageNumber.setter
    def PdfPageNumber(self, PdfPageNumber):
        self._PdfPageNumber = PdfPageNumber


    def _deserialize(self, params):
        self._ImageUrl = params.get("ImageUrl")
        self._ImageBase64 = params.get("ImageBase64")
        self._IsPdf = params.get("IsPdf")
        self._PdfPageNumber = params.get("PdfPageNumber")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class RecognizeFormulaOCRResponse(AbstractModel):
    r"""RecognizeFormulaOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Angle: 图片旋转角度(角度制)，文本的水平方向为 0；顺时针为正，逆时针为负
        :type Angle: float
        :param _FormulaInfoList: 检测到的文本信息
        :type FormulaInfoList: list of TextFormulaInfo
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Angle = None
        self._FormulaInfoList = None
        self._RequestId = None

    @property
    def Angle(self):
        r"""图片旋转角度(角度制)，文本的水平方向为 0；顺时针为正，逆时针为负
        :rtype: float
        """
        return self._Angle

    @Angle.setter
    def Angle(self, Angle):
        self._Angle = Angle

    @property
    def FormulaInfoList(self):
        r"""检测到的文本信息
        :rtype: list of TextFormulaInfo
        """
        return self._FormulaInfoList

    @FormulaInfoList.setter
    def FormulaInfoList(self, FormulaInfoList):
        self._FormulaInfoList = FormulaInfoList

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._Angle = params.get("Angle")
        if params.get("FormulaInfoList") is not None:
            self._FormulaInfoList = []
            for item in params.get("FormulaInfoList"):
                obj = TextFormulaInfo()
                obj._deserialize(item)
                self._FormulaInfoList.append(obj)
        self._RequestId = params.get("RequestId")


class RecognizeGeneralCardWarnRequest(AbstractModel):
    r"""RecognizeGeneralCardWarn请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageUrl: 图片链接
        :type ImageUrl: str
        :param _ImageBase64: 图片base64
        :type ImageBase64: str
        :param _CardType: 卡证类型参数，包含以下范围：  
General：通用卡证
IDCard：身份证 
Passport：护照 
BankCard：银行卡
VehicleLicense：行驶证
DriverLicense：驾驶证
BizLicense：营业执照 
HmtResidentPermit：港澳台居住证
ForeignPermanentResident：外国人永居证
MainlandPermit：港澳台来往内地通行证
SocialSecurityCard：社保卡
        :type CardType: str
        :param _IsPdf: 是否开启PDF识别，默认值为false，开启后可同时支持图片和PDF的识别。
        :type IsPdf: bool
        :param _PdfPageNumber: 需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :type PdfPageNumber: int
        """
        self._ImageUrl = None
        self._ImageBase64 = None
        self._CardType = None
        self._IsPdf = None
        self._PdfPageNumber = None

    @property
    def ImageUrl(self):
        r"""图片链接
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def ImageBase64(self):
        r"""图片base64
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def CardType(self):
        r"""卡证类型参数，包含以下范围：  
General：通用卡证
IDCard：身份证 
Passport：护照 
BankCard：银行卡
VehicleLicense：行驶证
DriverLicense：驾驶证
BizLicense：营业执照 
HmtResidentPermit：港澳台居住证
ForeignPermanentResident：外国人永居证
MainlandPermit：港澳台来往内地通行证
SocialSecurityCard：社保卡
        :rtype: str
        """
        return self._CardType

    @CardType.setter
    def CardType(self, CardType):
        self._CardType = CardType

    @property
    def IsPdf(self):
        r"""是否开启PDF识别，默认值为false，开启后可同时支持图片和PDF的识别。
        :rtype: bool
        """
        return self._IsPdf

    @IsPdf.setter
    def IsPdf(self, IsPdf):
        self._IsPdf = IsPdf

    @property
    def PdfPageNumber(self):
        r"""需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :rtype: int
        """
        return self._PdfPageNumber

    @PdfPageNumber.setter
    def PdfPageNumber(self, PdfPageNumber):
        self._PdfPageNumber = PdfPageNumber


    def _deserialize(self, params):
        self._ImageUrl = params.get("ImageUrl")
        self._ImageBase64 = params.get("ImageBase64")
        self._CardType = params.get("CardType")
        self._IsPdf = params.get("IsPdf")
        self._PdfPageNumber = params.get("PdfPageNumber")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class RecognizeGeneralCardWarnResponse(AbstractModel):
    r"""RecognizeGeneralCardWarn返回参数结构体

    """

    def __init__(self):
        r"""
        :param _CardType: 卡证类型参数，包含以下范围： 
General：通用卡证
IDCard：身份证 
Passport：护照 
BankCard：银行卡
VehicleLicense：行驶证
DriverLicense：驾驶证
BizLicense：营业执照 
HmtResidentPermit：港澳台居住证
ForeignPermanentResident：外国人永居证
MainlandPermit：港澳台来往内地通行证
SocialSecurityCard：社保卡
        :type CardType: str
        :param _Blur: 模糊信息
        :type Blur: :class:`tencentcloud.ocr.v20181119.models.GeneralCardWarnInfo`
        :param _BorderIncomplete: 边框不完整信息
        :type BorderIncomplete: :class:`tencentcloud.ocr.v20181119.models.GeneralCardWarnInfo`
        :param _Copy: 复印件信息
        :type Copy: :class:`tencentcloud.ocr.v20181119.models.GeneralCardWarnInfo`
        :param _Ps: ps篡改信息
        :type Ps: :class:`tencentcloud.ocr.v20181119.models.GeneralCardWarnInfo`
        :param _Reflection: 反光信息
        :type Reflection: :class:`tencentcloud.ocr.v20181119.models.GeneralCardWarnInfo`
        :param _Reprint: 翻拍件信息
        :type Reprint: :class:`tencentcloud.ocr.v20181119.models.GeneralCardWarnInfo`
        :param _Screenshot: 是否截图
        :type Screenshot: :class:`tencentcloud.ocr.v20181119.models.GeneralCardWarnInfo`
        :param _Cover: 是否遮挡
        :type Cover: :class:`tencentcloud.ocr.v20181119.models.GeneralCardWarnInfo`
        :param _Overlap: 是否重叠
        :type Overlap: :class:`tencentcloud.ocr.v20181119.models.GeneralCardWarnInfo`
        :param _Watermark: 是否水印
        :type Watermark: :class:`tencentcloud.ocr.v20181119.models.GeneralCardWarnInfo`
        :param _Electron: 是否电子证照（目前仅支持电子身份证、电子营业执照识别
        :type Electron: :class:`tencentcloud.ocr.v20181119.models.GeneralCardWarnInfo`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._CardType = None
        self._Blur = None
        self._BorderIncomplete = None
        self._Copy = None
        self._Ps = None
        self._Reflection = None
        self._Reprint = None
        self._Screenshot = None
        self._Cover = None
        self._Overlap = None
        self._Watermark = None
        self._Electron = None
        self._RequestId = None

    @property
    def CardType(self):
        r"""卡证类型参数，包含以下范围： 
General：通用卡证
IDCard：身份证 
Passport：护照 
BankCard：银行卡
VehicleLicense：行驶证
DriverLicense：驾驶证
BizLicense：营业执照 
HmtResidentPermit：港澳台居住证
ForeignPermanentResident：外国人永居证
MainlandPermit：港澳台来往内地通行证
SocialSecurityCard：社保卡
        :rtype: str
        """
        return self._CardType

    @CardType.setter
    def CardType(self, CardType):
        self._CardType = CardType

    @property
    def Blur(self):
        r"""模糊信息
        :rtype: :class:`tencentcloud.ocr.v20181119.models.GeneralCardWarnInfo`
        """
        return self._Blur

    @Blur.setter
    def Blur(self, Blur):
        self._Blur = Blur

    @property
    def BorderIncomplete(self):
        r"""边框不完整信息
        :rtype: :class:`tencentcloud.ocr.v20181119.models.GeneralCardWarnInfo`
        """
        return self._BorderIncomplete

    @BorderIncomplete.setter
    def BorderIncomplete(self, BorderIncomplete):
        self._BorderIncomplete = BorderIncomplete

    @property
    def Copy(self):
        r"""复印件信息
        :rtype: :class:`tencentcloud.ocr.v20181119.models.GeneralCardWarnInfo`
        """
        return self._Copy

    @Copy.setter
    def Copy(self, Copy):
        self._Copy = Copy

    @property
    def Ps(self):
        r"""ps篡改信息
        :rtype: :class:`tencentcloud.ocr.v20181119.models.GeneralCardWarnInfo`
        """
        return self._Ps

    @Ps.setter
    def Ps(self, Ps):
        self._Ps = Ps

    @property
    def Reflection(self):
        r"""反光信息
        :rtype: :class:`tencentcloud.ocr.v20181119.models.GeneralCardWarnInfo`
        """
        return self._Reflection

    @Reflection.setter
    def Reflection(self, Reflection):
        self._Reflection = Reflection

    @property
    def Reprint(self):
        r"""翻拍件信息
        :rtype: :class:`tencentcloud.ocr.v20181119.models.GeneralCardWarnInfo`
        """
        return self._Reprint

    @Reprint.setter
    def Reprint(self, Reprint):
        self._Reprint = Reprint

    @property
    def Screenshot(self):
        r"""是否截图
        :rtype: :class:`tencentcloud.ocr.v20181119.models.GeneralCardWarnInfo`
        """
        return self._Screenshot

    @Screenshot.setter
    def Screenshot(self, Screenshot):
        self._Screenshot = Screenshot

    @property
    def Cover(self):
        r"""是否遮挡
        :rtype: :class:`tencentcloud.ocr.v20181119.models.GeneralCardWarnInfo`
        """
        return self._Cover

    @Cover.setter
    def Cover(self, Cover):
        self._Cover = Cover

    @property
    def Overlap(self):
        r"""是否重叠
        :rtype: :class:`tencentcloud.ocr.v20181119.models.GeneralCardWarnInfo`
        """
        return self._Overlap

    @Overlap.setter
    def Overlap(self, Overlap):
        self._Overlap = Overlap

    @property
    def Watermark(self):
        r"""是否水印
        :rtype: :class:`tencentcloud.ocr.v20181119.models.GeneralCardWarnInfo`
        """
        return self._Watermark

    @Watermark.setter
    def Watermark(self, Watermark):
        self._Watermark = Watermark

    @property
    def Electron(self):
        r"""是否电子证照（目前仅支持电子身份证、电子营业执照识别
        :rtype: :class:`tencentcloud.ocr.v20181119.models.GeneralCardWarnInfo`
        """
        return self._Electron

    @Electron.setter
    def Electron(self, Electron):
        self._Electron = Electron

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._CardType = params.get("CardType")
        if params.get("Blur") is not None:
            self._Blur = GeneralCardWarnInfo()
            self._Blur._deserialize(params.get("Blur"))
        if params.get("BorderIncomplete") is not None:
            self._BorderIncomplete = GeneralCardWarnInfo()
            self._BorderIncomplete._deserialize(params.get("BorderIncomplete"))
        if params.get("Copy") is not None:
            self._Copy = GeneralCardWarnInfo()
            self._Copy._deserialize(params.get("Copy"))
        if params.get("Ps") is not None:
            self._Ps = GeneralCardWarnInfo()
            self._Ps._deserialize(params.get("Ps"))
        if params.get("Reflection") is not None:
            self._Reflection = GeneralCardWarnInfo()
            self._Reflection._deserialize(params.get("Reflection"))
        if params.get("Reprint") is not None:
            self._Reprint = GeneralCardWarnInfo()
            self._Reprint._deserialize(params.get("Reprint"))
        if params.get("Screenshot") is not None:
            self._Screenshot = GeneralCardWarnInfo()
            self._Screenshot._deserialize(params.get("Screenshot"))
        if params.get("Cover") is not None:
            self._Cover = GeneralCardWarnInfo()
            self._Cover._deserialize(params.get("Cover"))
        if params.get("Overlap") is not None:
            self._Overlap = GeneralCardWarnInfo()
            self._Overlap._deserialize(params.get("Overlap"))
        if params.get("Watermark") is not None:
            self._Watermark = GeneralCardWarnInfo()
            self._Watermark._deserialize(params.get("Watermark"))
        if params.get("Electron") is not None:
            self._Electron = GeneralCardWarnInfo()
            self._Electron._deserialize(params.get("Electron"))
        self._RequestId = params.get("RequestId")


class RecognizeGeneralInvoiceRequest(AbstractModel):
    r"""RecognizeGeneralInvoice请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG、PDF，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。支持的图片像素：单边介于20-10000px之间。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG、PDF，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。支持的图片像素：单边介于20-10000px之间。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        :param _Types: 需要识别的票据类型列表，为空或不填表示识别全部类型。当传入单个类型时，图片均采用该票类型进行处理。
暂不支持多个参数进行局部控制。
0：出租车发票
1：定额发票
2：火车票
3：增值税发票
5：机票行程单
8：通用机打发票
9：汽车票
10：轮船票
11：增值税发票（卷票 ）
12：购车发票
13：过路过桥费发票
15：非税发票
16：全电发票
17：医疗发票
18：完税凭证
19：海关缴款书
20：银行回单
21：网约车行程单
22：海关进/出口货物报关单
23：海外发票
24：购物小票
25：销货清单
-1：其他发票
        :type Types: list of int
        :param _EnableOther: 是否开启其他票识别，默认值为true，开启后可支持其他发票的智能识别。	
        :type EnableOther: bool
        :param _EnablePdf: 是否开启PDF识别，默认值为true，开启后可同时支持图片和PDF的识别。
        :type EnablePdf: bool
        :param _PdfPageNumber: 需要识别的PDF页面的对应页码，传入时仅支持PDF单页识别，当上传文件为PDF且EnablePdf参数值为true时有效，默认值为1。
        :type PdfPageNumber: int
        :param _EnableMultiplePage: 是否开启PDF多页识别，默认值为false，开启后可同时支持多页PDF的识别返回，仅支持返回文件前30页。开启后EnablePdf和PdfPageNumber入参不进行控制。
        :type EnableMultiplePage: bool
        :param _EnableCutImage: 是否返回切割图片base64，默认值为false。
        :type EnableCutImage: bool
        :param _EnableItemPolygon: 是否打开字段坐标返回。默认为false。
        :type EnableItemPolygon: bool
        :param _EnableQRCode: 是否开启二维码识别。
        :type EnableQRCode: bool
        :param _EnableSeal: 是否开启印章识别，默认为false
        :type EnableSeal: bool
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._Types = None
        self._EnableOther = None
        self._EnablePdf = None
        self._PdfPageNumber = None
        self._EnableMultiplePage = None
        self._EnableCutImage = None
        self._EnableItemPolygon = None
        self._EnableQRCode = None
        self._EnableSeal = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG、PDF，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。支持的图片像素：单边介于20-10000px之间。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG、PDF，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。支持的图片像素：单边介于20-10000px之间。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def Types(self):
        r"""需要识别的票据类型列表，为空或不填表示识别全部类型。当传入单个类型时，图片均采用该票类型进行处理。
暂不支持多个参数进行局部控制。
0：出租车发票
1：定额发票
2：火车票
3：增值税发票
5：机票行程单
8：通用机打发票
9：汽车票
10：轮船票
11：增值税发票（卷票 ）
12：购车发票
13：过路过桥费发票
15：非税发票
16：全电发票
17：医疗发票
18：完税凭证
19：海关缴款书
20：银行回单
21：网约车行程单
22：海关进/出口货物报关单
23：海外发票
24：购物小票
25：销货清单
-1：其他发票
        :rtype: list of int
        """
        return self._Types

    @Types.setter
    def Types(self, Types):
        self._Types = Types

    @property
    def EnableOther(self):
        r"""是否开启其他票识别，默认值为true，开启后可支持其他发票的智能识别。	
        :rtype: bool
        """
        return self._EnableOther

    @EnableOther.setter
    def EnableOther(self, EnableOther):
        self._EnableOther = EnableOther

    @property
    def EnablePdf(self):
        r"""是否开启PDF识别，默认值为true，开启后可同时支持图片和PDF的识别。
        :rtype: bool
        """
        return self._EnablePdf

    @EnablePdf.setter
    def EnablePdf(self, EnablePdf):
        self._EnablePdf = EnablePdf

    @property
    def PdfPageNumber(self):
        r"""需要识别的PDF页面的对应页码，传入时仅支持PDF单页识别，当上传文件为PDF且EnablePdf参数值为true时有效，默认值为1。
        :rtype: int
        """
        return self._PdfPageNumber

    @PdfPageNumber.setter
    def PdfPageNumber(self, PdfPageNumber):
        self._PdfPageNumber = PdfPageNumber

    @property
    def EnableMultiplePage(self):
        r"""是否开启PDF多页识别，默认值为false，开启后可同时支持多页PDF的识别返回，仅支持返回文件前30页。开启后EnablePdf和PdfPageNumber入参不进行控制。
        :rtype: bool
        """
        return self._EnableMultiplePage

    @EnableMultiplePage.setter
    def EnableMultiplePage(self, EnableMultiplePage):
        self._EnableMultiplePage = EnableMultiplePage

    @property
    def EnableCutImage(self):
        r"""是否返回切割图片base64，默认值为false。
        :rtype: bool
        """
        return self._EnableCutImage

    @EnableCutImage.setter
    def EnableCutImage(self, EnableCutImage):
        self._EnableCutImage = EnableCutImage

    @property
    def EnableItemPolygon(self):
        r"""是否打开字段坐标返回。默认为false。
        :rtype: bool
        """
        return self._EnableItemPolygon

    @EnableItemPolygon.setter
    def EnableItemPolygon(self, EnableItemPolygon):
        self._EnableItemPolygon = EnableItemPolygon

    @property
    def EnableQRCode(self):
        r"""是否开启二维码识别。
        :rtype: bool
        """
        return self._EnableQRCode

    @EnableQRCode.setter
    def EnableQRCode(self, EnableQRCode):
        self._EnableQRCode = EnableQRCode

    @property
    def EnableSeal(self):
        r"""是否开启印章识别，默认为false
        :rtype: bool
        """
        return self._EnableSeal

    @EnableSeal.setter
    def EnableSeal(self, EnableSeal):
        self._EnableSeal = EnableSeal


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._Types = params.get("Types")
        self._EnableOther = params.get("EnableOther")
        self._EnablePdf = params.get("EnablePdf")
        self._PdfPageNumber = params.get("PdfPageNumber")
        self._EnableMultiplePage = params.get("EnableMultiplePage")
        self._EnableCutImage = params.get("EnableCutImage")
        self._EnableItemPolygon = params.get("EnableItemPolygon")
        self._EnableQRCode = params.get("EnableQRCode")
        self._EnableSeal = params.get("EnableSeal")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class RecognizeGeneralInvoiceResponse(AbstractModel):
    r"""RecognizeGeneralInvoice返回参数结构体

    """

    def __init__(self):
        r"""
        :param _MixedInvoiceItems: 混贴票据识别结果，具体内容请点击左侧链接。
        :type MixedInvoiceItems: list of InvoiceItem
        :param _TotalPDFCount: PDF文件总页码
        :type TotalPDFCount: int
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._MixedInvoiceItems = None
        self._TotalPDFCount = None
        self._RequestId = None

    @property
    def MixedInvoiceItems(self):
        r"""混贴票据识别结果，具体内容请点击左侧链接。
        :rtype: list of InvoiceItem
        """
        return self._MixedInvoiceItems

    @MixedInvoiceItems.setter
    def MixedInvoiceItems(self, MixedInvoiceItems):
        self._MixedInvoiceItems = MixedInvoiceItems

    @property
    def TotalPDFCount(self):
        r"""PDF文件总页码
        :rtype: int
        """
        return self._TotalPDFCount

    @TotalPDFCount.setter
    def TotalPDFCount(self, TotalPDFCount):
        self._TotalPDFCount = TotalPDFCount

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("MixedInvoiceItems") is not None:
            self._MixedInvoiceItems = []
            for item in params.get("MixedInvoiceItems"):
                obj = InvoiceItem()
                obj._deserialize(item)
                self._MixedInvoiceItems.append(obj)
        self._TotalPDFCount = params.get("TotalPDFCount")
        self._RequestId = params.get("RequestId")


class RecognizeMedicalInvoiceOCRRequest(AbstractModel):
    r"""RecognizeMedicalInvoiceOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的Base64 值。支持的文件格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载文件经Base64编码后不超过 10M。文件下载时间不超过 3 秒。输入参数 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的Url 地址。支持的文件格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载文件经 Base64 编码后不超过 10M。文件下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        :param _ReturnVertex: 是否需要返回识别出的文本行在原图上的四点坐标，默认不返回
        :type ReturnVertex: bool
        :param _ReturnCoord: 是否需要返回识别出的文本行在旋转纠正之后的图像中的四点坐标，默认不返回
        :type ReturnCoord: bool
        :param _IsPdf: 是否开启PDF识别，默认值为true，开启后可同时支持图片和PDF的识别。
        :type IsPdf: bool
        :param _PdfPageNumber: 需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :type PdfPageNumber: int
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._ReturnVertex = None
        self._ReturnCoord = None
        self._IsPdf = None
        self._PdfPageNumber = None

    @property
    def ImageBase64(self):
        r"""图片的Base64 值。支持的文件格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载文件经Base64编码后不超过 10M。文件下载时间不超过 3 秒。输入参数 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的Url 地址。支持的文件格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载文件经 Base64 编码后不超过 10M。文件下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def ReturnVertex(self):
        r"""是否需要返回识别出的文本行在原图上的四点坐标，默认不返回
        :rtype: bool
        """
        return self._ReturnVertex

    @ReturnVertex.setter
    def ReturnVertex(self, ReturnVertex):
        self._ReturnVertex = ReturnVertex

    @property
    def ReturnCoord(self):
        r"""是否需要返回识别出的文本行在旋转纠正之后的图像中的四点坐标，默认不返回
        :rtype: bool
        """
        return self._ReturnCoord

    @ReturnCoord.setter
    def ReturnCoord(self, ReturnCoord):
        self._ReturnCoord = ReturnCoord

    @property
    def IsPdf(self):
        r"""是否开启PDF识别，默认值为true，开启后可同时支持图片和PDF的识别。
        :rtype: bool
        """
        return self._IsPdf

    @IsPdf.setter
    def IsPdf(self, IsPdf):
        self._IsPdf = IsPdf

    @property
    def PdfPageNumber(self):
        r"""需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :rtype: int
        """
        return self._PdfPageNumber

    @PdfPageNumber.setter
    def PdfPageNumber(self, PdfPageNumber):
        self._PdfPageNumber = PdfPageNumber


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._ReturnVertex = params.get("ReturnVertex")
        self._ReturnCoord = params.get("ReturnCoord")
        self._IsPdf = params.get("IsPdf")
        self._PdfPageNumber = params.get("PdfPageNumber")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class RecognizeMedicalInvoiceOCRResponse(AbstractModel):
    r"""RecognizeMedicalInvoiceOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _MedicalInvoiceInfos: 识别出的字段信息
        :type MedicalInvoiceInfos: list of MedicalInvoiceInfo
        :param _Angle: 图片旋转角度（角度制），文本的水平方向为0°，顺时针为正，逆时针为负。
        :type Angle: float
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._MedicalInvoiceInfos = None
        self._Angle = None
        self._RequestId = None

    @property
    def MedicalInvoiceInfos(self):
        r"""识别出的字段信息
        :rtype: list of MedicalInvoiceInfo
        """
        return self._MedicalInvoiceInfos

    @MedicalInvoiceInfos.setter
    def MedicalInvoiceInfos(self, MedicalInvoiceInfos):
        self._MedicalInvoiceInfos = MedicalInvoiceInfos

    @property
    def Angle(self):
        r"""图片旋转角度（角度制），文本的水平方向为0°，顺时针为正，逆时针为负。
        :rtype: float
        """
        return self._Angle

    @Angle.setter
    def Angle(self, Angle):
        self._Angle = Angle

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("MedicalInvoiceInfos") is not None:
            self._MedicalInvoiceInfos = []
            for item in params.get("MedicalInvoiceInfos"):
                obj = MedicalInvoiceInfo()
                obj._deserialize(item)
                self._MedicalInvoiceInfos.append(obj)
        self._Angle = params.get("Angle")
        self._RequestId = params.get("RequestId")


class RecognizeStoreNameRequest(AbstractModel):
    r"""RecognizeStoreName请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。支持的图片像素：需介于20-10000px之间。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。支持的图片像素：需介于20-10000px之间。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        """
        self._ImageBase64 = None
        self._ImageUrl = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。支持的图片像素：需介于20-10000px之间。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。支持的图片像素：需介于20-10000px之间。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class RecognizeStoreNameResponse(AbstractModel):
    r"""RecognizeStoreName返回参数结构体

    """

    def __init__(self):
        r"""
        :param _StoreInfo: 门头照名称
        :type StoreInfo: list of StoreInfo
        :param _Angle: 图片旋转角度（角度制），文本的水平方向为0°，顺时针为正，逆时针为负
        :type Angle: float
        :param _StoreLabel: 门头照标签
        :type StoreLabel: list of str
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._StoreInfo = None
        self._Angle = None
        self._StoreLabel = None
        self._RequestId = None

    @property
    def StoreInfo(self):
        r"""门头照名称
        :rtype: list of StoreInfo
        """
        return self._StoreInfo

    @StoreInfo.setter
    def StoreInfo(self, StoreInfo):
        self._StoreInfo = StoreInfo

    @property
    def Angle(self):
        r"""图片旋转角度（角度制），文本的水平方向为0°，顺时针为正，逆时针为负
        :rtype: float
        """
        return self._Angle

    @Angle.setter
    def Angle(self, Angle):
        self._Angle = Angle

    @property
    def StoreLabel(self):
        r"""门头照标签
        :rtype: list of str
        """
        return self._StoreLabel

    @StoreLabel.setter
    def StoreLabel(self, StoreLabel):
        self._StoreLabel = StoreLabel

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("StoreInfo") is not None:
            self._StoreInfo = []
            for item in params.get("StoreInfo"):
                obj = StoreInfo()
                obj._deserialize(item)
                self._StoreInfo.append(obj)
        self._Angle = params.get("Angle")
        self._StoreLabel = params.get("StoreLabel")
        self._RequestId = params.get("RequestId")


class RecognizeTableAccurateOCRRequest(AbstractModel):
    r"""RecognizeTableAccurateOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: <p>图片/PDF的 Base64 值。要求图片/PDF经Base64编码后不超过 10M，分辨率建议600*800以上，且长宽比小于3（短边分辨率大于600, 长边分辨率小于等于短边分辨率的三倍）。支持PNG、JPG、JPEG、BMP、PDF格式。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。</p>
        :type ImageBase64: str
        :param _ImageUrl: <p>图片/PDF的 Url 地址。要求图片/PDF经Base64编码后不超过 10M，分辨率建议600*800以上，且长宽比小于3（短边分辨率大于600, 长边分辨率小于等于短边分辨率的三倍）。支持PNG、JPG、JPEG、BMP、PDF格式。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。</p>
        :type ImageUrl: str
        :param _PdfPageNumber: <p>需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF有效，默认值为1。</p>
        :type PdfPageNumber: int
        :param _UseNewModel: <p>是否使用新模型</p><p>枚举值：</p><ul><li>false： 使用当前默认模型，耗时短且支持坐标返回</li><li>true： 使用新模型，复杂表格识别效果更好，耗时稍长</li></ul><p>默认值：false</p>
        :type UseNewModel: bool
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._PdfPageNumber = None
        self._UseNewModel = None

    @property
    def ImageBase64(self):
        r"""<p>图片/PDF的 Base64 值。要求图片/PDF经Base64编码后不超过 10M，分辨率建议600*800以上，且长宽比小于3（短边分辨率大于600, 长边分辨率小于等于短边分辨率的三倍）。支持PNG、JPG、JPEG、BMP、PDF格式。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。</p>
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""<p>图片/PDF的 Url 地址。要求图片/PDF经Base64编码后不超过 10M，分辨率建议600*800以上，且长宽比小于3（短边分辨率大于600, 长边分辨率小于等于短边分辨率的三倍）。支持PNG、JPG、JPEG、BMP、PDF格式。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。</p>
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def PdfPageNumber(self):
        r"""<p>需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF有效，默认值为1。</p>
        :rtype: int
        """
        return self._PdfPageNumber

    @PdfPageNumber.setter
    def PdfPageNumber(self, PdfPageNumber):
        self._PdfPageNumber = PdfPageNumber

    @property
    def UseNewModel(self):
        r"""<p>是否使用新模型</p><p>枚举值：</p><ul><li>false： 使用当前默认模型，耗时短且支持坐标返回</li><li>true： 使用新模型，复杂表格识别效果更好，耗时稍长</li></ul><p>默认值：false</p>
        :rtype: bool
        """
        return self._UseNewModel

    @UseNewModel.setter
    def UseNewModel(self, UseNewModel):
        self._UseNewModel = UseNewModel


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._PdfPageNumber = params.get("PdfPageNumber")
        self._UseNewModel = params.get("UseNewModel")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class RecognizeTableAccurateOCRResponse(AbstractModel):
    r"""RecognizeTableAccurateOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _TableDetections: <p>检测到的文本信息，具体内容请点击左侧链接。</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type TableDetections: list of TableInfo
        :param _Data: <p>Base64 编码后的 Excel 数据。</p>
        :type Data: str
        :param _PdfPageSize: <p>图片为PDF时，返回PDF的总页数，默认为0</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type PdfPageSize: int
        :param _Angle: <p>图片旋转角度（角度制），文本的水平方向为0°。</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type Angle: float
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._TableDetections = None
        self._Data = None
        self._PdfPageSize = None
        self._Angle = None
        self._RequestId = None

    @property
    def TableDetections(self):
        r"""<p>检测到的文本信息，具体内容请点击左侧链接。</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of TableInfo
        """
        return self._TableDetections

    @TableDetections.setter
    def TableDetections(self, TableDetections):
        self._TableDetections = TableDetections

    @property
    def Data(self):
        r"""<p>Base64 编码后的 Excel 数据。</p>
        :rtype: str
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def PdfPageSize(self):
        r"""<p>图片为PDF时，返回PDF的总页数，默认为0</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._PdfPageSize

    @PdfPageSize.setter
    def PdfPageSize(self, PdfPageSize):
        self._PdfPageSize = PdfPageSize

    @property
    def Angle(self):
        r"""<p>图片旋转角度（角度制），文本的水平方向为0°。</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: float
        """
        return self._Angle

    @Angle.setter
    def Angle(self, Angle):
        self._Angle = Angle

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("TableDetections") is not None:
            self._TableDetections = []
            for item in params.get("TableDetections"):
                obj = TableInfo()
                obj._deserialize(item)
                self._TableDetections.append(obj)
        self._Data = params.get("Data")
        self._PdfPageSize = params.get("PdfPageSize")
        self._Angle = params.get("Angle")
        self._RequestId = params.get("RequestId")


class RecognizeTableOCRRequest(AbstractModel):
    r"""RecognizeTableOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片/PDF的 Base64 值。
要求图片/PDF经Base64编码后不超过 7M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。
图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片/PDF的 Url 地址。
要求图片/PDF经Base64编码后不超过 7M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。
图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        :param _IsPdf: 是否开启PDF识别，默认值为false，开启后可同时支持图片和PDF的识别。
        :type IsPdf: bool
        :param _PdfPageNumber: 需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :type PdfPageNumber: int
        :param _TableLanguage: 语言，zh：中英文（默认）jap：日文
        :type TableLanguage: str
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._IsPdf = None
        self._PdfPageNumber = None
        self._TableLanguage = None

    @property
    def ImageBase64(self):
        r"""图片/PDF的 Base64 值。
要求图片/PDF经Base64编码后不超过 7M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。
图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片/PDF的 Url 地址。
要求图片/PDF经Base64编码后不超过 7M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。
图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def IsPdf(self):
        r"""是否开启PDF识别，默认值为false，开启后可同时支持图片和PDF的识别。
        :rtype: bool
        """
        return self._IsPdf

    @IsPdf.setter
    def IsPdf(self, IsPdf):
        self._IsPdf = IsPdf

    @property
    def PdfPageNumber(self):
        r"""需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :rtype: int
        """
        return self._PdfPageNumber

    @PdfPageNumber.setter
    def PdfPageNumber(self, PdfPageNumber):
        self._PdfPageNumber = PdfPageNumber

    @property
    def TableLanguage(self):
        r"""语言，zh：中英文（默认）jap：日文
        :rtype: str
        """
        return self._TableLanguage

    @TableLanguage.setter
    def TableLanguage(self, TableLanguage):
        self._TableLanguage = TableLanguage


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._IsPdf = params.get("IsPdf")
        self._PdfPageNumber = params.get("PdfPageNumber")
        self._TableLanguage = params.get("TableLanguage")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class RecognizeTableOCRResponse(AbstractModel):
    r"""RecognizeTableOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _TableDetections: 检测到的文本信息，具体内容请点击左侧链接。
        :type TableDetections: list of TableDetectInfo
        :param _Data: Base64 编码后的 Excel 数据。
        :type Data: str
        :param _PdfPageSize: 图片为PDF时，返回PDF的总页数，默认为0
        :type PdfPageSize: int
        :param _Angle: 图片旋转角度（角度制），文本的水平方向为0°，统一以逆时针方向旋转，逆时针为负，角度范围为-360°至0°。
        :type Angle: float
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._TableDetections = None
        self._Data = None
        self._PdfPageSize = None
        self._Angle = None
        self._RequestId = None

    @property
    def TableDetections(self):
        r"""检测到的文本信息，具体内容请点击左侧链接。
        :rtype: list of TableDetectInfo
        """
        return self._TableDetections

    @TableDetections.setter
    def TableDetections(self, TableDetections):
        self._TableDetections = TableDetections

    @property
    def Data(self):
        r"""Base64 编码后的 Excel 数据。
        :rtype: str
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def PdfPageSize(self):
        r"""图片为PDF时，返回PDF的总页数，默认为0
        :rtype: int
        """
        return self._PdfPageSize

    @PdfPageSize.setter
    def PdfPageSize(self, PdfPageSize):
        self._PdfPageSize = PdfPageSize

    @property
    def Angle(self):
        r"""图片旋转角度（角度制），文本的水平方向为0°，统一以逆时针方向旋转，逆时针为负，角度范围为-360°至0°。
        :rtype: float
        """
        return self._Angle

    @Angle.setter
    def Angle(self, Angle):
        self._Angle = Angle

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("TableDetections") is not None:
            self._TableDetections = []
            for item in params.get("TableDetections"):
                obj = TableDetectInfo()
                obj._deserialize(item)
                self._TableDetections.append(obj)
        self._Data = params.get("Data")
        self._PdfPageSize = params.get("PdfPageSize")
        self._Angle = params.get("Angle")
        self._RequestId = params.get("RequestId")


class RecognizeThaiIDCardOCRRequest(AbstractModel):
    r"""RecognizeThaiIDCardOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _BackImageBase64: 卡证背面图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type BackImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。建议图片存储于腾讯云，可保障更高的下载速度和稳定性。
        :type ImageUrl: str
        :param _BackImageUrl: 卡证背面图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type BackImageUrl: str
        :param _CropPortrait: 图片开关。默认为false，不返回泰国身份证头像照片的base64编码。
设置为true时，返回旋转矫正后的泰国身份证头像照片的base64编码
        :type CropPortrait: bool
        """
        self._ImageBase64 = None
        self._BackImageBase64 = None
        self._ImageUrl = None
        self._BackImageUrl = None
        self._CropPortrait = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def BackImageBase64(self):
        r"""卡证背面图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._BackImageBase64

    @BackImageBase64.setter
    def BackImageBase64(self, BackImageBase64):
        self._BackImageBase64 = BackImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。建议图片存储于腾讯云，可保障更高的下载速度和稳定性。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def BackImageUrl(self):
        r"""卡证背面图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._BackImageUrl

    @BackImageUrl.setter
    def BackImageUrl(self, BackImageUrl):
        self._BackImageUrl = BackImageUrl

    @property
    def CropPortrait(self):
        r"""图片开关。默认为false，不返回泰国身份证头像照片的base64编码。
设置为true时，返回旋转矫正后的泰国身份证头像照片的base64编码
        :rtype: bool
        """
        return self._CropPortrait

    @CropPortrait.setter
    def CropPortrait(self, CropPortrait):
        self._CropPortrait = CropPortrait


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._BackImageBase64 = params.get("BackImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._BackImageUrl = params.get("BackImageUrl")
        self._CropPortrait = params.get("CropPortrait")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class RecognizeThaiIDCardOCRResponse(AbstractModel):
    r"""RecognizeThaiIDCardOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _ID: 身份证号码
        :type ID: str
        :param _ThaiName: 泰文姓名
        :type ThaiName: str
        :param _EnFirstName: 英文姓名
        :type EnFirstName: str
        :param _EnLastName: 英文姓名
        :type EnLastName: str
        :param _IssueDate: 泰文签发日期
        :type IssueDate: str
        :param _ExpirationDate: 泰文到期日期
        :type ExpirationDate: str
        :param _EnIssueDate: 英文签发日期
        :type EnIssueDate: str
        :param _EnExpirationDate: 英文到期日期
        :type EnExpirationDate: str
        :param _Birthday: 泰文出生日期
        :type Birthday: str
        :param _EnBirthday: 英文出生日期
        :type EnBirthday: str
        :param _Religion: 宗教信仰
        :type Religion: str
        :param _SerialNumber: 序列号
        :type SerialNumber: str
        :param _Address: 地址
        :type Address: str
        :param _LaserID: 背面号码
        :type LaserID: str
        :param _PortraitImage: 证件人像照片抠取
        :type PortraitImage: str
        :param _WarnCardInfos: 告警码
-9101 证件边框不完整告警
-9102 证件复印件告警
-9103 证件翻拍告警
-9107 证件反光告警
-9108 证件模糊告警
-9109 告警能力未开通
        :type WarnCardInfos: list of int
        :param _AdvancedInfo: 该字段已废弃， 将固定返回"1"，不建议使用。 
        :type AdvancedInfo: str
        :param _CardCount: 卡证正面图片中，证件主体的数量（仅请求曼谷地域[ap-bangkok]返回）
        :type CardCount: int
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._ID = None
        self._ThaiName = None
        self._EnFirstName = None
        self._EnLastName = None
        self._IssueDate = None
        self._ExpirationDate = None
        self._EnIssueDate = None
        self._EnExpirationDate = None
        self._Birthday = None
        self._EnBirthday = None
        self._Religion = None
        self._SerialNumber = None
        self._Address = None
        self._LaserID = None
        self._PortraitImage = None
        self._WarnCardInfos = None
        self._AdvancedInfo = None
        self._CardCount = None
        self._RequestId = None

    @property
    def ID(self):
        r"""身份证号码
        :rtype: str
        """
        return self._ID

    @ID.setter
    def ID(self, ID):
        self._ID = ID

    @property
    def ThaiName(self):
        r"""泰文姓名
        :rtype: str
        """
        return self._ThaiName

    @ThaiName.setter
    def ThaiName(self, ThaiName):
        self._ThaiName = ThaiName

    @property
    def EnFirstName(self):
        r"""英文姓名
        :rtype: str
        """
        return self._EnFirstName

    @EnFirstName.setter
    def EnFirstName(self, EnFirstName):
        self._EnFirstName = EnFirstName

    @property
    def EnLastName(self):
        r"""英文姓名
        :rtype: str
        """
        return self._EnLastName

    @EnLastName.setter
    def EnLastName(self, EnLastName):
        self._EnLastName = EnLastName

    @property
    def IssueDate(self):
        r"""泰文签发日期
        :rtype: str
        """
        return self._IssueDate

    @IssueDate.setter
    def IssueDate(self, IssueDate):
        self._IssueDate = IssueDate

    @property
    def ExpirationDate(self):
        r"""泰文到期日期
        :rtype: str
        """
        return self._ExpirationDate

    @ExpirationDate.setter
    def ExpirationDate(self, ExpirationDate):
        self._ExpirationDate = ExpirationDate

    @property
    def EnIssueDate(self):
        r"""英文签发日期
        :rtype: str
        """
        return self._EnIssueDate

    @EnIssueDate.setter
    def EnIssueDate(self, EnIssueDate):
        self._EnIssueDate = EnIssueDate

    @property
    def EnExpirationDate(self):
        r"""英文到期日期
        :rtype: str
        """
        return self._EnExpirationDate

    @EnExpirationDate.setter
    def EnExpirationDate(self, EnExpirationDate):
        self._EnExpirationDate = EnExpirationDate

    @property
    def Birthday(self):
        r"""泰文出生日期
        :rtype: str
        """
        return self._Birthday

    @Birthday.setter
    def Birthday(self, Birthday):
        self._Birthday = Birthday

    @property
    def EnBirthday(self):
        r"""英文出生日期
        :rtype: str
        """
        return self._EnBirthday

    @EnBirthday.setter
    def EnBirthday(self, EnBirthday):
        self._EnBirthday = EnBirthday

    @property
    def Religion(self):
        r"""宗教信仰
        :rtype: str
        """
        return self._Religion

    @Religion.setter
    def Religion(self, Religion):
        self._Religion = Religion

    @property
    def SerialNumber(self):
        r"""序列号
        :rtype: str
        """
        return self._SerialNumber

    @SerialNumber.setter
    def SerialNumber(self, SerialNumber):
        self._SerialNumber = SerialNumber

    @property
    def Address(self):
        r"""地址
        :rtype: str
        """
        return self._Address

    @Address.setter
    def Address(self, Address):
        self._Address = Address

    @property
    def LaserID(self):
        r"""背面号码
        :rtype: str
        """
        return self._LaserID

    @LaserID.setter
    def LaserID(self, LaserID):
        self._LaserID = LaserID

    @property
    def PortraitImage(self):
        r"""证件人像照片抠取
        :rtype: str
        """
        return self._PortraitImage

    @PortraitImage.setter
    def PortraitImage(self, PortraitImage):
        self._PortraitImage = PortraitImage

    @property
    def WarnCardInfos(self):
        r"""告警码
-9101 证件边框不完整告警
-9102 证件复印件告警
-9103 证件翻拍告警
-9107 证件反光告警
-9108 证件模糊告警
-9109 告警能力未开通
        :rtype: list of int
        """
        return self._WarnCardInfos

    @WarnCardInfos.setter
    def WarnCardInfos(self, WarnCardInfos):
        self._WarnCardInfos = WarnCardInfos

    @property
    def AdvancedInfo(self):
        warnings.warn("parameter `AdvancedInfo` is deprecated", DeprecationWarning) 

        r"""该字段已废弃， 将固定返回"1"，不建议使用。 
        :rtype: str
        """
        return self._AdvancedInfo

    @AdvancedInfo.setter
    def AdvancedInfo(self, AdvancedInfo):
        warnings.warn("parameter `AdvancedInfo` is deprecated", DeprecationWarning) 

        self._AdvancedInfo = AdvancedInfo

    @property
    def CardCount(self):
        r"""卡证正面图片中，证件主体的数量（仅请求曼谷地域[ap-bangkok]返回）
        :rtype: int
        """
        return self._CardCount

    @CardCount.setter
    def CardCount(self, CardCount):
        self._CardCount = CardCount

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._ID = params.get("ID")
        self._ThaiName = params.get("ThaiName")
        self._EnFirstName = params.get("EnFirstName")
        self._EnLastName = params.get("EnLastName")
        self._IssueDate = params.get("IssueDate")
        self._ExpirationDate = params.get("ExpirationDate")
        self._EnIssueDate = params.get("EnIssueDate")
        self._EnExpirationDate = params.get("EnExpirationDate")
        self._Birthday = params.get("Birthday")
        self._EnBirthday = params.get("EnBirthday")
        self._Religion = params.get("Religion")
        self._SerialNumber = params.get("SerialNumber")
        self._Address = params.get("Address")
        self._LaserID = params.get("LaserID")
        self._PortraitImage = params.get("PortraitImage")
        self._WarnCardInfos = params.get("WarnCardInfos")
        self._AdvancedInfo = params.get("AdvancedInfo")
        self._CardCount = params.get("CardCount")
        self._RequestId = params.get("RequestId")


class RecognizeValidIDCardOCRRequest(AbstractModel):
    r"""RecognizeValidIDCardOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。建议图片存储于腾讯云，可保障更高的下载速度和稳定性。
        :type ImageUrl: str
        :param _CardType: 0 自动，自动判断输入证件的类型
1 身份证人像面，指定输入证件类型为二代身份证人像面
2 身份证国徽面，指定输入证件类型为二代身份证国徽面
3 身份证人像国徽面，指定输入证件类型为二代身份证人像面或者国徽面
4 临时身份证人像面，指定输入证件类型为临时身份证人像面
5 临时身份证国徽面，指定输入证件类型为临时身份证国徽面
6 临时身份证人像国徽面，指定输入证件类型为临时身份证人像面或者国徽面
7 港澳台居住证人像面，指定输入证件类型为港澳台居住证人像面
8 港澳台居住证国徽面，指定输入证件类型为港澳台居住证国徽面
9 港澳台居住证人像国徽面，指定输入证件类型为港澳台居住证人像面或者国徽面
10 外国人永久居留身份证人像面，指定输入证件类型为外国人永久居留证人像面
11 外国人永久居留身份证国徽面，指定输入证件类型为外国人永久居留证国徽面
12 外国人永久居留身份证人像国徽面，指定输入证件类型为外国人永久居留证人像或者国徽面
该参数如果不填，将为您自动判断卡证类型。
        :type CardType: int
        :param _EnablePortrait: 默认值为false，打开返回证件头像切图。
        :type EnablePortrait: bool
        :param _EnableCropImage: 默认值为false，打开返回证件主体切图。
        :type EnableCropImage: bool
        :param _EnableBorderCheck: 默认值为false，打开返回边缘完整性判断。
        :type EnableBorderCheck: bool
        :param _EnableOcclusionCheck: 默认值为false，打开返回证件是否被遮挡。
        :type EnableOcclusionCheck: bool
        :param _EnableCopyCheck: 默认值为false，打开返回证件是否存在复印。
        :type EnableCopyCheck: bool
        :param _EnableReshootCheck: 默认值为false，打开返回证件是否存在屏幕翻拍。
        :type EnableReshootCheck: bool
        :param _EnablePSCheck: 默认值为false，打开返回证件是否存在PS。类型为：临时、港澳台居住证、外国人居住证失效
        :type EnablePSCheck: bool
        :param _EnableWordCheck: 默认值为false，打开返回字段级反光和字段级完整性告警。类型为：临时、港澳台居住证、外国人居住证失效
        :type EnableWordCheck: bool
        :param _EnableQualityCheck: 默认值为false，打开返回证件是否模糊。
        :type EnableQualityCheck: bool
        :param _EnableElectronCheck: 默认值为false，打开返回是否存在电子身份证判断。
        :type EnableElectronCheck: bool
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._CardType = None
        self._EnablePortrait = None
        self._EnableCropImage = None
        self._EnableBorderCheck = None
        self._EnableOcclusionCheck = None
        self._EnableCopyCheck = None
        self._EnableReshootCheck = None
        self._EnablePSCheck = None
        self._EnableWordCheck = None
        self._EnableQualityCheck = None
        self._EnableElectronCheck = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。建议图片存储于腾讯云，可保障更高的下载速度和稳定性。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def CardType(self):
        r"""0 自动，自动判断输入证件的类型
1 身份证人像面，指定输入证件类型为二代身份证人像面
2 身份证国徽面，指定输入证件类型为二代身份证国徽面
3 身份证人像国徽面，指定输入证件类型为二代身份证人像面或者国徽面
4 临时身份证人像面，指定输入证件类型为临时身份证人像面
5 临时身份证国徽面，指定输入证件类型为临时身份证国徽面
6 临时身份证人像国徽面，指定输入证件类型为临时身份证人像面或者国徽面
7 港澳台居住证人像面，指定输入证件类型为港澳台居住证人像面
8 港澳台居住证国徽面，指定输入证件类型为港澳台居住证国徽面
9 港澳台居住证人像国徽面，指定输入证件类型为港澳台居住证人像面或者国徽面
10 外国人永久居留身份证人像面，指定输入证件类型为外国人永久居留证人像面
11 外国人永久居留身份证国徽面，指定输入证件类型为外国人永久居留证国徽面
12 外国人永久居留身份证人像国徽面，指定输入证件类型为外国人永久居留证人像或者国徽面
该参数如果不填，将为您自动判断卡证类型。
        :rtype: int
        """
        return self._CardType

    @CardType.setter
    def CardType(self, CardType):
        self._CardType = CardType

    @property
    def EnablePortrait(self):
        r"""默认值为false，打开返回证件头像切图。
        :rtype: bool
        """
        return self._EnablePortrait

    @EnablePortrait.setter
    def EnablePortrait(self, EnablePortrait):
        self._EnablePortrait = EnablePortrait

    @property
    def EnableCropImage(self):
        r"""默认值为false，打开返回证件主体切图。
        :rtype: bool
        """
        return self._EnableCropImage

    @EnableCropImage.setter
    def EnableCropImage(self, EnableCropImage):
        self._EnableCropImage = EnableCropImage

    @property
    def EnableBorderCheck(self):
        r"""默认值为false，打开返回边缘完整性判断。
        :rtype: bool
        """
        return self._EnableBorderCheck

    @EnableBorderCheck.setter
    def EnableBorderCheck(self, EnableBorderCheck):
        self._EnableBorderCheck = EnableBorderCheck

    @property
    def EnableOcclusionCheck(self):
        r"""默认值为false，打开返回证件是否被遮挡。
        :rtype: bool
        """
        return self._EnableOcclusionCheck

    @EnableOcclusionCheck.setter
    def EnableOcclusionCheck(self, EnableOcclusionCheck):
        self._EnableOcclusionCheck = EnableOcclusionCheck

    @property
    def EnableCopyCheck(self):
        r"""默认值为false，打开返回证件是否存在复印。
        :rtype: bool
        """
        return self._EnableCopyCheck

    @EnableCopyCheck.setter
    def EnableCopyCheck(self, EnableCopyCheck):
        self._EnableCopyCheck = EnableCopyCheck

    @property
    def EnableReshootCheck(self):
        r"""默认值为false，打开返回证件是否存在屏幕翻拍。
        :rtype: bool
        """
        return self._EnableReshootCheck

    @EnableReshootCheck.setter
    def EnableReshootCheck(self, EnableReshootCheck):
        self._EnableReshootCheck = EnableReshootCheck

    @property
    def EnablePSCheck(self):
        r"""默认值为false，打开返回证件是否存在PS。类型为：临时、港澳台居住证、外国人居住证失效
        :rtype: bool
        """
        return self._EnablePSCheck

    @EnablePSCheck.setter
    def EnablePSCheck(self, EnablePSCheck):
        self._EnablePSCheck = EnablePSCheck

    @property
    def EnableWordCheck(self):
        r"""默认值为false，打开返回字段级反光和字段级完整性告警。类型为：临时、港澳台居住证、外国人居住证失效
        :rtype: bool
        """
        return self._EnableWordCheck

    @EnableWordCheck.setter
    def EnableWordCheck(self, EnableWordCheck):
        self._EnableWordCheck = EnableWordCheck

    @property
    def EnableQualityCheck(self):
        r"""默认值为false，打开返回证件是否模糊。
        :rtype: bool
        """
        return self._EnableQualityCheck

    @EnableQualityCheck.setter
    def EnableQualityCheck(self, EnableQualityCheck):
        self._EnableQualityCheck = EnableQualityCheck

    @property
    def EnableElectronCheck(self):
        r"""默认值为false，打开返回是否存在电子身份证判断。
        :rtype: bool
        """
        return self._EnableElectronCheck

    @EnableElectronCheck.setter
    def EnableElectronCheck(self, EnableElectronCheck):
        self._EnableElectronCheck = EnableElectronCheck


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._CardType = params.get("CardType")
        self._EnablePortrait = params.get("EnablePortrait")
        self._EnableCropImage = params.get("EnableCropImage")
        self._EnableBorderCheck = params.get("EnableBorderCheck")
        self._EnableOcclusionCheck = params.get("EnableOcclusionCheck")
        self._EnableCopyCheck = params.get("EnableCopyCheck")
        self._EnableReshootCheck = params.get("EnableReshootCheck")
        self._EnablePSCheck = params.get("EnablePSCheck")
        self._EnableWordCheck = params.get("EnableWordCheck")
        self._EnableQualityCheck = params.get("EnableQualityCheck")
        self._EnableElectronCheck = params.get("EnableElectronCheck")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class RecognizeValidIDCardOCRResponse(AbstractModel):
    r"""RecognizeValidIDCardOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Type: 卡证类型
身份证人像面
身份证国徽面

临时身份证人像面
临时身份证人像面

港澳台居住证人像面
港澳台居住证国徽面

外国人永久居留证人像面
外国人永久居留证国徽面
        :type Type: str
        :param _IDCardInfo: 身份证信息
注意：此字段可能返回 null，表示取不到有效值。
        :type IDCardInfo: :class:`tencentcloud.ocr.v20181119.models.IDCardInfo`
        :param _TemporaryIDCardInfo: 临时身份证信息
注意：此字段可能返回 null，表示取不到有效值。
        :type TemporaryIDCardInfo: :class:`tencentcloud.ocr.v20181119.models.TemporaryIDCardInfo`
        :param _ResidencePermitInfo: 港澳台居住证信息
注意：此字段可能返回 null，表示取不到有效值。
        :type ResidencePermitInfo: :class:`tencentcloud.ocr.v20181119.models.ResidencePermitInfo`
        :param _PermanentResidencePermitInfo: 外国人永久居留证信息
注意：此字段可能返回 null，表示取不到有效值。
        :type PermanentResidencePermitInfo: :class:`tencentcloud.ocr.v20181119.models.PermanentResidencePermitInfo`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Type = None
        self._IDCardInfo = None
        self._TemporaryIDCardInfo = None
        self._ResidencePermitInfo = None
        self._PermanentResidencePermitInfo = None
        self._RequestId = None

    @property
    def Type(self):
        r"""卡证类型
身份证人像面
身份证国徽面

临时身份证人像面
临时身份证人像面

港澳台居住证人像面
港澳台居住证国徽面

外国人永久居留证人像面
外国人永久居留证国徽面
        :rtype: str
        """
        return self._Type

    @Type.setter
    def Type(self, Type):
        self._Type = Type

    @property
    def IDCardInfo(self):
        r"""身份证信息
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.IDCardInfo`
        """
        return self._IDCardInfo

    @IDCardInfo.setter
    def IDCardInfo(self, IDCardInfo):
        self._IDCardInfo = IDCardInfo

    @property
    def TemporaryIDCardInfo(self):
        r"""临时身份证信息
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.TemporaryIDCardInfo`
        """
        return self._TemporaryIDCardInfo

    @TemporaryIDCardInfo.setter
    def TemporaryIDCardInfo(self, TemporaryIDCardInfo):
        self._TemporaryIDCardInfo = TemporaryIDCardInfo

    @property
    def ResidencePermitInfo(self):
        r"""港澳台居住证信息
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ResidencePermitInfo`
        """
        return self._ResidencePermitInfo

    @ResidencePermitInfo.setter
    def ResidencePermitInfo(self, ResidencePermitInfo):
        self._ResidencePermitInfo = ResidencePermitInfo

    @property
    def PermanentResidencePermitInfo(self):
        r"""外国人永久居留证信息
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.PermanentResidencePermitInfo`
        """
        return self._PermanentResidencePermitInfo

    @PermanentResidencePermitInfo.setter
    def PermanentResidencePermitInfo(self, PermanentResidencePermitInfo):
        self._PermanentResidencePermitInfo = PermanentResidencePermitInfo

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._Type = params.get("Type")
        if params.get("IDCardInfo") is not None:
            self._IDCardInfo = IDCardInfo()
            self._IDCardInfo._deserialize(params.get("IDCardInfo"))
        if params.get("TemporaryIDCardInfo") is not None:
            self._TemporaryIDCardInfo = TemporaryIDCardInfo()
            self._TemporaryIDCardInfo._deserialize(params.get("TemporaryIDCardInfo"))
        if params.get("ResidencePermitInfo") is not None:
            self._ResidencePermitInfo = ResidencePermitInfo()
            self._ResidencePermitInfo._deserialize(params.get("ResidencePermitInfo"))
        if params.get("PermanentResidencePermitInfo") is not None:
            self._PermanentResidencePermitInfo = PermanentResidencePermitInfo()
            self._PermanentResidencePermitInfo._deserialize(params.get("PermanentResidencePermitInfo"))
        self._RequestId = params.get("RequestId")


class Rect(AbstractModel):
    r"""矩形坐标

    """

    def __init__(self):
        r"""
        :param _X: 左上角x
        :type X: int
        :param _Y: 左上角y
        :type Y: int
        :param _Width: 宽度
        :type Width: int
        :param _Height: 高度
        :type Height: int
        """
        self._X = None
        self._Y = None
        self._Width = None
        self._Height = None

    @property
    def X(self):
        r"""左上角x
        :rtype: int
        """
        return self._X

    @X.setter
    def X(self, X):
        self._X = X

    @property
    def Y(self):
        r"""左上角y
        :rtype: int
        """
        return self._Y

    @Y.setter
    def Y(self, Y):
        self._Y = Y

    @property
    def Width(self):
        r"""宽度
        :rtype: int
        """
        return self._Width

    @Width.setter
    def Width(self, Width):
        self._Width = Width

    @property
    def Height(self):
        r"""高度
        :rtype: int
        """
        return self._Height

    @Height.setter
    def Height(self, Height):
        self._Height = Height


    def _deserialize(self, params):
        self._X = params.get("X")
        self._Y = params.get("Y")
        self._Width = params.get("Width")
        self._Height = params.get("Height")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ReflectDetailInfo(AbstractModel):
    r"""反光点覆盖区域详情结果

    """

    def __init__(self):
        r"""
        :param _Position: NationalEmblem 国徽位置
Portrait 人像照片位置
RecognitionField 识别字段位置
Others 其他位置
        :type Position: str
        """
        self._Position = None

    @property
    def Position(self):
        r"""NationalEmblem 国徽位置
Portrait 人像照片位置
RecognitionField 识别字段位置
Others 其他位置
        :rtype: str
        """
        return self._Position

    @Position.setter
    def Position(self, Position):
        self._Position = Position


    def _deserialize(self, params):
        self._Position = params.get("Position")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class RequestIdInfo(AbstractModel):
    r"""请求 id 信息

    """

    def __init__(self):
        r"""
        :param _ApiRequestId: 请求 api 的 requestid
        :type ApiRequestId: str
        :param _ApiErrorCode: 请求 api 的错误码
        :type ApiErrorCode: str
        :param _WarnCodes: 告警码
        :type WarnCodes: list of int
        """
        self._ApiRequestId = None
        self._ApiErrorCode = None
        self._WarnCodes = None

    @property
    def ApiRequestId(self):
        r"""请求 api 的 requestid
        :rtype: str
        """
        return self._ApiRequestId

    @ApiRequestId.setter
    def ApiRequestId(self, ApiRequestId):
        self._ApiRequestId = ApiRequestId

    @property
    def ApiErrorCode(self):
        r"""请求 api 的错误码
        :rtype: str
        """
        return self._ApiErrorCode

    @ApiErrorCode.setter
    def ApiErrorCode(self, ApiErrorCode):
        self._ApiErrorCode = ApiErrorCode

    @property
    def WarnCodes(self):
        r"""告警码
        :rtype: list of int
        """
        return self._WarnCodes

    @WarnCodes.setter
    def WarnCodes(self, WarnCodes):
        self._WarnCodes = WarnCodes


    def _deserialize(self, params):
        self._ApiRequestId = params.get("ApiRequestId")
        self._ApiErrorCode = params.get("ApiErrorCode")
        self._WarnCodes = params.get("WarnCodes")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ResidenceBookletOCRRequest(AbstractModel):
    r"""ResidenceBookletOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        """
        self._ImageBase64 = None
        self._ImageUrl = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ResidenceBookletOCRResponse(AbstractModel):
    r"""ResidenceBookletOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _HouseholdNumber: 户号
        :type HouseholdNumber: str
        :param _Name: 姓名
        :type Name: str
        :param _Sex: 性别
        :type Sex: str
        :param _BirthPlace: 出生地
        :type BirthPlace: str
        :param _Nation: 民族
        :type Nation: str
        :param _NativePlace: 籍贯
        :type NativePlace: str
        :param _BirthDate: 出生日期
        :type BirthDate: str
        :param _IdCardNumber: 公民身份证件编号
        :type IdCardNumber: str
        :param _EducationDegree: 文化程度
        :type EducationDegree: str
        :param _ServicePlace: 服务处所
        :type ServicePlace: str
        :param _Household: 户别
        :type Household: str
        :param _Address: 住址
        :type Address: str
        :param _Signature: 承办人签章文字
        :type Signature: str
        :param _IssueDate: 签发日期
        :type IssueDate: str
        :param _HomePageNumber: 户主页编号
        :type HomePageNumber: str
        :param _HouseholderName: 户主姓名
        :type HouseholderName: str
        :param _Relationship: 户主或与户主关系
        :type Relationship: str
        :param _OtherAddresses: 本市（县）其他住址
        :type OtherAddresses: str
        :param _ReligiousBelief: 宗教信仰
        :type ReligiousBelief: str
        :param _Height: 身高
        :type Height: str
        :param _BloodType: 血型
        :type BloodType: str
        :param _MaritalStatus: 婚姻状况
        :type MaritalStatus: str
        :param _VeteranStatus: 兵役状况
        :type VeteranStatus: str
        :param _Profession: 职业
        :type Profession: str
        :param _MoveToCityInformation: 何时由何地迁来本市(县)
        :type MoveToCityInformation: str
        :param _MoveToSiteInformation: 何时由何地迁来本址
        :type MoveToSiteInformation: str
        :param _RegistrationDate: 登记日期
        :type RegistrationDate: str
        :param _FormerName: 曾用名
        :type FormerName: str
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._HouseholdNumber = None
        self._Name = None
        self._Sex = None
        self._BirthPlace = None
        self._Nation = None
        self._NativePlace = None
        self._BirthDate = None
        self._IdCardNumber = None
        self._EducationDegree = None
        self._ServicePlace = None
        self._Household = None
        self._Address = None
        self._Signature = None
        self._IssueDate = None
        self._HomePageNumber = None
        self._HouseholderName = None
        self._Relationship = None
        self._OtherAddresses = None
        self._ReligiousBelief = None
        self._Height = None
        self._BloodType = None
        self._MaritalStatus = None
        self._VeteranStatus = None
        self._Profession = None
        self._MoveToCityInformation = None
        self._MoveToSiteInformation = None
        self._RegistrationDate = None
        self._FormerName = None
        self._RequestId = None

    @property
    def HouseholdNumber(self):
        r"""户号
        :rtype: str
        """
        return self._HouseholdNumber

    @HouseholdNumber.setter
    def HouseholdNumber(self, HouseholdNumber):
        self._HouseholdNumber = HouseholdNumber

    @property
    def Name(self):
        r"""姓名
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Sex(self):
        r"""性别
        :rtype: str
        """
        return self._Sex

    @Sex.setter
    def Sex(self, Sex):
        self._Sex = Sex

    @property
    def BirthPlace(self):
        r"""出生地
        :rtype: str
        """
        return self._BirthPlace

    @BirthPlace.setter
    def BirthPlace(self, BirthPlace):
        self._BirthPlace = BirthPlace

    @property
    def Nation(self):
        r"""民族
        :rtype: str
        """
        return self._Nation

    @Nation.setter
    def Nation(self, Nation):
        self._Nation = Nation

    @property
    def NativePlace(self):
        r"""籍贯
        :rtype: str
        """
        return self._NativePlace

    @NativePlace.setter
    def NativePlace(self, NativePlace):
        self._NativePlace = NativePlace

    @property
    def BirthDate(self):
        r"""出生日期
        :rtype: str
        """
        return self._BirthDate

    @BirthDate.setter
    def BirthDate(self, BirthDate):
        self._BirthDate = BirthDate

    @property
    def IdCardNumber(self):
        r"""公民身份证件编号
        :rtype: str
        """
        return self._IdCardNumber

    @IdCardNumber.setter
    def IdCardNumber(self, IdCardNumber):
        self._IdCardNumber = IdCardNumber

    @property
    def EducationDegree(self):
        r"""文化程度
        :rtype: str
        """
        return self._EducationDegree

    @EducationDegree.setter
    def EducationDegree(self, EducationDegree):
        self._EducationDegree = EducationDegree

    @property
    def ServicePlace(self):
        r"""服务处所
        :rtype: str
        """
        return self._ServicePlace

    @ServicePlace.setter
    def ServicePlace(self, ServicePlace):
        self._ServicePlace = ServicePlace

    @property
    def Household(self):
        r"""户别
        :rtype: str
        """
        return self._Household

    @Household.setter
    def Household(self, Household):
        self._Household = Household

    @property
    def Address(self):
        r"""住址
        :rtype: str
        """
        return self._Address

    @Address.setter
    def Address(self, Address):
        self._Address = Address

    @property
    def Signature(self):
        r"""承办人签章文字
        :rtype: str
        """
        return self._Signature

    @Signature.setter
    def Signature(self, Signature):
        self._Signature = Signature

    @property
    def IssueDate(self):
        r"""签发日期
        :rtype: str
        """
        return self._IssueDate

    @IssueDate.setter
    def IssueDate(self, IssueDate):
        self._IssueDate = IssueDate

    @property
    def HomePageNumber(self):
        r"""户主页编号
        :rtype: str
        """
        return self._HomePageNumber

    @HomePageNumber.setter
    def HomePageNumber(self, HomePageNumber):
        self._HomePageNumber = HomePageNumber

    @property
    def HouseholderName(self):
        r"""户主姓名
        :rtype: str
        """
        return self._HouseholderName

    @HouseholderName.setter
    def HouseholderName(self, HouseholderName):
        self._HouseholderName = HouseholderName

    @property
    def Relationship(self):
        r"""户主或与户主关系
        :rtype: str
        """
        return self._Relationship

    @Relationship.setter
    def Relationship(self, Relationship):
        self._Relationship = Relationship

    @property
    def OtherAddresses(self):
        r"""本市（县）其他住址
        :rtype: str
        """
        return self._OtherAddresses

    @OtherAddresses.setter
    def OtherAddresses(self, OtherAddresses):
        self._OtherAddresses = OtherAddresses

    @property
    def ReligiousBelief(self):
        r"""宗教信仰
        :rtype: str
        """
        return self._ReligiousBelief

    @ReligiousBelief.setter
    def ReligiousBelief(self, ReligiousBelief):
        self._ReligiousBelief = ReligiousBelief

    @property
    def Height(self):
        r"""身高
        :rtype: str
        """
        return self._Height

    @Height.setter
    def Height(self, Height):
        self._Height = Height

    @property
    def BloodType(self):
        r"""血型
        :rtype: str
        """
        return self._BloodType

    @BloodType.setter
    def BloodType(self, BloodType):
        self._BloodType = BloodType

    @property
    def MaritalStatus(self):
        r"""婚姻状况
        :rtype: str
        """
        return self._MaritalStatus

    @MaritalStatus.setter
    def MaritalStatus(self, MaritalStatus):
        self._MaritalStatus = MaritalStatus

    @property
    def VeteranStatus(self):
        r"""兵役状况
        :rtype: str
        """
        return self._VeteranStatus

    @VeteranStatus.setter
    def VeteranStatus(self, VeteranStatus):
        self._VeteranStatus = VeteranStatus

    @property
    def Profession(self):
        r"""职业
        :rtype: str
        """
        return self._Profession

    @Profession.setter
    def Profession(self, Profession):
        self._Profession = Profession

    @property
    def MoveToCityInformation(self):
        r"""何时由何地迁来本市(县)
        :rtype: str
        """
        return self._MoveToCityInformation

    @MoveToCityInformation.setter
    def MoveToCityInformation(self, MoveToCityInformation):
        self._MoveToCityInformation = MoveToCityInformation

    @property
    def MoveToSiteInformation(self):
        r"""何时由何地迁来本址
        :rtype: str
        """
        return self._MoveToSiteInformation

    @MoveToSiteInformation.setter
    def MoveToSiteInformation(self, MoveToSiteInformation):
        self._MoveToSiteInformation = MoveToSiteInformation

    @property
    def RegistrationDate(self):
        r"""登记日期
        :rtype: str
        """
        return self._RegistrationDate

    @RegistrationDate.setter
    def RegistrationDate(self, RegistrationDate):
        self._RegistrationDate = RegistrationDate

    @property
    def FormerName(self):
        r"""曾用名
        :rtype: str
        """
        return self._FormerName

    @FormerName.setter
    def FormerName(self, FormerName):
        self._FormerName = FormerName

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._HouseholdNumber = params.get("HouseholdNumber")
        self._Name = params.get("Name")
        self._Sex = params.get("Sex")
        self._BirthPlace = params.get("BirthPlace")
        self._Nation = params.get("Nation")
        self._NativePlace = params.get("NativePlace")
        self._BirthDate = params.get("BirthDate")
        self._IdCardNumber = params.get("IdCardNumber")
        self._EducationDegree = params.get("EducationDegree")
        self._ServicePlace = params.get("ServicePlace")
        self._Household = params.get("Household")
        self._Address = params.get("Address")
        self._Signature = params.get("Signature")
        self._IssueDate = params.get("IssueDate")
        self._HomePageNumber = params.get("HomePageNumber")
        self._HouseholderName = params.get("HouseholderName")
        self._Relationship = params.get("Relationship")
        self._OtherAddresses = params.get("OtherAddresses")
        self._ReligiousBelief = params.get("ReligiousBelief")
        self._Height = params.get("Height")
        self._BloodType = params.get("BloodType")
        self._MaritalStatus = params.get("MaritalStatus")
        self._VeteranStatus = params.get("VeteranStatus")
        self._Profession = params.get("Profession")
        self._MoveToCityInformation = params.get("MoveToCityInformation")
        self._MoveToSiteInformation = params.get("MoveToSiteInformation")
        self._RegistrationDate = params.get("RegistrationDate")
        self._FormerName = params.get("FormerName")
        self._RequestId = params.get("RequestId")


class ResidencePermitInfo(AbstractModel):
    r"""港澳台居住证信息返回

    """

    def __init__(self):
        r"""
        :param _Name: 姓名（人像面）
        :type Name: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _Sex: 性别（人像面）
        :type Sex: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _Nation: 民族（人像面）
        :type Nation: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _Birth: 出生日期（人像面）
        :type Birth: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _Address: 地址（人像面）
        :type Address: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _IdNum: 公民身份号码（人像面）
        :type IdNum: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _Authority: 发证机关（国徽面）
        :type Authority: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _ValidDate: 证件有效期（国徽面）
        :type ValidDate: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _WarnInfos: WarnInfos，告警信息
        :type WarnInfos: :class:`tencentcloud.ocr.v20181119.models.CardWarnInfo`
        :param _CardImage: IdCard，裁剪后身份证照片的base64编码，请求 EnableCropImage 时返回；
        :type CardImage: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _PortraitImage: Portrait，身份证头像照片的base64编码，请求 EnablePortrait 时返回；
        :type PortraitImage: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _PassNum: 通行证号码，港澳台居住证国徽面 返回该字段
        :type PassNum: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _IssueNum: 签发次数，港澳台居住证国徽面 返回该字段
        :type IssueNum: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        self._Name = None
        self._Sex = None
        self._Nation = None
        self._Birth = None
        self._Address = None
        self._IdNum = None
        self._Authority = None
        self._ValidDate = None
        self._WarnInfos = None
        self._CardImage = None
        self._PortraitImage = None
        self._PassNum = None
        self._IssueNum = None

    @property
    def Name(self):
        r"""姓名（人像面）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Sex(self):
        r"""性别（人像面）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._Sex

    @Sex.setter
    def Sex(self, Sex):
        self._Sex = Sex

    @property
    def Nation(self):
        r"""民族（人像面）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._Nation

    @Nation.setter
    def Nation(self, Nation):
        self._Nation = Nation

    @property
    def Birth(self):
        r"""出生日期（人像面）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._Birth

    @Birth.setter
    def Birth(self, Birth):
        self._Birth = Birth

    @property
    def Address(self):
        r"""地址（人像面）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._Address

    @Address.setter
    def Address(self, Address):
        self._Address = Address

    @property
    def IdNum(self):
        r"""公民身份号码（人像面）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._IdNum

    @IdNum.setter
    def IdNum(self, IdNum):
        self._IdNum = IdNum

    @property
    def Authority(self):
        r"""发证机关（国徽面）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._Authority

    @Authority.setter
    def Authority(self, Authority):
        self._Authority = Authority

    @property
    def ValidDate(self):
        r"""证件有效期（国徽面）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._ValidDate

    @ValidDate.setter
    def ValidDate(self, ValidDate):
        self._ValidDate = ValidDate

    @property
    def WarnInfos(self):
        r"""WarnInfos，告警信息
        :rtype: :class:`tencentcloud.ocr.v20181119.models.CardWarnInfo`
        """
        return self._WarnInfos

    @WarnInfos.setter
    def WarnInfos(self, WarnInfos):
        self._WarnInfos = WarnInfos

    @property
    def CardImage(self):
        r"""IdCard，裁剪后身份证照片的base64编码，请求 EnableCropImage 时返回；
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._CardImage

    @CardImage.setter
    def CardImage(self, CardImage):
        self._CardImage = CardImage

    @property
    def PortraitImage(self):
        r"""Portrait，身份证头像照片的base64编码，请求 EnablePortrait 时返回；
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._PortraitImage

    @PortraitImage.setter
    def PortraitImage(self, PortraitImage):
        self._PortraitImage = PortraitImage

    @property
    def PassNum(self):
        r"""通行证号码，港澳台居住证国徽面 返回该字段
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._PassNum

    @PassNum.setter
    def PassNum(self, PassNum):
        self._PassNum = PassNum

    @property
    def IssueNum(self):
        r"""签发次数，港澳台居住证国徽面 返回该字段
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._IssueNum

    @IssueNum.setter
    def IssueNum(self, IssueNum):
        self._IssueNum = IssueNum


    def _deserialize(self, params):
        if params.get("Name") is not None:
            self._Name = ContentInfo()
            self._Name._deserialize(params.get("Name"))
        if params.get("Sex") is not None:
            self._Sex = ContentInfo()
            self._Sex._deserialize(params.get("Sex"))
        if params.get("Nation") is not None:
            self._Nation = ContentInfo()
            self._Nation._deserialize(params.get("Nation"))
        if params.get("Birth") is not None:
            self._Birth = ContentInfo()
            self._Birth._deserialize(params.get("Birth"))
        if params.get("Address") is not None:
            self._Address = ContentInfo()
            self._Address._deserialize(params.get("Address"))
        if params.get("IdNum") is not None:
            self._IdNum = ContentInfo()
            self._IdNum._deserialize(params.get("IdNum"))
        if params.get("Authority") is not None:
            self._Authority = ContentInfo()
            self._Authority._deserialize(params.get("Authority"))
        if params.get("ValidDate") is not None:
            self._ValidDate = ContentInfo()
            self._ValidDate._deserialize(params.get("ValidDate"))
        if params.get("WarnInfos") is not None:
            self._WarnInfos = CardWarnInfo()
            self._WarnInfos._deserialize(params.get("WarnInfos"))
        if params.get("CardImage") is not None:
            self._CardImage = ContentInfo()
            self._CardImage._deserialize(params.get("CardImage"))
        if params.get("PortraitImage") is not None:
            self._PortraitImage = ContentInfo()
            self._PortraitImage._deserialize(params.get("PortraitImage"))
        if params.get("PassNum") is not None:
            self._PassNum = ContentInfo()
            self._PassNum._deserialize(params.get("PassNum"))
        if params.get("IssueNum") is not None:
            self._IssueNum = ContentInfo()
            self._IssueNum._deserialize(params.get("IssueNum"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ResultList(AbstractModel):
    r"""结果列表

    """

    def __init__(self):
        r"""
        :param _Question: 题干
注意：此字段可能返回 null，表示取不到有效值。
        :type Question: list of Element
        :param _Option: 选项
注意：此字段可能返回 null，表示取不到有效值。
        :type Option: list of Element
        :param _Figure: 插图
注意：此字段可能返回 null，表示取不到有效值。
        :type Figure: list of Element
        :param _Table: 表格
注意：此字段可能返回 null，表示取不到有效值。
        :type Table: list of Element
        :param _Answer: 答案
注意：此字段可能返回 null，表示取不到有效值。
        :type Answer: list of Element
        :param _Parse: 解析
        :type Parse: list of Element
        :param _Coord: 整题的坐标
注意：此字段可能返回 null，表示取不到有效值。
        :type Coord: list of Polygon
        """
        self._Question = None
        self._Option = None
        self._Figure = None
        self._Table = None
        self._Answer = None
        self._Parse = None
        self._Coord = None

    @property
    def Question(self):
        r"""题干
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of Element
        """
        return self._Question

    @Question.setter
    def Question(self, Question):
        self._Question = Question

    @property
    def Option(self):
        r"""选项
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of Element
        """
        return self._Option

    @Option.setter
    def Option(self, Option):
        self._Option = Option

    @property
    def Figure(self):
        r"""插图
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of Element
        """
        return self._Figure

    @Figure.setter
    def Figure(self, Figure):
        self._Figure = Figure

    @property
    def Table(self):
        r"""表格
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of Element
        """
        return self._Table

    @Table.setter
    def Table(self, Table):
        self._Table = Table

    @property
    def Answer(self):
        r"""答案
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of Element
        """
        return self._Answer

    @Answer.setter
    def Answer(self, Answer):
        self._Answer = Answer

    @property
    def Parse(self):
        r"""解析
        :rtype: list of Element
        """
        return self._Parse

    @Parse.setter
    def Parse(self, Parse):
        self._Parse = Parse

    @property
    def Coord(self):
        r"""整题的坐标
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of Polygon
        """
        return self._Coord

    @Coord.setter
    def Coord(self, Coord):
        self._Coord = Coord


    def _deserialize(self, params):
        if params.get("Question") is not None:
            self._Question = []
            for item in params.get("Question"):
                obj = Element()
                obj._deserialize(item)
                self._Question.append(obj)
        if params.get("Option") is not None:
            self._Option = []
            for item in params.get("Option"):
                obj = Element()
                obj._deserialize(item)
                self._Option.append(obj)
        if params.get("Figure") is not None:
            self._Figure = []
            for item in params.get("Figure"):
                obj = Element()
                obj._deserialize(item)
                self._Figure.append(obj)
        if params.get("Table") is not None:
            self._Table = []
            for item in params.get("Table"):
                obj = Element()
                obj._deserialize(item)
                self._Table.append(obj)
        if params.get("Answer") is not None:
            self._Answer = []
            for item in params.get("Answer"):
                obj = Element()
                obj._deserialize(item)
                self._Answer.append(obj)
        if params.get("Parse") is not None:
            self._Parse = []
            for item in params.get("Parse"):
                obj = Element()
                obj._deserialize(item)
                self._Parse.append(obj)
        if params.get("Coord") is not None:
            self._Coord = []
            for item in params.get("Coord"):
                obj = Polygon()
                obj._deserialize(item)
                self._Coord.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class RideHailingDriverLicenseOCRRequest(AbstractModel):
    r"""RideHailingDriverLicenseOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。要求图片经Base64编码后不超过 10M，分辨率建议500\*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。图片下载时间不超过 3 秒。建议图片存储于腾讯云，可保障更高的下载速度和稳定性。
        :type ImageUrl: str
        """
        self._ImageBase64 = None
        self._ImageUrl = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。要求图片经Base64编码后不超过 10M，分辨率建议500\*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。图片下载时间不超过 3 秒。建议图片存储于腾讯云，可保障更高的下载速度和稳定性。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class RideHailingDriverLicenseOCRResponse(AbstractModel):
    r"""RideHailingDriverLicenseOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Name: 姓名
        :type Name: str
        :param _LicenseNumber: 证号，对应网约车驾驶证字段：证号/从业资格证号/驾驶员证号/身份证号
        :type LicenseNumber: str
        :param _StartDate: 有效起始日期
        :type StartDate: str
        :param _EndDate: 有效期截止时间，对应网约车驾驶证字段：有效期至/营运期限止
        :type EndDate: str
        :param _ReleaseDate: 初始发证日期，对应网约车驾驶证字段：初始领证日期/发证日期
        :type ReleaseDate: str
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Name = None
        self._LicenseNumber = None
        self._StartDate = None
        self._EndDate = None
        self._ReleaseDate = None
        self._RequestId = None

    @property
    def Name(self):
        r"""姓名
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def LicenseNumber(self):
        r"""证号，对应网约车驾驶证字段：证号/从业资格证号/驾驶员证号/身份证号
        :rtype: str
        """
        return self._LicenseNumber

    @LicenseNumber.setter
    def LicenseNumber(self, LicenseNumber):
        self._LicenseNumber = LicenseNumber

    @property
    def StartDate(self):
        r"""有效起始日期
        :rtype: str
        """
        return self._StartDate

    @StartDate.setter
    def StartDate(self, StartDate):
        self._StartDate = StartDate

    @property
    def EndDate(self):
        r"""有效期截止时间，对应网约车驾驶证字段：有效期至/营运期限止
        :rtype: str
        """
        return self._EndDate

    @EndDate.setter
    def EndDate(self, EndDate):
        self._EndDate = EndDate

    @property
    def ReleaseDate(self):
        r"""初始发证日期，对应网约车驾驶证字段：初始领证日期/发证日期
        :rtype: str
        """
        return self._ReleaseDate

    @ReleaseDate.setter
    def ReleaseDate(self, ReleaseDate):
        self._ReleaseDate = ReleaseDate

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._Name = params.get("Name")
        self._LicenseNumber = params.get("LicenseNumber")
        self._StartDate = params.get("StartDate")
        self._EndDate = params.get("EndDate")
        self._ReleaseDate = params.get("ReleaseDate")
        self._RequestId = params.get("RequestId")


class RideHailingTransportLicenseOCRRequest(AbstractModel):
    r"""RideHailingTransportLicenseOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。要求图片经Base64编码后不超过 10M，分辨率建议500\*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。图片下载时间不超过 3 秒。建议图片存储于腾讯云，可保障更高的下载速度和稳定性。
        :type ImageUrl: str
        """
        self._ImageBase64 = None
        self._ImageUrl = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。要求图片经Base64编码后不超过 10M，分辨率建议500\*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。图片下载时间不超过 3 秒。建议图片存储于腾讯云，可保障更高的下载速度和稳定性。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class RideHailingTransportLicenseOCRResponse(AbstractModel):
    r"""RideHailingTransportLicenseOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _OperationLicenseNumber: 交运管许可字号。
        :type OperationLicenseNumber: str
        :param _VehicleOwner: 车辆所有人，对应网约车运输证字段：车辆所有人/车主名称/业户名称。
        :type VehicleOwner: str
        :param _VehicleNumber: 车牌号码，对应网约车运输证字段：车牌号码/车辆号牌。
        :type VehicleNumber: str
        :param _StartDate: 有效起始日期。
        :type StartDate: str
        :param _EndDate: 有效期截止时间，对应网约车运输证字段：有效期至/营运期限止。
        :type EndDate: str
        :param _ReleaseDate: 初始发证日期，对应网约车运输证字段：初始领证日期/发证日期。
        :type ReleaseDate: str
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._OperationLicenseNumber = None
        self._VehicleOwner = None
        self._VehicleNumber = None
        self._StartDate = None
        self._EndDate = None
        self._ReleaseDate = None
        self._RequestId = None

    @property
    def OperationLicenseNumber(self):
        r"""交运管许可字号。
        :rtype: str
        """
        return self._OperationLicenseNumber

    @OperationLicenseNumber.setter
    def OperationLicenseNumber(self, OperationLicenseNumber):
        self._OperationLicenseNumber = OperationLicenseNumber

    @property
    def VehicleOwner(self):
        r"""车辆所有人，对应网约车运输证字段：车辆所有人/车主名称/业户名称。
        :rtype: str
        """
        return self._VehicleOwner

    @VehicleOwner.setter
    def VehicleOwner(self, VehicleOwner):
        self._VehicleOwner = VehicleOwner

    @property
    def VehicleNumber(self):
        r"""车牌号码，对应网约车运输证字段：车牌号码/车辆号牌。
        :rtype: str
        """
        return self._VehicleNumber

    @VehicleNumber.setter
    def VehicleNumber(self, VehicleNumber):
        self._VehicleNumber = VehicleNumber

    @property
    def StartDate(self):
        r"""有效起始日期。
        :rtype: str
        """
        return self._StartDate

    @StartDate.setter
    def StartDate(self, StartDate):
        self._StartDate = StartDate

    @property
    def EndDate(self):
        r"""有效期截止时间，对应网约车运输证字段：有效期至/营运期限止。
        :rtype: str
        """
        return self._EndDate

    @EndDate.setter
    def EndDate(self, EndDate):
        self._EndDate = EndDate

    @property
    def ReleaseDate(self):
        r"""初始发证日期，对应网约车运输证字段：初始领证日期/发证日期。
        :rtype: str
        """
        return self._ReleaseDate

    @ReleaseDate.setter
    def ReleaseDate(self, ReleaseDate):
        self._ReleaseDate = ReleaseDate

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._OperationLicenseNumber = params.get("OperationLicenseNumber")
        self._VehicleOwner = params.get("VehicleOwner")
        self._VehicleNumber = params.get("VehicleNumber")
        self._StartDate = params.get("StartDate")
        self._EndDate = params.get("EndDate")
        self._ReleaseDate = params.get("ReleaseDate")
        self._RequestId = params.get("RequestId")


class SaleInventory(AbstractModel):
    r"""销货清单

    """

    def __init__(self):
        r"""
        :param _Title: 发票名称
        :type Title: str
        :param _Content: 识别出的字段名称(关键字)
        :type Content: list of OtherInvoiceItem
        """
        self._Title = None
        self._Content = None

    @property
    def Title(self):
        r"""发票名称
        :rtype: str
        """
        return self._Title

    @Title.setter
    def Title(self, Title):
        self._Title = Title

    @property
    def Content(self):
        r"""识别出的字段名称(关键字)
        :rtype: list of OtherInvoiceItem
        """
        return self._Content

    @Content.setter
    def Content(self, Content):
        self._Content = Content


    def _deserialize(self, params):
        self._Title = params.get("Title")
        if params.get("Content") is not None:
            self._Content = []
            for item in params.get("Content"):
                obj = OtherInvoiceItem()
                obj._deserialize(item)
                self._Content.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class SceneWarnInfo(AbstractModel):
    r"""用于风险提示和表示不同场景下的风险程度

    """

    def __init__(self):
        r"""
        :param _IsWarn: <p>是否存在该提示</p>
        :type IsWarn: bool
        :param _RiskConfidence: <p>风险程度（0-1）</p>
        :type RiskConfidence: float
        :param _Polygon: <p>提示位置四点坐标，仅部分提示类型支持返回提示位置坐标</p>
        :type Polygon: list of Polygon
        """
        self._IsWarn = None
        self._RiskConfidence = None
        self._Polygon = None

    @property
    def IsWarn(self):
        r"""<p>是否存在该提示</p>
        :rtype: bool
        """
        return self._IsWarn

    @IsWarn.setter
    def IsWarn(self, IsWarn):
        self._IsWarn = IsWarn

    @property
    def RiskConfidence(self):
        r"""<p>风险程度（0-1）</p>
        :rtype: float
        """
        return self._RiskConfidence

    @RiskConfidence.setter
    def RiskConfidence(self, RiskConfidence):
        self._RiskConfidence = RiskConfidence

    @property
    def Polygon(self):
        r"""<p>提示位置四点坐标，仅部分提示类型支持返回提示位置坐标</p>
        :rtype: list of Polygon
        """
        return self._Polygon

    @Polygon.setter
    def Polygon(self, Polygon):
        self._Polygon = Polygon


    def _deserialize(self, params):
        self._IsWarn = params.get("IsWarn")
        self._RiskConfidence = params.get("RiskConfidence")
        if params.get("Polygon") is not None:
            self._Polygon = []
            for item in params.get("Polygon"):
                obj = Polygon()
                obj._deserialize(item)
                self._Polygon.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class SchemaList(AbstractModel):
    r"""描述用户提供的出参结构的模板

    """

    def __init__(self):
        r"""
        :param _KeyName: <p>自定义需提取的字段名称。注：若需提取多个字段，可定义多个KeyName。</p>
        :type KeyName: str
        :param _KeyType: <p>字段类型。</p><p>枚举值：</p><ul><li>0： 表示KeyName为简单字段（如姓名、性别等）。</li><li>1： 表示KeyName为数组对象（如工作经历、教育经历列表）。</li></ul>
        :type KeyType: int
        :param _KeyPrompt: <p>补充提取字段的描述。</p>
        :type KeyPrompt: str
        :param _SubItems: <p>嵌套SchemaList结构，最多支持嵌套三层。注：仅当KeyType=1时生效。</p>
        :type SubItems: list of SchemaList
        """
        self._KeyName = None
        self._KeyType = None
        self._KeyPrompt = None
        self._SubItems = None

    @property
    def KeyName(self):
        r"""<p>自定义需提取的字段名称。注：若需提取多个字段，可定义多个KeyName。</p>
        :rtype: str
        """
        return self._KeyName

    @KeyName.setter
    def KeyName(self, KeyName):
        self._KeyName = KeyName

    @property
    def KeyType(self):
        r"""<p>字段类型。</p><p>枚举值：</p><ul><li>0： 表示KeyName为简单字段（如姓名、性别等）。</li><li>1： 表示KeyName为数组对象（如工作经历、教育经历列表）。</li></ul>
        :rtype: int
        """
        return self._KeyType

    @KeyType.setter
    def KeyType(self, KeyType):
        self._KeyType = KeyType

    @property
    def KeyPrompt(self):
        r"""<p>补充提取字段的描述。</p>
        :rtype: str
        """
        return self._KeyPrompt

    @KeyPrompt.setter
    def KeyPrompt(self, KeyPrompt):
        self._KeyPrompt = KeyPrompt

    @property
    def SubItems(self):
        r"""<p>嵌套SchemaList结构，最多支持嵌套三层。注：仅当KeyType=1时生效。</p>
        :rtype: list of SchemaList
        """
        return self._SubItems

    @SubItems.setter
    def SubItems(self, SubItems):
        self._SubItems = SubItems


    def _deserialize(self, params):
        self._KeyName = params.get("KeyName")
        self._KeyType = params.get("KeyType")
        self._KeyPrompt = params.get("KeyPrompt")
        if params.get("SubItems") is not None:
            self._SubItems = []
            for item in params.get("SubItems"):
                obj = SchemaList()
                obj._deserialize(item)
                self._SubItems.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class SealInfo(AbstractModel):
    r"""印章信息

    """

    def __init__(self):
        r"""
        :param _SealBody: 印章主体内容
        :type SealBody: str
        :param _Location: 印章坐标
        :type Location: :class:`tencentcloud.ocr.v20181119.models.Rect`
        :param _OtherTexts: 印章其它文本内容
        :type OtherTexts: list of str
        :param _SealShape: 印章类型，表示为:
圆形印章：0
椭圆形印章：1
方形印章：2
菱形印章：3
三角形印章：4
        :type SealShape: str
        """
        self._SealBody = None
        self._Location = None
        self._OtherTexts = None
        self._SealShape = None

    @property
    def SealBody(self):
        r"""印章主体内容
        :rtype: str
        """
        return self._SealBody

    @SealBody.setter
    def SealBody(self, SealBody):
        self._SealBody = SealBody

    @property
    def Location(self):
        r"""印章坐标
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Rect`
        """
        return self._Location

    @Location.setter
    def Location(self, Location):
        self._Location = Location

    @property
    def OtherTexts(self):
        r"""印章其它文本内容
        :rtype: list of str
        """
        return self._OtherTexts

    @OtherTexts.setter
    def OtherTexts(self, OtherTexts):
        self._OtherTexts = OtherTexts

    @property
    def SealShape(self):
        r"""印章类型，表示为:
圆形印章：0
椭圆形印章：1
方形印章：2
菱形印章：3
三角形印章：4
        :rtype: str
        """
        return self._SealShape

    @SealShape.setter
    def SealShape(self, SealShape):
        self._SealShape = SealShape


    def _deserialize(self, params):
        self._SealBody = params.get("SealBody")
        if params.get("Location") is not None:
            self._Location = Rect()
            self._Location._deserialize(params.get("Location"))
        self._OtherTexts = params.get("OtherTexts")
        self._SealShape = params.get("SealShape")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class SealOCRRequest(AbstractModel):
    r"""SealOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。建议卡片部分占据图片2/3以上。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。建议卡片部分占据图片2/3以上。图片下载时间不超过 3 秒。建议图片存储于腾讯云，可保障更高的下载速度和稳定性。
        :type ImageUrl: str
        :param _EnablePdf: 是否开启PDF识别，默认值为true，开启后可同时支持图片和PDF的识别。
        :type EnablePdf: bool
        :param _PdfPageNumber: 需要识别的PDF页面的对应页码，传入时仅支持PDF单页识别，当上传文件为PDF且EnablePdf参数值为true时有效，默认值为1。
        :type PdfPageNumber: int
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._EnablePdf = None
        self._PdfPageNumber = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。建议卡片部分占据图片2/3以上。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。要求图片经Base64编码后不超过 10M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。建议卡片部分占据图片2/3以上。图片下载时间不超过 3 秒。建议图片存储于腾讯云，可保障更高的下载速度和稳定性。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def EnablePdf(self):
        r"""是否开启PDF识别，默认值为true，开启后可同时支持图片和PDF的识别。
        :rtype: bool
        """
        return self._EnablePdf

    @EnablePdf.setter
    def EnablePdf(self, EnablePdf):
        self._EnablePdf = EnablePdf

    @property
    def PdfPageNumber(self):
        r"""需要识别的PDF页面的对应页码，传入时仅支持PDF单页识别，当上传文件为PDF且EnablePdf参数值为true时有效，默认值为1。
        :rtype: int
        """
        return self._PdfPageNumber

    @PdfPageNumber.setter
    def PdfPageNumber(self, PdfPageNumber):
        self._PdfPageNumber = PdfPageNumber


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._EnablePdf = params.get("EnablePdf")
        self._PdfPageNumber = params.get("PdfPageNumber")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class SealOCRResponse(AbstractModel):
    r"""SealOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _SealBody: 印章内容
        :type SealBody: str
        :param _Location: 印章坐标
        :type Location: :class:`tencentcloud.ocr.v20181119.models.Rect`
        :param _OtherTexts: 其它文本内容
        :type OtherTexts: list of str
        :param _SealInfos: 全部印章信息
        :type SealInfos: list of SealInfo
        :param _SealShape: 印章类型，表示为：
圆形印章：0
椭圆形印章：1
方形印章：2
菱形印章：3
三角形印章：4
        :type SealShape: str
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._SealBody = None
        self._Location = None
        self._OtherTexts = None
        self._SealInfos = None
        self._SealShape = None
        self._RequestId = None

    @property
    def SealBody(self):
        r"""印章内容
        :rtype: str
        """
        return self._SealBody

    @SealBody.setter
    def SealBody(self, SealBody):
        self._SealBody = SealBody

    @property
    def Location(self):
        r"""印章坐标
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Rect`
        """
        return self._Location

    @Location.setter
    def Location(self, Location):
        self._Location = Location

    @property
    def OtherTexts(self):
        r"""其它文本内容
        :rtype: list of str
        """
        return self._OtherTexts

    @OtherTexts.setter
    def OtherTexts(self, OtherTexts):
        self._OtherTexts = OtherTexts

    @property
    def SealInfos(self):
        r"""全部印章信息
        :rtype: list of SealInfo
        """
        return self._SealInfos

    @SealInfos.setter
    def SealInfos(self, SealInfos):
        self._SealInfos = SealInfos

    @property
    def SealShape(self):
        r"""印章类型，表示为：
圆形印章：0
椭圆形印章：1
方形印章：2
菱形印章：3
三角形印章：4
        :rtype: str
        """
        return self._SealShape

    @SealShape.setter
    def SealShape(self, SealShape):
        self._SealShape = SealShape

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._SealBody = params.get("SealBody")
        if params.get("Location") is not None:
            self._Location = Rect()
            self._Location._deserialize(params.get("Location"))
        self._OtherTexts = params.get("OtherTexts")
        if params.get("SealInfos") is not None:
            self._SealInfos = []
            for item in params.get("SealInfos"):
                obj = SealInfo()
                obj._deserialize(item)
                self._SealInfos.append(obj)
        self._SealShape = params.get("SealShape")
        self._RequestId = params.get("RequestId")


class ShippingInvoice(AbstractModel):
    r"""轮船票

    """

    def __init__(self):
        r"""
        :param _Title: 发票名称
        :type Title: str
        :param _QRCodeMark: 是否存在二维码（1：有，0：无）
        :type QRCodeMark: int
        :param _Code: 发票代码
        :type Code: str
        :param _Number: 发票号码
        :type Number: str
        :param _UserName: 姓名
        :type UserName: str
        :param _Date: 日期
        :type Date: str
        :param _Time: 时间
        :type Time: str
        :param _StationGetOn: 出发车站
        :type StationGetOn: str
        :param _StationGetOff: 到达车站
        :type StationGetOff: str
        :param _Total: 票价
        :type Total: str
        :param _Kind: 发票消费类型
        :type Kind: str
        :param _Province: 省
        :type Province: str
        :param _City: 市
        :type City: str
        :param _CurrencyCode: 币种
        :type CurrencyCode: str
        """
        self._Title = None
        self._QRCodeMark = None
        self._Code = None
        self._Number = None
        self._UserName = None
        self._Date = None
        self._Time = None
        self._StationGetOn = None
        self._StationGetOff = None
        self._Total = None
        self._Kind = None
        self._Province = None
        self._City = None
        self._CurrencyCode = None

    @property
    def Title(self):
        r"""发票名称
        :rtype: str
        """
        return self._Title

    @Title.setter
    def Title(self, Title):
        self._Title = Title

    @property
    def QRCodeMark(self):
        r"""是否存在二维码（1：有，0：无）
        :rtype: int
        """
        return self._QRCodeMark

    @QRCodeMark.setter
    def QRCodeMark(self, QRCodeMark):
        self._QRCodeMark = QRCodeMark

    @property
    def Code(self):
        r"""发票代码
        :rtype: str
        """
        return self._Code

    @Code.setter
    def Code(self, Code):
        self._Code = Code

    @property
    def Number(self):
        r"""发票号码
        :rtype: str
        """
        return self._Number

    @Number.setter
    def Number(self, Number):
        self._Number = Number

    @property
    def UserName(self):
        r"""姓名
        :rtype: str
        """
        return self._UserName

    @UserName.setter
    def UserName(self, UserName):
        self._UserName = UserName

    @property
    def Date(self):
        r"""日期
        :rtype: str
        """
        return self._Date

    @Date.setter
    def Date(self, Date):
        self._Date = Date

    @property
    def Time(self):
        r"""时间
        :rtype: str
        """
        return self._Time

    @Time.setter
    def Time(self, Time):
        self._Time = Time

    @property
    def StationGetOn(self):
        r"""出发车站
        :rtype: str
        """
        return self._StationGetOn

    @StationGetOn.setter
    def StationGetOn(self, StationGetOn):
        self._StationGetOn = StationGetOn

    @property
    def StationGetOff(self):
        r"""到达车站
        :rtype: str
        """
        return self._StationGetOff

    @StationGetOff.setter
    def StationGetOff(self, StationGetOff):
        self._StationGetOff = StationGetOff

    @property
    def Total(self):
        r"""票价
        :rtype: str
        """
        return self._Total

    @Total.setter
    def Total(self, Total):
        self._Total = Total

    @property
    def Kind(self):
        r"""发票消费类型
        :rtype: str
        """
        return self._Kind

    @Kind.setter
    def Kind(self, Kind):
        self._Kind = Kind

    @property
    def Province(self):
        r"""省
        :rtype: str
        """
        return self._Province

    @Province.setter
    def Province(self, Province):
        self._Province = Province

    @property
    def City(self):
        r"""市
        :rtype: str
        """
        return self._City

    @City.setter
    def City(self, City):
        self._City = City

    @property
    def CurrencyCode(self):
        r"""币种
        :rtype: str
        """
        return self._CurrencyCode

    @CurrencyCode.setter
    def CurrencyCode(self, CurrencyCode):
        self._CurrencyCode = CurrencyCode


    def _deserialize(self, params):
        self._Title = params.get("Title")
        self._QRCodeMark = params.get("QRCodeMark")
        self._Code = params.get("Code")
        self._Number = params.get("Number")
        self._UserName = params.get("UserName")
        self._Date = params.get("Date")
        self._Time = params.get("Time")
        self._StationGetOn = params.get("StationGetOn")
        self._StationGetOff = params.get("StationGetOff")
        self._Total = params.get("Total")
        self._Kind = params.get("Kind")
        self._Province = params.get("Province")
        self._City = params.get("City")
        self._CurrencyCode = params.get("CurrencyCode")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ShoppingReceipt(AbstractModel):
    r"""购物小票

    """

    def __init__(self):
        r"""
        :param _Title: 发票名称
        :type Title: str
        :param _Content: 识别出的字段名称(关键字)
        :type Content: list of OtherInvoiceItem
        """
        self._Title = None
        self._Content = None

    @property
    def Title(self):
        r"""发票名称
        :rtype: str
        """
        return self._Title

    @Title.setter
    def Title(self, Title):
        self._Title = Title

    @property
    def Content(self):
        r"""识别出的字段名称(关键字)
        :rtype: list of OtherInvoiceItem
        """
        return self._Content

    @Content.setter
    def Content(self, Content):
        self._Content = Content


    def _deserialize(self, params):
        self._Title = params.get("Title")
        if params.get("Content") is not None:
            self._Content = []
            for item in params.get("Content"):
                obj = OtherInvoiceItem()
                obj._deserialize(item)
                self._Content.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class SingleInvoiceInfo(AbstractModel):
    r"""混贴票据中单张发票的内容

    """

    def __init__(self):
        r"""
        :param _Name: 识别出的字段名称
        :type Name: str
        :param _Value: 识别出的字段名称对应的值，也就是字段name对应的字符串结果。
        :type Value: str
        :param _Row: 字段属于第几行，用于相同字段的排版，如发票明细表格项目，普通字段使用默认值为-1，表示无列排版。
        :type Row: int
        """
        self._Name = None
        self._Value = None
        self._Row = None

    @property
    def Name(self):
        r"""识别出的字段名称
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Value(self):
        r"""识别出的字段名称对应的值，也就是字段name对应的字符串结果。
        :rtype: str
        """
        return self._Value

    @Value.setter
    def Value(self, Value):
        self._Value = Value

    @property
    def Row(self):
        r"""字段属于第几行，用于相同字段的排版，如发票明细表格项目，普通字段使用默认值为-1，表示无列排版。
        :rtype: int
        """
        return self._Row

    @Row.setter
    def Row(self, Row):
        self._Row = Row


    def _deserialize(self, params):
        self._Name = params.get("Name")
        self._Value = params.get("Value")
        self._Row = params.get("Row")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class SingleInvoiceItem(AbstractModel):
    r"""混贴票据中单张发票的内容

    """

    def __init__(self):
        r"""
        :param _VatSpecialInvoice: 增值税专用发票
注意：此字段可能返回 null，表示取不到有效值。
        :type VatSpecialInvoice: :class:`tencentcloud.ocr.v20181119.models.VatInvoiceInfo`
        :param _VatCommonInvoice: 增值税普通发票
注意：此字段可能返回 null，表示取不到有效值。
        :type VatCommonInvoice: :class:`tencentcloud.ocr.v20181119.models.VatInvoiceInfo`
        :param _VatElectronicCommonInvoice: 增值税电子普通发票
注意：此字段可能返回 null，表示取不到有效值。
        :type VatElectronicCommonInvoice: :class:`tencentcloud.ocr.v20181119.models.VatInvoiceInfo`
        :param _VatElectronicSpecialInvoice: 增值税电子专用发票
注意：此字段可能返回 null，表示取不到有效值。
        :type VatElectronicSpecialInvoice: :class:`tencentcloud.ocr.v20181119.models.VatInvoiceInfo`
        :param _VatElectronicInvoiceBlockchain: 区块链电子发票
注意：此字段可能返回 null，表示取不到有效值。
        :type VatElectronicInvoiceBlockchain: :class:`tencentcloud.ocr.v20181119.models.VatInvoiceInfo`
        :param _VatElectronicInvoiceToll: 增值税电子普通发票(通行费)
注意：此字段可能返回 null，表示取不到有效值。
        :type VatElectronicInvoiceToll: :class:`tencentcloud.ocr.v20181119.models.VatInvoiceInfo`
        :param _VatElectronicSpecialInvoiceFull: 电子发票(专用发票)
注意：此字段可能返回 null，表示取不到有效值。
        :type VatElectronicSpecialInvoiceFull: :class:`tencentcloud.ocr.v20181119.models.VatElectronicInfo`
        :param _VatElectronicInvoiceFull: 电子发票(普通发票)
注意：此字段可能返回 null，表示取不到有效值。
        :type VatElectronicInvoiceFull: :class:`tencentcloud.ocr.v20181119.models.VatElectronicInfo`
        :param _MachinePrintedInvoice: 通用机打发票
注意：此字段可能返回 null，表示取不到有效值。
        :type MachinePrintedInvoice: :class:`tencentcloud.ocr.v20181119.models.MachinePrintedInvoice`
        :param _BusInvoice: 汽车票
注意：此字段可能返回 null，表示取不到有效值。
        :type BusInvoice: :class:`tencentcloud.ocr.v20181119.models.BusInvoice`
        :param _ShippingInvoice: 轮船票
注意：此字段可能返回 null，表示取不到有效值。
        :type ShippingInvoice: :class:`tencentcloud.ocr.v20181119.models.ShippingInvoice`
        :param _TollInvoice: 过路过桥费发票
注意：此字段可能返回 null，表示取不到有效值。
        :type TollInvoice: :class:`tencentcloud.ocr.v20181119.models.TollInvoice`
        :param _OtherInvoice: 其他发票
注意：此字段可能返回 null，表示取不到有效值。
        :type OtherInvoice: :class:`tencentcloud.ocr.v20181119.models.OtherInvoice`
        :param _MotorVehicleSaleInvoice: 机动车销售统一发票
注意：此字段可能返回 null，表示取不到有效值。
        :type MotorVehicleSaleInvoice: :class:`tencentcloud.ocr.v20181119.models.MotorVehicleSaleInvoice`
        :param _UsedCarPurchaseInvoice: 二手车销售统一发票
注意：此字段可能返回 null，表示取不到有效值。
        :type UsedCarPurchaseInvoice: :class:`tencentcloud.ocr.v20181119.models.UsedCarPurchaseInvoice`
        :param _VatInvoiceRoll: 增值税普通发票(卷票)
注意：此字段可能返回 null，表示取不到有效值。
        :type VatInvoiceRoll: :class:`tencentcloud.ocr.v20181119.models.VatInvoiceRoll`
        :param _TaxiTicket: 出租车发票
注意：此字段可能返回 null，表示取不到有效值。
        :type TaxiTicket: :class:`tencentcloud.ocr.v20181119.models.TaxiTicket`
        :param _QuotaInvoice: 定额发票
注意：此字段可能返回 null，表示取不到有效值。
        :type QuotaInvoice: :class:`tencentcloud.ocr.v20181119.models.QuotaInvoice`
        :param _AirTransport: 机票行程单
注意：此字段可能返回 null，表示取不到有效值。
        :type AirTransport: :class:`tencentcloud.ocr.v20181119.models.AirTransport`
        :param _NonTaxIncomeGeneralBill: 非税收入通用票据
注意：此字段可能返回 null，表示取不到有效值。
        :type NonTaxIncomeGeneralBill: :class:`tencentcloud.ocr.v20181119.models.NonTaxIncomeBill`
        :param _NonTaxIncomeElectronicBill: 非税收入一般缴款书(电子)
注意：此字段可能返回 null，表示取不到有效值。
        :type NonTaxIncomeElectronicBill: :class:`tencentcloud.ocr.v20181119.models.NonTaxIncomeBill`
        :param _TrainTicket: 火车票
注意：此字段可能返回 null，表示取不到有效值。
        :type TrainTicket: :class:`tencentcloud.ocr.v20181119.models.TrainTicket`
        :param _MedicalOutpatientInvoice: 医疗门诊收费票据（电子）
注意：此字段可能返回 null，表示取不到有效值。
        :type MedicalOutpatientInvoice: :class:`tencentcloud.ocr.v20181119.models.MedicalInvoice`
        :param _MedicalHospitalizedInvoice: 医疗住院收费票据（电子）
注意：此字段可能返回 null，表示取不到有效值。
        :type MedicalHospitalizedInvoice: :class:`tencentcloud.ocr.v20181119.models.MedicalInvoice`
        :param _VatSalesList: 增值税销货清单
注意：此字段可能返回 null，表示取不到有效值。
        :type VatSalesList: :class:`tencentcloud.ocr.v20181119.models.VatInvoiceInfo`
        :param _ElectronicTrainTicketFull: 电子发票（火车票）
注意：此字段可能返回 null，表示取不到有效值。
        :type ElectronicTrainTicketFull: :class:`tencentcloud.ocr.v20181119.models.ElectronicTrainTicketFull`
        :param _ElectronicFlightTicketFull: 电子发票（机票行程单）
注意：此字段可能返回 null，表示取不到有效值。
        :type ElectronicFlightTicketFull: :class:`tencentcloud.ocr.v20181119.models.ElectronicFlightTicketFull`
        :param _TaxPayment: 完税凭证
注意：此字段可能返回 null，表示取不到有效值。
        :type TaxPayment: :class:`tencentcloud.ocr.v20181119.models.TaxPayment`
        :param _CustomsPaymentReceipt: 海关缴款
注意：此字段可能返回 null，表示取不到有效值。
        :type CustomsPaymentReceipt: :class:`tencentcloud.ocr.v20181119.models.CustomsPaymentReceipt`
        :param _BankSlip: 银行回单
注意：此字段可能返回 null，表示取不到有效值。
        :type BankSlip: :class:`tencentcloud.ocr.v20181119.models.BankSlip`
        :param _OnlineTaxiItinerary: 网约车行程单
注意：此字段可能返回 null，表示取不到有效值。
        :type OnlineTaxiItinerary: :class:`tencentcloud.ocr.v20181119.models.OnlineTaxiItinerary`
        :param _CustomsDeclaration: 海关进/出口货物报关单
注意：此字段可能返回 null，表示取不到有效值。
        :type CustomsDeclaration: :class:`tencentcloud.ocr.v20181119.models.CustomsDeclaration`
        :param _OverseasInvoice: 海外发票
注意：此字段可能返回 null，表示取不到有效值。
        :type OverseasInvoice: :class:`tencentcloud.ocr.v20181119.models.OverseasInvoice`
        :param _ShoppingReceipt: 购物小票
注意：此字段可能返回 null，表示取不到有效值。
        :type ShoppingReceipt: :class:`tencentcloud.ocr.v20181119.models.ShoppingReceipt`
        :param _SaleInventory: 销货清单
注意：此字段可能返回 null，表示取不到有效值。
        :type SaleInventory: :class:`tencentcloud.ocr.v20181119.models.SaleInventory`
        :param _MotorVehicleSaleInvoiceElectronic: 机动车销售统一发票（电子）
注意：此字段可能返回 null，表示取不到有效值。
        :type MotorVehicleSaleInvoiceElectronic: :class:`tencentcloud.ocr.v20181119.models.MotorVehicleSaleInvoice`
        :param _UsedCarPurchaseInvoiceElectronic: 二手车销售统一发票（电子）
注意：此字段可能返回 null，表示取不到有效值。
        :type UsedCarPurchaseInvoiceElectronic: :class:`tencentcloud.ocr.v20181119.models.UsedCarPurchaseInvoice`
        :param _ElectronicTollSummary: 通行费电子票据汇总单
注意：此字段可能返回 null，表示取不到有效值。
        :type ElectronicTollSummary: :class:`tencentcloud.ocr.v20181119.models.ElectronicTollSummary`
        """
        self._VatSpecialInvoice = None
        self._VatCommonInvoice = None
        self._VatElectronicCommonInvoice = None
        self._VatElectronicSpecialInvoice = None
        self._VatElectronicInvoiceBlockchain = None
        self._VatElectronicInvoiceToll = None
        self._VatElectronicSpecialInvoiceFull = None
        self._VatElectronicInvoiceFull = None
        self._MachinePrintedInvoice = None
        self._BusInvoice = None
        self._ShippingInvoice = None
        self._TollInvoice = None
        self._OtherInvoice = None
        self._MotorVehicleSaleInvoice = None
        self._UsedCarPurchaseInvoice = None
        self._VatInvoiceRoll = None
        self._TaxiTicket = None
        self._QuotaInvoice = None
        self._AirTransport = None
        self._NonTaxIncomeGeneralBill = None
        self._NonTaxIncomeElectronicBill = None
        self._TrainTicket = None
        self._MedicalOutpatientInvoice = None
        self._MedicalHospitalizedInvoice = None
        self._VatSalesList = None
        self._ElectronicTrainTicketFull = None
        self._ElectronicFlightTicketFull = None
        self._TaxPayment = None
        self._CustomsPaymentReceipt = None
        self._BankSlip = None
        self._OnlineTaxiItinerary = None
        self._CustomsDeclaration = None
        self._OverseasInvoice = None
        self._ShoppingReceipt = None
        self._SaleInventory = None
        self._MotorVehicleSaleInvoiceElectronic = None
        self._UsedCarPurchaseInvoiceElectronic = None
        self._ElectronicTollSummary = None

    @property
    def VatSpecialInvoice(self):
        r"""增值税专用发票
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.VatInvoiceInfo`
        """
        return self._VatSpecialInvoice

    @VatSpecialInvoice.setter
    def VatSpecialInvoice(self, VatSpecialInvoice):
        self._VatSpecialInvoice = VatSpecialInvoice

    @property
    def VatCommonInvoice(self):
        r"""增值税普通发票
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.VatInvoiceInfo`
        """
        return self._VatCommonInvoice

    @VatCommonInvoice.setter
    def VatCommonInvoice(self, VatCommonInvoice):
        self._VatCommonInvoice = VatCommonInvoice

    @property
    def VatElectronicCommonInvoice(self):
        r"""增值税电子普通发票
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.VatInvoiceInfo`
        """
        return self._VatElectronicCommonInvoice

    @VatElectronicCommonInvoice.setter
    def VatElectronicCommonInvoice(self, VatElectronicCommonInvoice):
        self._VatElectronicCommonInvoice = VatElectronicCommonInvoice

    @property
    def VatElectronicSpecialInvoice(self):
        r"""增值税电子专用发票
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.VatInvoiceInfo`
        """
        return self._VatElectronicSpecialInvoice

    @VatElectronicSpecialInvoice.setter
    def VatElectronicSpecialInvoice(self, VatElectronicSpecialInvoice):
        self._VatElectronicSpecialInvoice = VatElectronicSpecialInvoice

    @property
    def VatElectronicInvoiceBlockchain(self):
        r"""区块链电子发票
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.VatInvoiceInfo`
        """
        return self._VatElectronicInvoiceBlockchain

    @VatElectronicInvoiceBlockchain.setter
    def VatElectronicInvoiceBlockchain(self, VatElectronicInvoiceBlockchain):
        self._VatElectronicInvoiceBlockchain = VatElectronicInvoiceBlockchain

    @property
    def VatElectronicInvoiceToll(self):
        r"""增值税电子普通发票(通行费)
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.VatInvoiceInfo`
        """
        return self._VatElectronicInvoiceToll

    @VatElectronicInvoiceToll.setter
    def VatElectronicInvoiceToll(self, VatElectronicInvoiceToll):
        self._VatElectronicInvoiceToll = VatElectronicInvoiceToll

    @property
    def VatElectronicSpecialInvoiceFull(self):
        r"""电子发票(专用发票)
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.VatElectronicInfo`
        """
        return self._VatElectronicSpecialInvoiceFull

    @VatElectronicSpecialInvoiceFull.setter
    def VatElectronicSpecialInvoiceFull(self, VatElectronicSpecialInvoiceFull):
        self._VatElectronicSpecialInvoiceFull = VatElectronicSpecialInvoiceFull

    @property
    def VatElectronicInvoiceFull(self):
        r"""电子发票(普通发票)
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.VatElectronicInfo`
        """
        return self._VatElectronicInvoiceFull

    @VatElectronicInvoiceFull.setter
    def VatElectronicInvoiceFull(self, VatElectronicInvoiceFull):
        self._VatElectronicInvoiceFull = VatElectronicInvoiceFull

    @property
    def MachinePrintedInvoice(self):
        r"""通用机打发票
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.MachinePrintedInvoice`
        """
        return self._MachinePrintedInvoice

    @MachinePrintedInvoice.setter
    def MachinePrintedInvoice(self, MachinePrintedInvoice):
        self._MachinePrintedInvoice = MachinePrintedInvoice

    @property
    def BusInvoice(self):
        r"""汽车票
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.BusInvoice`
        """
        return self._BusInvoice

    @BusInvoice.setter
    def BusInvoice(self, BusInvoice):
        self._BusInvoice = BusInvoice

    @property
    def ShippingInvoice(self):
        r"""轮船票
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ShippingInvoice`
        """
        return self._ShippingInvoice

    @ShippingInvoice.setter
    def ShippingInvoice(self, ShippingInvoice):
        self._ShippingInvoice = ShippingInvoice

    @property
    def TollInvoice(self):
        r"""过路过桥费发票
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.TollInvoice`
        """
        return self._TollInvoice

    @TollInvoice.setter
    def TollInvoice(self, TollInvoice):
        self._TollInvoice = TollInvoice

    @property
    def OtherInvoice(self):
        r"""其他发票
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.OtherInvoice`
        """
        return self._OtherInvoice

    @OtherInvoice.setter
    def OtherInvoice(self, OtherInvoice):
        self._OtherInvoice = OtherInvoice

    @property
    def MotorVehicleSaleInvoice(self):
        r"""机动车销售统一发票
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.MotorVehicleSaleInvoice`
        """
        return self._MotorVehicleSaleInvoice

    @MotorVehicleSaleInvoice.setter
    def MotorVehicleSaleInvoice(self, MotorVehicleSaleInvoice):
        self._MotorVehicleSaleInvoice = MotorVehicleSaleInvoice

    @property
    def UsedCarPurchaseInvoice(self):
        r"""二手车销售统一发票
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.UsedCarPurchaseInvoice`
        """
        return self._UsedCarPurchaseInvoice

    @UsedCarPurchaseInvoice.setter
    def UsedCarPurchaseInvoice(self, UsedCarPurchaseInvoice):
        self._UsedCarPurchaseInvoice = UsedCarPurchaseInvoice

    @property
    def VatInvoiceRoll(self):
        r"""增值税普通发票(卷票)
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.VatInvoiceRoll`
        """
        return self._VatInvoiceRoll

    @VatInvoiceRoll.setter
    def VatInvoiceRoll(self, VatInvoiceRoll):
        self._VatInvoiceRoll = VatInvoiceRoll

    @property
    def TaxiTicket(self):
        r"""出租车发票
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.TaxiTicket`
        """
        return self._TaxiTicket

    @TaxiTicket.setter
    def TaxiTicket(self, TaxiTicket):
        self._TaxiTicket = TaxiTicket

    @property
    def QuotaInvoice(self):
        r"""定额发票
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.QuotaInvoice`
        """
        return self._QuotaInvoice

    @QuotaInvoice.setter
    def QuotaInvoice(self, QuotaInvoice):
        self._QuotaInvoice = QuotaInvoice

    @property
    def AirTransport(self):
        r"""机票行程单
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.AirTransport`
        """
        return self._AirTransport

    @AirTransport.setter
    def AirTransport(self, AirTransport):
        self._AirTransport = AirTransport

    @property
    def NonTaxIncomeGeneralBill(self):
        r"""非税收入通用票据
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.NonTaxIncomeBill`
        """
        return self._NonTaxIncomeGeneralBill

    @NonTaxIncomeGeneralBill.setter
    def NonTaxIncomeGeneralBill(self, NonTaxIncomeGeneralBill):
        self._NonTaxIncomeGeneralBill = NonTaxIncomeGeneralBill

    @property
    def NonTaxIncomeElectronicBill(self):
        r"""非税收入一般缴款书(电子)
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.NonTaxIncomeBill`
        """
        return self._NonTaxIncomeElectronicBill

    @NonTaxIncomeElectronicBill.setter
    def NonTaxIncomeElectronicBill(self, NonTaxIncomeElectronicBill):
        self._NonTaxIncomeElectronicBill = NonTaxIncomeElectronicBill

    @property
    def TrainTicket(self):
        r"""火车票
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.TrainTicket`
        """
        return self._TrainTicket

    @TrainTicket.setter
    def TrainTicket(self, TrainTicket):
        self._TrainTicket = TrainTicket

    @property
    def MedicalOutpatientInvoice(self):
        r"""医疗门诊收费票据（电子）
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.MedicalInvoice`
        """
        return self._MedicalOutpatientInvoice

    @MedicalOutpatientInvoice.setter
    def MedicalOutpatientInvoice(self, MedicalOutpatientInvoice):
        self._MedicalOutpatientInvoice = MedicalOutpatientInvoice

    @property
    def MedicalHospitalizedInvoice(self):
        r"""医疗住院收费票据（电子）
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.MedicalInvoice`
        """
        return self._MedicalHospitalizedInvoice

    @MedicalHospitalizedInvoice.setter
    def MedicalHospitalizedInvoice(self, MedicalHospitalizedInvoice):
        self._MedicalHospitalizedInvoice = MedicalHospitalizedInvoice

    @property
    def VatSalesList(self):
        r"""增值税销货清单
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.VatInvoiceInfo`
        """
        return self._VatSalesList

    @VatSalesList.setter
    def VatSalesList(self, VatSalesList):
        self._VatSalesList = VatSalesList

    @property
    def ElectronicTrainTicketFull(self):
        r"""电子发票（火车票）
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ElectronicTrainTicketFull`
        """
        return self._ElectronicTrainTicketFull

    @ElectronicTrainTicketFull.setter
    def ElectronicTrainTicketFull(self, ElectronicTrainTicketFull):
        self._ElectronicTrainTicketFull = ElectronicTrainTicketFull

    @property
    def ElectronicFlightTicketFull(self):
        r"""电子发票（机票行程单）
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ElectronicFlightTicketFull`
        """
        return self._ElectronicFlightTicketFull

    @ElectronicFlightTicketFull.setter
    def ElectronicFlightTicketFull(self, ElectronicFlightTicketFull):
        self._ElectronicFlightTicketFull = ElectronicFlightTicketFull

    @property
    def TaxPayment(self):
        r"""完税凭证
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.TaxPayment`
        """
        return self._TaxPayment

    @TaxPayment.setter
    def TaxPayment(self, TaxPayment):
        self._TaxPayment = TaxPayment

    @property
    def CustomsPaymentReceipt(self):
        r"""海关缴款
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.CustomsPaymentReceipt`
        """
        return self._CustomsPaymentReceipt

    @CustomsPaymentReceipt.setter
    def CustomsPaymentReceipt(self, CustomsPaymentReceipt):
        self._CustomsPaymentReceipt = CustomsPaymentReceipt

    @property
    def BankSlip(self):
        r"""银行回单
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.BankSlip`
        """
        return self._BankSlip

    @BankSlip.setter
    def BankSlip(self, BankSlip):
        self._BankSlip = BankSlip

    @property
    def OnlineTaxiItinerary(self):
        r"""网约车行程单
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.OnlineTaxiItinerary`
        """
        return self._OnlineTaxiItinerary

    @OnlineTaxiItinerary.setter
    def OnlineTaxiItinerary(self, OnlineTaxiItinerary):
        self._OnlineTaxiItinerary = OnlineTaxiItinerary

    @property
    def CustomsDeclaration(self):
        r"""海关进/出口货物报关单
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.CustomsDeclaration`
        """
        return self._CustomsDeclaration

    @CustomsDeclaration.setter
    def CustomsDeclaration(self, CustomsDeclaration):
        self._CustomsDeclaration = CustomsDeclaration

    @property
    def OverseasInvoice(self):
        r"""海外发票
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.OverseasInvoice`
        """
        return self._OverseasInvoice

    @OverseasInvoice.setter
    def OverseasInvoice(self, OverseasInvoice):
        self._OverseasInvoice = OverseasInvoice

    @property
    def ShoppingReceipt(self):
        r"""购物小票
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ShoppingReceipt`
        """
        return self._ShoppingReceipt

    @ShoppingReceipt.setter
    def ShoppingReceipt(self, ShoppingReceipt):
        self._ShoppingReceipt = ShoppingReceipt

    @property
    def SaleInventory(self):
        r"""销货清单
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.SaleInventory`
        """
        return self._SaleInventory

    @SaleInventory.setter
    def SaleInventory(self, SaleInventory):
        self._SaleInventory = SaleInventory

    @property
    def MotorVehicleSaleInvoiceElectronic(self):
        r"""机动车销售统一发票（电子）
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.MotorVehicleSaleInvoice`
        """
        return self._MotorVehicleSaleInvoiceElectronic

    @MotorVehicleSaleInvoiceElectronic.setter
    def MotorVehicleSaleInvoiceElectronic(self, MotorVehicleSaleInvoiceElectronic):
        self._MotorVehicleSaleInvoiceElectronic = MotorVehicleSaleInvoiceElectronic

    @property
    def UsedCarPurchaseInvoiceElectronic(self):
        r"""二手车销售统一发票（电子）
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.UsedCarPurchaseInvoice`
        """
        return self._UsedCarPurchaseInvoiceElectronic

    @UsedCarPurchaseInvoiceElectronic.setter
    def UsedCarPurchaseInvoiceElectronic(self, UsedCarPurchaseInvoiceElectronic):
        self._UsedCarPurchaseInvoiceElectronic = UsedCarPurchaseInvoiceElectronic

    @property
    def ElectronicTollSummary(self):
        r"""通行费电子票据汇总单
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ElectronicTollSummary`
        """
        return self._ElectronicTollSummary

    @ElectronicTollSummary.setter
    def ElectronicTollSummary(self, ElectronicTollSummary):
        self._ElectronicTollSummary = ElectronicTollSummary


    def _deserialize(self, params):
        if params.get("VatSpecialInvoice") is not None:
            self._VatSpecialInvoice = VatInvoiceInfo()
            self._VatSpecialInvoice._deserialize(params.get("VatSpecialInvoice"))
        if params.get("VatCommonInvoice") is not None:
            self._VatCommonInvoice = VatInvoiceInfo()
            self._VatCommonInvoice._deserialize(params.get("VatCommonInvoice"))
        if params.get("VatElectronicCommonInvoice") is not None:
            self._VatElectronicCommonInvoice = VatInvoiceInfo()
            self._VatElectronicCommonInvoice._deserialize(params.get("VatElectronicCommonInvoice"))
        if params.get("VatElectronicSpecialInvoice") is not None:
            self._VatElectronicSpecialInvoice = VatInvoiceInfo()
            self._VatElectronicSpecialInvoice._deserialize(params.get("VatElectronicSpecialInvoice"))
        if params.get("VatElectronicInvoiceBlockchain") is not None:
            self._VatElectronicInvoiceBlockchain = VatInvoiceInfo()
            self._VatElectronicInvoiceBlockchain._deserialize(params.get("VatElectronicInvoiceBlockchain"))
        if params.get("VatElectronicInvoiceToll") is not None:
            self._VatElectronicInvoiceToll = VatInvoiceInfo()
            self._VatElectronicInvoiceToll._deserialize(params.get("VatElectronicInvoiceToll"))
        if params.get("VatElectronicSpecialInvoiceFull") is not None:
            self._VatElectronicSpecialInvoiceFull = VatElectronicInfo()
            self._VatElectronicSpecialInvoiceFull._deserialize(params.get("VatElectronicSpecialInvoiceFull"))
        if params.get("VatElectronicInvoiceFull") is not None:
            self._VatElectronicInvoiceFull = VatElectronicInfo()
            self._VatElectronicInvoiceFull._deserialize(params.get("VatElectronicInvoiceFull"))
        if params.get("MachinePrintedInvoice") is not None:
            self._MachinePrintedInvoice = MachinePrintedInvoice()
            self._MachinePrintedInvoice._deserialize(params.get("MachinePrintedInvoice"))
        if params.get("BusInvoice") is not None:
            self._BusInvoice = BusInvoice()
            self._BusInvoice._deserialize(params.get("BusInvoice"))
        if params.get("ShippingInvoice") is not None:
            self._ShippingInvoice = ShippingInvoice()
            self._ShippingInvoice._deserialize(params.get("ShippingInvoice"))
        if params.get("TollInvoice") is not None:
            self._TollInvoice = TollInvoice()
            self._TollInvoice._deserialize(params.get("TollInvoice"))
        if params.get("OtherInvoice") is not None:
            self._OtherInvoice = OtherInvoice()
            self._OtherInvoice._deserialize(params.get("OtherInvoice"))
        if params.get("MotorVehicleSaleInvoice") is not None:
            self._MotorVehicleSaleInvoice = MotorVehicleSaleInvoice()
            self._MotorVehicleSaleInvoice._deserialize(params.get("MotorVehicleSaleInvoice"))
        if params.get("UsedCarPurchaseInvoice") is not None:
            self._UsedCarPurchaseInvoice = UsedCarPurchaseInvoice()
            self._UsedCarPurchaseInvoice._deserialize(params.get("UsedCarPurchaseInvoice"))
        if params.get("VatInvoiceRoll") is not None:
            self._VatInvoiceRoll = VatInvoiceRoll()
            self._VatInvoiceRoll._deserialize(params.get("VatInvoiceRoll"))
        if params.get("TaxiTicket") is not None:
            self._TaxiTicket = TaxiTicket()
            self._TaxiTicket._deserialize(params.get("TaxiTicket"))
        if params.get("QuotaInvoice") is not None:
            self._QuotaInvoice = QuotaInvoice()
            self._QuotaInvoice._deserialize(params.get("QuotaInvoice"))
        if params.get("AirTransport") is not None:
            self._AirTransport = AirTransport()
            self._AirTransport._deserialize(params.get("AirTransport"))
        if params.get("NonTaxIncomeGeneralBill") is not None:
            self._NonTaxIncomeGeneralBill = NonTaxIncomeBill()
            self._NonTaxIncomeGeneralBill._deserialize(params.get("NonTaxIncomeGeneralBill"))
        if params.get("NonTaxIncomeElectronicBill") is not None:
            self._NonTaxIncomeElectronicBill = NonTaxIncomeBill()
            self._NonTaxIncomeElectronicBill._deserialize(params.get("NonTaxIncomeElectronicBill"))
        if params.get("TrainTicket") is not None:
            self._TrainTicket = TrainTicket()
            self._TrainTicket._deserialize(params.get("TrainTicket"))
        if params.get("MedicalOutpatientInvoice") is not None:
            self._MedicalOutpatientInvoice = MedicalInvoice()
            self._MedicalOutpatientInvoice._deserialize(params.get("MedicalOutpatientInvoice"))
        if params.get("MedicalHospitalizedInvoice") is not None:
            self._MedicalHospitalizedInvoice = MedicalInvoice()
            self._MedicalHospitalizedInvoice._deserialize(params.get("MedicalHospitalizedInvoice"))
        if params.get("VatSalesList") is not None:
            self._VatSalesList = VatInvoiceInfo()
            self._VatSalesList._deserialize(params.get("VatSalesList"))
        if params.get("ElectronicTrainTicketFull") is not None:
            self._ElectronicTrainTicketFull = ElectronicTrainTicketFull()
            self._ElectronicTrainTicketFull._deserialize(params.get("ElectronicTrainTicketFull"))
        if params.get("ElectronicFlightTicketFull") is not None:
            self._ElectronicFlightTicketFull = ElectronicFlightTicketFull()
            self._ElectronicFlightTicketFull._deserialize(params.get("ElectronicFlightTicketFull"))
        if params.get("TaxPayment") is not None:
            self._TaxPayment = TaxPayment()
            self._TaxPayment._deserialize(params.get("TaxPayment"))
        if params.get("CustomsPaymentReceipt") is not None:
            self._CustomsPaymentReceipt = CustomsPaymentReceipt()
            self._CustomsPaymentReceipt._deserialize(params.get("CustomsPaymentReceipt"))
        if params.get("BankSlip") is not None:
            self._BankSlip = BankSlip()
            self._BankSlip._deserialize(params.get("BankSlip"))
        if params.get("OnlineTaxiItinerary") is not None:
            self._OnlineTaxiItinerary = OnlineTaxiItinerary()
            self._OnlineTaxiItinerary._deserialize(params.get("OnlineTaxiItinerary"))
        if params.get("CustomsDeclaration") is not None:
            self._CustomsDeclaration = CustomsDeclaration()
            self._CustomsDeclaration._deserialize(params.get("CustomsDeclaration"))
        if params.get("OverseasInvoice") is not None:
            self._OverseasInvoice = OverseasInvoice()
            self._OverseasInvoice._deserialize(params.get("OverseasInvoice"))
        if params.get("ShoppingReceipt") is not None:
            self._ShoppingReceipt = ShoppingReceipt()
            self._ShoppingReceipt._deserialize(params.get("ShoppingReceipt"))
        if params.get("SaleInventory") is not None:
            self._SaleInventory = SaleInventory()
            self._SaleInventory._deserialize(params.get("SaleInventory"))
        if params.get("MotorVehicleSaleInvoiceElectronic") is not None:
            self._MotorVehicleSaleInvoiceElectronic = MotorVehicleSaleInvoice()
            self._MotorVehicleSaleInvoiceElectronic._deserialize(params.get("MotorVehicleSaleInvoiceElectronic"))
        if params.get("UsedCarPurchaseInvoiceElectronic") is not None:
            self._UsedCarPurchaseInvoiceElectronic = UsedCarPurchaseInvoice()
            self._UsedCarPurchaseInvoiceElectronic._deserialize(params.get("UsedCarPurchaseInvoiceElectronic"))
        if params.get("ElectronicTollSummary") is not None:
            self._ElectronicTollSummary = ElectronicTollSummary()
            self._ElectronicTollSummary._deserialize(params.get("ElectronicTollSummary"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class SmartStructuralOCRRequest(AbstractModel):
    r"""SmartStructuralOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageUrl: 图片的 Url 地址。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经 Base64 编码后不超过 7M。图片下载时间不超过 3 秒。
图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。
非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        :param _ImageBase64: 图片的 Base64 值。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经Base64编码后不超过 7M。图片下载时间不超过 3 秒。
图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ItemNames: 自定义结构化功能需返回的字段名称，例：
若客户只想返回姓名、性别两个字段的识别结果，则输入
ItemNames=["姓名","性别"]
        :type ItemNames: list of str
        :param _IsPdf: 是否开启PDF识别，默认值为false，开启后可同时支持图片和PDF的识别。
        :type IsPdf: bool
        :param _PdfPageNumber: 需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :type PdfPageNumber: int
        :param _ReturnFullText: 是否开启全文字段识别，默认值为false，开启后可返回全文字段识别结果。
        :type ReturnFullText: bool
        """
        self._ImageUrl = None
        self._ImageBase64 = None
        self._ItemNames = None
        self._IsPdf = None
        self._PdfPageNumber = None
        self._ReturnFullText = None

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经 Base64 编码后不超过 7M。图片下载时间不超过 3 秒。
图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。
非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经Base64编码后不超过 7M。图片下载时间不超过 3 秒。
图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ItemNames(self):
        r"""自定义结构化功能需返回的字段名称，例：
若客户只想返回姓名、性别两个字段的识别结果，则输入
ItemNames=["姓名","性别"]
        :rtype: list of str
        """
        return self._ItemNames

    @ItemNames.setter
    def ItemNames(self, ItemNames):
        self._ItemNames = ItemNames

    @property
    def IsPdf(self):
        r"""是否开启PDF识别，默认值为false，开启后可同时支持图片和PDF的识别。
        :rtype: bool
        """
        return self._IsPdf

    @IsPdf.setter
    def IsPdf(self, IsPdf):
        self._IsPdf = IsPdf

    @property
    def PdfPageNumber(self):
        r"""需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :rtype: int
        """
        return self._PdfPageNumber

    @PdfPageNumber.setter
    def PdfPageNumber(self, PdfPageNumber):
        self._PdfPageNumber = PdfPageNumber

    @property
    def ReturnFullText(self):
        r"""是否开启全文字段识别，默认值为false，开启后可返回全文字段识别结果。
        :rtype: bool
        """
        return self._ReturnFullText

    @ReturnFullText.setter
    def ReturnFullText(self, ReturnFullText):
        self._ReturnFullText = ReturnFullText


    def _deserialize(self, params):
        self._ImageUrl = params.get("ImageUrl")
        self._ImageBase64 = params.get("ImageBase64")
        self._ItemNames = params.get("ItemNames")
        self._IsPdf = params.get("IsPdf")
        self._PdfPageNumber = params.get("PdfPageNumber")
        self._ReturnFullText = params.get("ReturnFullText")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class SmartStructuralOCRResponse(AbstractModel):
    r"""SmartStructuralOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Angle: 图片旋转角度(角度制)，文本的水平方向
为 0；顺时针为正，逆时针为负
        :type Angle: float
        :param _StructuralItems: 识别信息
        :type StructuralItems: list of StructuralItem
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Angle = None
        self._StructuralItems = None
        self._RequestId = None

    @property
    def Angle(self):
        r"""图片旋转角度(角度制)，文本的水平方向
为 0；顺时针为正，逆时针为负
        :rtype: float
        """
        return self._Angle

    @Angle.setter
    def Angle(self, Angle):
        self._Angle = Angle

    @property
    def StructuralItems(self):
        r"""识别信息
        :rtype: list of StructuralItem
        """
        return self._StructuralItems

    @StructuralItems.setter
    def StructuralItems(self, StructuralItems):
        self._StructuralItems = StructuralItems

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._Angle = params.get("Angle")
        if params.get("StructuralItems") is not None:
            self._StructuralItems = []
            for item in params.get("StructuralItems"):
                obj = StructuralItem()
                obj._deserialize(item)
                self._StructuralItems.append(obj)
        self._RequestId = params.get("RequestId")


class StoreInfo(AbstractModel):
    r"""门头照识别结果

    """

    def __init__(self):
        r"""
        :param _Name: 识别出的字段名称(关键字)，如商店名称
        :type Name: str
        :param _Value: 识别出的字段名称对应的值，也就是字段Name对应的字符串结果。
        :type Value: str
        :param _Rect: 文本行在旋转纠正之后的图像中的像素坐标
        :type Rect: :class:`tencentcloud.ocr.v20181119.models.Rect`
        """
        self._Name = None
        self._Value = None
        self._Rect = None

    @property
    def Name(self):
        r"""识别出的字段名称(关键字)，如商店名称
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Value(self):
        r"""识别出的字段名称对应的值，也就是字段Name对应的字符串结果。
        :rtype: str
        """
        return self._Value

    @Value.setter
    def Value(self, Value):
        self._Value = Value

    @property
    def Rect(self):
        r"""文本行在旋转纠正之后的图像中的像素坐标
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Rect`
        """
        return self._Rect

    @Rect.setter
    def Rect(self, Rect):
        self._Rect = Rect


    def _deserialize(self, params):
        self._Name = params.get("Name")
        self._Value = params.get("Value")
        if params.get("Rect") is not None:
            self._Rect = Rect()
            self._Rect._deserialize(params.get("Rect"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class StructuralItem(AbstractModel):
    r"""文档智能识别

    """

    def __init__(self):
        r"""
        :param _Name: 识别出的字段名称(关键字)。
        :type Name: str
        :param _Value: 识别出的字段名称对应的值。
        :type Value: str
        :param _Confidence: 置信度 0 ~100。
        :type Confidence: int
        :param _ItemCoord: 文本行在旋转纠正之后的图像中的像素
坐标。
        :type ItemCoord: :class:`tencentcloud.ocr.v20181119.models.ItemCoord`
        :param _Row: 字段所在行号，下标从0开始，非行字段或未能识别行号的该值返回-1。
        :type Row: int
        """
        self._Name = None
        self._Value = None
        self._Confidence = None
        self._ItemCoord = None
        self._Row = None

    @property
    def Name(self):
        r"""识别出的字段名称(关键字)。
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Value(self):
        r"""识别出的字段名称对应的值。
        :rtype: str
        """
        return self._Value

    @Value.setter
    def Value(self, Value):
        self._Value = Value

    @property
    def Confidence(self):
        r"""置信度 0 ~100。
        :rtype: int
        """
        return self._Confidence

    @Confidence.setter
    def Confidence(self, Confidence):
        self._Confidence = Confidence

    @property
    def ItemCoord(self):
        r"""文本行在旋转纠正之后的图像中的像素
坐标。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ItemCoord`
        """
        return self._ItemCoord

    @ItemCoord.setter
    def ItemCoord(self, ItemCoord):
        self._ItemCoord = ItemCoord

    @property
    def Row(self):
        r"""字段所在行号，下标从0开始，非行字段或未能识别行号的该值返回-1。
        :rtype: int
        """
        return self._Row

    @Row.setter
    def Row(self, Row):
        self._Row = Row


    def _deserialize(self, params):
        self._Name = params.get("Name")
        self._Value = params.get("Value")
        self._Confidence = params.get("Confidence")
        if params.get("ItemCoord") is not None:
            self._ItemCoord = ItemCoord()
            self._ItemCoord._deserialize(params.get("ItemCoord"))
        self._Row = params.get("Row")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class SubItemGroup(AbstractModel):
    r"""用于分层展示抽取出的信息

    """

    def __init__(self):
        r"""
        :param _Groups: <p>子结构嵌套FieldsInfo结构</p>
        :type Groups: list of FieldsInfo
        """
        self._Groups = None

    @property
    def Groups(self):
        r"""<p>子结构嵌套FieldsInfo结构</p>
        :rtype: list of FieldsInfo
        """
        return self._Groups

    @Groups.setter
    def Groups(self, Groups):
        self._Groups = Groups


    def _deserialize(self, params):
        if params.get("Groups") is not None:
            self._Groups = []
            for item in params.get("Groups"):
                obj = FieldsInfo()
                obj._deserialize(item)
                self._Groups.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class SubmitExtractDocAgentJobRequest(AbstractModel):
    r"""SubmitExtractDocAgentJob请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: <p>图片/PDF的 Base64 值。要求Base64不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。</p>
        :type ImageBase64: str
        :param _ImageUrl: <p>图片/PDF的 Url 地址。要求图片经Base64编码后不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。</p>
        :type ImageUrl: str
        :param _PdfPageNumber: <p>需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为前5页。</p>
        :type PdfPageNumber: int
        :param _ItemNames: <p>自定义抽取需要的字段名称、字段类型、字段提示词。</p>
        :type ItemNames: list of ItemNames
        :param _EnableCoord: <p>是否需要返回坐标，默认false。</p>
        :type EnableCoord: bool
        :param _FileStartPageNumber: <p>起始页</p>
        :type FileStartPageNumber: int
        :param _FileEndPageNumber: <p>结束页</p>
        :type FileEndPageNumber: int
        :param _ModelConfig: <p>model_hunyuan:选择混元底座视觉大模型精调抽取任务  model_youtu：选择优图底座多模态大模型精调抽取任务</p>
        :type ModelConfig: str
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._PdfPageNumber = None
        self._ItemNames = None
        self._EnableCoord = None
        self._FileStartPageNumber = None
        self._FileEndPageNumber = None
        self._ModelConfig = None

    @property
    def ImageBase64(self):
        r"""<p>图片/PDF的 Base64 值。要求Base64不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。</p>
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""<p>图片/PDF的 Url 地址。要求图片经Base64编码后不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。</p>
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def PdfPageNumber(self):
        warnings.warn("parameter `PdfPageNumber` is deprecated", DeprecationWarning) 

        r"""<p>需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为前5页。</p>
        :rtype: int
        """
        return self._PdfPageNumber

    @PdfPageNumber.setter
    def PdfPageNumber(self, PdfPageNumber):
        warnings.warn("parameter `PdfPageNumber` is deprecated", DeprecationWarning) 

        self._PdfPageNumber = PdfPageNumber

    @property
    def ItemNames(self):
        r"""<p>自定义抽取需要的字段名称、字段类型、字段提示词。</p>
        :rtype: list of ItemNames
        """
        return self._ItemNames

    @ItemNames.setter
    def ItemNames(self, ItemNames):
        self._ItemNames = ItemNames

    @property
    def EnableCoord(self):
        r"""<p>是否需要返回坐标，默认false。</p>
        :rtype: bool
        """
        return self._EnableCoord

    @EnableCoord.setter
    def EnableCoord(self, EnableCoord):
        self._EnableCoord = EnableCoord

    @property
    def FileStartPageNumber(self):
        r"""<p>起始页</p>
        :rtype: int
        """
        return self._FileStartPageNumber

    @FileStartPageNumber.setter
    def FileStartPageNumber(self, FileStartPageNumber):
        self._FileStartPageNumber = FileStartPageNumber

    @property
    def FileEndPageNumber(self):
        r"""<p>结束页</p>
        :rtype: int
        """
        return self._FileEndPageNumber

    @FileEndPageNumber.setter
    def FileEndPageNumber(self, FileEndPageNumber):
        self._FileEndPageNumber = FileEndPageNumber

    @property
    def ModelConfig(self):
        r"""<p>model_hunyuan:选择混元底座视觉大模型精调抽取任务  model_youtu：选择优图底座多模态大模型精调抽取任务</p>
        :rtype: str
        """
        return self._ModelConfig

    @ModelConfig.setter
    def ModelConfig(self, ModelConfig):
        self._ModelConfig = ModelConfig


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._PdfPageNumber = params.get("PdfPageNumber")
        if params.get("ItemNames") is not None:
            self._ItemNames = []
            for item in params.get("ItemNames"):
                obj = ItemNames()
                obj._deserialize(item)
                self._ItemNames.append(obj)
        self._EnableCoord = params.get("EnableCoord")
        self._FileStartPageNumber = params.get("FileStartPageNumber")
        self._FileEndPageNumber = params.get("FileEndPageNumber")
        self._ModelConfig = params.get("ModelConfig")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class SubmitExtractDocAgentJobResponse(AbstractModel):
    r"""SubmitExtractDocAgentJob返回参数结构体

    """

    def __init__(self):
        r"""
        :param _JobId: <p>任务唯一ID。由服务端生成。</p>
        :type JobId: str
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._JobId = None
        self._RequestId = None

    @property
    def JobId(self):
        r"""<p>任务唯一ID。由服务端生成。</p>
        :rtype: str
        """
        return self._JobId

    @JobId.setter
    def JobId(self, JobId):
        self._JobId = JobId

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._JobId = params.get("JobId")
        self._RequestId = params.get("RequestId")


class SubmitMarkEssayAgentJobRequest(AbstractModel):
    r"""SubmitMarkEssayAgentJob请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64List: 图片/PDF的 Base64 值。要求Base64不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。  示例值：/9j/4AAQSkZJRg.....s97n//2Q==
        :type ImageBase64List: list of str
        :param _ImageUrlList: 图片/PDF的 Url 地址。要求图片经Base64编码后不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。  示例值：https://ocr-demo-1254418846.cos.ap-guangzhou.myqcloud.com/general/GeneralAccurateOCR/GeneralAccurateOCR1.jpg
        :type ImageUrlList: list of str
        :param _PdfPageNumber: 需要识别的PDF页面的对应页码，仅支持PDF单页识别，默认值为1。 示例值：1
        :type PdfPageNumber: int
        :param _QuestionConfigMap: 批改信息输出配置，当key对应为1表示开启配置开关。  当key为StructureAndContent  value为1 表示SentenceSuggest返回篇章结构和内容信息，默认只返回词汇、语句
        :type QuestionConfigMap: str
        """
        self._ImageBase64List = None
        self._ImageUrlList = None
        self._PdfPageNumber = None
        self._QuestionConfigMap = None

    @property
    def ImageBase64List(self):
        r"""图片/PDF的 Base64 值。要求Base64不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。  示例值：/9j/4AAQSkZJRg.....s97n//2Q==
        :rtype: list of str
        """
        return self._ImageBase64List

    @ImageBase64List.setter
    def ImageBase64List(self, ImageBase64List):
        self._ImageBase64List = ImageBase64List

    @property
    def ImageUrlList(self):
        r"""图片/PDF的 Url 地址。要求图片经Base64编码后不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。  示例值：https://ocr-demo-1254418846.cos.ap-guangzhou.myqcloud.com/general/GeneralAccurateOCR/GeneralAccurateOCR1.jpg
        :rtype: list of str
        """
        return self._ImageUrlList

    @ImageUrlList.setter
    def ImageUrlList(self, ImageUrlList):
        self._ImageUrlList = ImageUrlList

    @property
    def PdfPageNumber(self):
        r"""需要识别的PDF页面的对应页码，仅支持PDF单页识别，默认值为1。 示例值：1
        :rtype: int
        """
        return self._PdfPageNumber

    @PdfPageNumber.setter
    def PdfPageNumber(self, PdfPageNumber):
        self._PdfPageNumber = PdfPageNumber

    @property
    def QuestionConfigMap(self):
        r"""批改信息输出配置，当key对应为1表示开启配置开关。  当key为StructureAndContent  value为1 表示SentenceSuggest返回篇章结构和内容信息，默认只返回词汇、语句
        :rtype: str
        """
        return self._QuestionConfigMap

    @QuestionConfigMap.setter
    def QuestionConfigMap(self, QuestionConfigMap):
        self._QuestionConfigMap = QuestionConfigMap


    def _deserialize(self, params):
        self._ImageBase64List = params.get("ImageBase64List")
        self._ImageUrlList = params.get("ImageUrlList")
        self._PdfPageNumber = params.get("PdfPageNumber")
        self._QuestionConfigMap = params.get("QuestionConfigMap")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class SubmitMarkEssayAgentJobResponse(AbstractModel):
    r"""SubmitMarkEssayAgentJob返回参数结构体

    """

    def __init__(self):
        r"""
        :param _JobIds: 任务唯一ID。由服务端生成。 示例值：1334797167793684480
        :type JobIds: list of str
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._JobIds = None
        self._RequestId = None

    @property
    def JobIds(self):
        r"""任务唯一ID。由服务端生成。 示例值：1334797167793684480
        :rtype: list of str
        """
        return self._JobIds

    @JobIds.setter
    def JobIds(self, JobIds):
        self._JobIds = JobIds

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._JobIds = params.get("JobIds")
        self._RequestId = params.get("RequestId")


class SubmitQuestionMarkAgentJobRequest(AbstractModel):
    r"""SubmitQuestionMarkAgentJob请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: <p>图片/PDF的 Base64 值。要求Base64不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。  示例值：/9j/4AAQSkZJRg.....s97n//2Q==</p>
        :type ImageBase64: str
        :param _ImageUrl: <p>图片/PDF的 Url 地址。要求图片经Base64编码后不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。  示例值：https://ocr-demo-1254418846.cos.ap-guangzhou.myqcloud.com/general/GeneralAccurateOCR/GeneralAccurateOCR1.jpg</p>
        :type ImageUrl: str
        :param _PdfPageNumber: <p>需要识别的PDF页面的对应页码，仅支持PDF单页识别，默认值为1。</p>
        :type PdfPageNumber: int
        :param _BoolSingleQuestion: <p>表示整张试卷批改需要先切题，默认为false</p>
        :type BoolSingleQuestion: bool
        :param _EnableDeepThink: <p>默认false 表示关闭深度思考  true 表示打开深度思考，更深层次推理分析，速度更慢</p>
        :type EnableDeepThink: bool
        :param _QuestionConfigMap: <p>题目信息输出配置，当key对应为true表示开启配置开关。</p><p>当key为KnowledgePoints value为true 表示输出每道题结构信息中输出知识点内容；<br>当key为TrueAnswer  value为true 表示输出每道题的正确答案 ；<br>当key为StepCorrection  value为true表示启用步骤级批改；</p><p> 设置方式参考  {&quot;KnowledgePoints&quot;:true,&quot;TrueAnswer&quot;:true}</p><p>参数格式：{&quot;KnowledgePoints&quot;:true,&quot;TrueAnswer&quot;:true}</p>
        :type QuestionConfigMap: str
        :param _ReferenceAnswer: <p>仅有单题有效，如果切题有多题则不生效，单题批改的时候作为参考答案输入到批改模型中</p>
        :type ReferenceAnswer: str
        :param _ImageBase64List: <p>图片/PDF的 Base64 列表值，最多三张。每张图片要求参考ImageBase64  1. 如果ImageBase64List或者ImageUrlList 都没值则取ImageBase64 或者ImageUrl  2.如果ImageBase64List或者ImageUrlList 有一个值，则不取ImageBase64 或者ImageUrl值，优先去list  3.如果ImageBase64List或者ImageUrlList 都有值，则取ImageUrlList</p>
        :type ImageBase64List: list of str
        :param _ImageUrlList: <p>图片/PDF的 Url 地址Base64 列表值，最多三张。每张图片要求参考ImageUrl。  图片生效规则同ImageBase64List</p>
        :type ImageUrlList: list of str
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._PdfPageNumber = None
        self._BoolSingleQuestion = None
        self._EnableDeepThink = None
        self._QuestionConfigMap = None
        self._ReferenceAnswer = None
        self._ImageBase64List = None
        self._ImageUrlList = None

    @property
    def ImageBase64(self):
        r"""<p>图片/PDF的 Base64 值。要求Base64不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。  示例值：/9j/4AAQSkZJRg.....s97n//2Q==</p>
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""<p>图片/PDF的 Url 地址。要求图片经Base64编码后不超过10M，分辨率建议600*800以上，支持PNG、JPG、JPEG、BMP、PDF格式。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。  示例值：https://ocr-demo-1254418846.cos.ap-guangzhou.myqcloud.com/general/GeneralAccurateOCR/GeneralAccurateOCR1.jpg</p>
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def PdfPageNumber(self):
        r"""<p>需要识别的PDF页面的对应页码，仅支持PDF单页识别，默认值为1。</p>
        :rtype: int
        """
        return self._PdfPageNumber

    @PdfPageNumber.setter
    def PdfPageNumber(self, PdfPageNumber):
        self._PdfPageNumber = PdfPageNumber

    @property
    def BoolSingleQuestion(self):
        warnings.warn("parameter `BoolSingleQuestion` is deprecated", DeprecationWarning) 

        r"""<p>表示整张试卷批改需要先切题，默认为false</p>
        :rtype: bool
        """
        return self._BoolSingleQuestion

    @BoolSingleQuestion.setter
    def BoolSingleQuestion(self, BoolSingleQuestion):
        warnings.warn("parameter `BoolSingleQuestion` is deprecated", DeprecationWarning) 

        self._BoolSingleQuestion = BoolSingleQuestion

    @property
    def EnableDeepThink(self):
        warnings.warn("parameter `EnableDeepThink` is deprecated", DeprecationWarning) 

        r"""<p>默认false 表示关闭深度思考  true 表示打开深度思考，更深层次推理分析，速度更慢</p>
        :rtype: bool
        """
        return self._EnableDeepThink

    @EnableDeepThink.setter
    def EnableDeepThink(self, EnableDeepThink):
        warnings.warn("parameter `EnableDeepThink` is deprecated", DeprecationWarning) 

        self._EnableDeepThink = EnableDeepThink

    @property
    def QuestionConfigMap(self):
        r"""<p>题目信息输出配置，当key对应为true表示开启配置开关。</p><p>当key为KnowledgePoints value为true 表示输出每道题结构信息中输出知识点内容；<br>当key为TrueAnswer  value为true 表示输出每道题的正确答案 ；<br>当key为StepCorrection  value为true表示启用步骤级批改；</p><p> 设置方式参考  {&quot;KnowledgePoints&quot;:true,&quot;TrueAnswer&quot;:true}</p><p>参数格式：{&quot;KnowledgePoints&quot;:true,&quot;TrueAnswer&quot;:true}</p>
        :rtype: str
        """
        return self._QuestionConfigMap

    @QuestionConfigMap.setter
    def QuestionConfigMap(self, QuestionConfigMap):
        self._QuestionConfigMap = QuestionConfigMap

    @property
    def ReferenceAnswer(self):
        r"""<p>仅有单题有效，如果切题有多题则不生效，单题批改的时候作为参考答案输入到批改模型中</p>
        :rtype: str
        """
        return self._ReferenceAnswer

    @ReferenceAnswer.setter
    def ReferenceAnswer(self, ReferenceAnswer):
        self._ReferenceAnswer = ReferenceAnswer

    @property
    def ImageBase64List(self):
        r"""<p>图片/PDF的 Base64 列表值，最多三张。每张图片要求参考ImageBase64  1. 如果ImageBase64List或者ImageUrlList 都没值则取ImageBase64 或者ImageUrl  2.如果ImageBase64List或者ImageUrlList 有一个值，则不取ImageBase64 或者ImageUrl值，优先去list  3.如果ImageBase64List或者ImageUrlList 都有值，则取ImageUrlList</p>
        :rtype: list of str
        """
        return self._ImageBase64List

    @ImageBase64List.setter
    def ImageBase64List(self, ImageBase64List):
        self._ImageBase64List = ImageBase64List

    @property
    def ImageUrlList(self):
        r"""<p>图片/PDF的 Url 地址Base64 列表值，最多三张。每张图片要求参考ImageUrl。  图片生效规则同ImageBase64List</p>
        :rtype: list of str
        """
        return self._ImageUrlList

    @ImageUrlList.setter
    def ImageUrlList(self, ImageUrlList):
        self._ImageUrlList = ImageUrlList


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._PdfPageNumber = params.get("PdfPageNumber")
        self._BoolSingleQuestion = params.get("BoolSingleQuestion")
        self._EnableDeepThink = params.get("EnableDeepThink")
        self._QuestionConfigMap = params.get("QuestionConfigMap")
        self._ReferenceAnswer = params.get("ReferenceAnswer")
        self._ImageBase64List = params.get("ImageBase64List")
        self._ImageUrlList = params.get("ImageUrlList")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class SubmitQuestionMarkAgentJobResponse(AbstractModel):
    r"""SubmitQuestionMarkAgentJob返回参数结构体

    """

    def __init__(self):
        r"""
        :param _JobId: <p>任务唯一ID。由服务端生成.</p>
        :type JobId: str
        :param _QuestionInfo: <p>切题题目边框坐标列表 （如果BoolSingleQuestion为true则返回空）</p>
        :type QuestionInfo: list of QuestionInfo
        :param _QuestionCount: <p>题目切题数量，作为计费题目数总量</p>
        :type QuestionCount: str
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._JobId = None
        self._QuestionInfo = None
        self._QuestionCount = None
        self._RequestId = None

    @property
    def JobId(self):
        r"""<p>任务唯一ID。由服务端生成.</p>
        :rtype: str
        """
        return self._JobId

    @JobId.setter
    def JobId(self, JobId):
        self._JobId = JobId

    @property
    def QuestionInfo(self):
        r"""<p>切题题目边框坐标列表 （如果BoolSingleQuestion为true则返回空）</p>
        :rtype: list of QuestionInfo
        """
        return self._QuestionInfo

    @QuestionInfo.setter
    def QuestionInfo(self, QuestionInfo):
        self._QuestionInfo = QuestionInfo

    @property
    def QuestionCount(self):
        r"""<p>题目切题数量，作为计费题目数总量</p>
        :rtype: str
        """
        return self._QuestionCount

    @QuestionCount.setter
    def QuestionCount(self, QuestionCount):
        self._QuestionCount = QuestionCount

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._JobId = params.get("JobId")
        if params.get("QuestionInfo") is not None:
            self._QuestionInfo = []
            for item in params.get("QuestionInfo"):
                obj = QuestionInfo()
                obj._deserialize(item)
                self._QuestionInfo.append(obj)
        self._QuestionCount = params.get("QuestionCount")
        self._RequestId = params.get("RequestId")


class TableCell(AbstractModel):
    r"""单元格数据

    """

    def __init__(self):
        r"""
        :param _ColTl: 单元格左上角的列索引
        :type ColTl: int
        :param _RowTl: 单元格左上角的行索引
        :type RowTl: int
        :param _ColBr: 单元格右下角的列索引
        :type ColBr: int
        :param _RowBr: 单元格右下角的行索引
        :type RowBr: int
        :param _Text: 单元格内识别出的字符串文本，若文本存在多行，以换行符"\n"隔开
        :type Text: str
        :param _Type: 单元格类型
        :type Type: str
        :param _Confidence: 单元格置信度
        :type Confidence: float
        :param _Polygon: 单元格在图像中的四点坐标
        :type Polygon: list of Coord
        :param _AdvancedInfo: 此字段为扩展字段
注意：此字段可能返回 null，表示取不到有效值。
        :type AdvancedInfo: str
        :param _Contents: 单元格文本属性
        :type Contents: list of CellContent
        """
        self._ColTl = None
        self._RowTl = None
        self._ColBr = None
        self._RowBr = None
        self._Text = None
        self._Type = None
        self._Confidence = None
        self._Polygon = None
        self._AdvancedInfo = None
        self._Contents = None

    @property
    def ColTl(self):
        r"""单元格左上角的列索引
        :rtype: int
        """
        return self._ColTl

    @ColTl.setter
    def ColTl(self, ColTl):
        self._ColTl = ColTl

    @property
    def RowTl(self):
        r"""单元格左上角的行索引
        :rtype: int
        """
        return self._RowTl

    @RowTl.setter
    def RowTl(self, RowTl):
        self._RowTl = RowTl

    @property
    def ColBr(self):
        r"""单元格右下角的列索引
        :rtype: int
        """
        return self._ColBr

    @ColBr.setter
    def ColBr(self, ColBr):
        self._ColBr = ColBr

    @property
    def RowBr(self):
        r"""单元格右下角的行索引
        :rtype: int
        """
        return self._RowBr

    @RowBr.setter
    def RowBr(self, RowBr):
        self._RowBr = RowBr

    @property
    def Text(self):
        r"""单元格内识别出的字符串文本，若文本存在多行，以换行符"\n"隔开
        :rtype: str
        """
        return self._Text

    @Text.setter
    def Text(self, Text):
        self._Text = Text

    @property
    def Type(self):
        r"""单元格类型
        :rtype: str
        """
        return self._Type

    @Type.setter
    def Type(self, Type):
        self._Type = Type

    @property
    def Confidence(self):
        r"""单元格置信度
        :rtype: float
        """
        return self._Confidence

    @Confidence.setter
    def Confidence(self, Confidence):
        self._Confidence = Confidence

    @property
    def Polygon(self):
        r"""单元格在图像中的四点坐标
        :rtype: list of Coord
        """
        return self._Polygon

    @Polygon.setter
    def Polygon(self, Polygon):
        self._Polygon = Polygon

    @property
    def AdvancedInfo(self):
        r"""此字段为扩展字段
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._AdvancedInfo

    @AdvancedInfo.setter
    def AdvancedInfo(self, AdvancedInfo):
        self._AdvancedInfo = AdvancedInfo

    @property
    def Contents(self):
        r"""单元格文本属性
        :rtype: list of CellContent
        """
        return self._Contents

    @Contents.setter
    def Contents(self, Contents):
        self._Contents = Contents


    def _deserialize(self, params):
        self._ColTl = params.get("ColTl")
        self._RowTl = params.get("RowTl")
        self._ColBr = params.get("ColBr")
        self._RowBr = params.get("RowBr")
        self._Text = params.get("Text")
        self._Type = params.get("Type")
        self._Confidence = params.get("Confidence")
        if params.get("Polygon") is not None:
            self._Polygon = []
            for item in params.get("Polygon"):
                obj = Coord()
                obj._deserialize(item)
                self._Polygon.append(obj)
        self._AdvancedInfo = params.get("AdvancedInfo")
        if params.get("Contents") is not None:
            self._Contents = []
            for item in params.get("Contents"):
                obj = CellContent()
                obj._deserialize(item)
                self._Contents.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class TableCellInfo(AbstractModel):
    r"""单元格数据

    """

    def __init__(self):
        r"""
        :param _ColTl: 单元格左上角的列索引
        :type ColTl: int
        :param _RowTl: 单元格左上角的行索引
        :type RowTl: int
        :param _ColBr: 单元格右下角的列索引
        :type ColBr: int
        :param _RowBr: 单元格右下角的行索引
        :type RowBr: int
        :param _Text: 单元格内识别出的字符串文本，若文本存在多行，以换行符"\n"隔开
        :type Text: str
        :param _Type: 单元格类型
        :type Type: str
        :param _Confidence: 单元格置信度
        :type Confidence: float
        :param _Polygon: 单元格在图像中的四点坐标
        :type Polygon: list of Coord
        """
        self._ColTl = None
        self._RowTl = None
        self._ColBr = None
        self._RowBr = None
        self._Text = None
        self._Type = None
        self._Confidence = None
        self._Polygon = None

    @property
    def ColTl(self):
        r"""单元格左上角的列索引
        :rtype: int
        """
        return self._ColTl

    @ColTl.setter
    def ColTl(self, ColTl):
        self._ColTl = ColTl

    @property
    def RowTl(self):
        r"""单元格左上角的行索引
        :rtype: int
        """
        return self._RowTl

    @RowTl.setter
    def RowTl(self, RowTl):
        self._RowTl = RowTl

    @property
    def ColBr(self):
        r"""单元格右下角的列索引
        :rtype: int
        """
        return self._ColBr

    @ColBr.setter
    def ColBr(self, ColBr):
        self._ColBr = ColBr

    @property
    def RowBr(self):
        r"""单元格右下角的行索引
        :rtype: int
        """
        return self._RowBr

    @RowBr.setter
    def RowBr(self, RowBr):
        self._RowBr = RowBr

    @property
    def Text(self):
        r"""单元格内识别出的字符串文本，若文本存在多行，以换行符"\n"隔开
        :rtype: str
        """
        return self._Text

    @Text.setter
    def Text(self, Text):
        self._Text = Text

    @property
    def Type(self):
        r"""单元格类型
        :rtype: str
        """
        return self._Type

    @Type.setter
    def Type(self, Type):
        self._Type = Type

    @property
    def Confidence(self):
        r"""单元格置信度
        :rtype: float
        """
        return self._Confidence

    @Confidence.setter
    def Confidence(self, Confidence):
        self._Confidence = Confidence

    @property
    def Polygon(self):
        r"""单元格在图像中的四点坐标
        :rtype: list of Coord
        """
        return self._Polygon

    @Polygon.setter
    def Polygon(self, Polygon):
        self._Polygon = Polygon


    def _deserialize(self, params):
        self._ColTl = params.get("ColTl")
        self._RowTl = params.get("RowTl")
        self._ColBr = params.get("ColBr")
        self._RowBr = params.get("RowBr")
        self._Text = params.get("Text")
        self._Type = params.get("Type")
        self._Confidence = params.get("Confidence")
        if params.get("Polygon") is not None:
            self._Polygon = []
            for item in params.get("Polygon"):
                obj = Coord()
                obj._deserialize(item)
                self._Polygon.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class TableDetectInfo(AbstractModel):
    r"""表格内容检测

    """

    def __init__(self):
        r"""
        :param _Cells: 单元格内容
注意：此字段可能返回 null，表示取不到有效值。
        :type Cells: list of TableCell
        :param _Titles: 表格标题
注意：此字段可能返回 null，表示取不到有效值。
        :type Titles: list of TableTitle
        :param _Type: 图像中的文本块类型，0 为非表格文本，
1 为有线表格，2 为无线表格
（接口暂不支持日文无线表格识别，若传入日文无线表格，返回0）
注意：此字段可能返回 null，表示取不到有效值。
        :type Type: int
        :param _TableCoordPoint: 表格主体四个顶点坐标（依次为左上角，
右上角，右下角，左下角）
注意：此字段可能返回 null，表示取不到有效值。
        :type TableCoordPoint: list of Coord
        """
        self._Cells = None
        self._Titles = None
        self._Type = None
        self._TableCoordPoint = None

    @property
    def Cells(self):
        r"""单元格内容
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of TableCell
        """
        return self._Cells

    @Cells.setter
    def Cells(self, Cells):
        self._Cells = Cells

    @property
    def Titles(self):
        r"""表格标题
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of TableTitle
        """
        return self._Titles

    @Titles.setter
    def Titles(self, Titles):
        self._Titles = Titles

    @property
    def Type(self):
        r"""图像中的文本块类型，0 为非表格文本，
1 为有线表格，2 为无线表格
（接口暂不支持日文无线表格识别，若传入日文无线表格，返回0）
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._Type

    @Type.setter
    def Type(self, Type):
        self._Type = Type

    @property
    def TableCoordPoint(self):
        r"""表格主体四个顶点坐标（依次为左上角，
右上角，右下角，左下角）
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of Coord
        """
        return self._TableCoordPoint

    @TableCoordPoint.setter
    def TableCoordPoint(self, TableCoordPoint):
        self._TableCoordPoint = TableCoordPoint


    def _deserialize(self, params):
        if params.get("Cells") is not None:
            self._Cells = []
            for item in params.get("Cells"):
                obj = TableCell()
                obj._deserialize(item)
                self._Cells.append(obj)
        if params.get("Titles") is not None:
            self._Titles = []
            for item in params.get("Titles"):
                obj = TableTitle()
                obj._deserialize(item)
                self._Titles.append(obj)
        self._Type = params.get("Type")
        if params.get("TableCoordPoint") is not None:
            self._TableCoordPoint = []
            for item in params.get("TableCoordPoint"):
                obj = Coord()
                obj._deserialize(item)
                self._TableCoordPoint.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class TableInfo(AbstractModel):
    r"""表格内容检测

    """

    def __init__(self):
        r"""
        :param _Cells: 单元格内容
注意：此字段可能返回 null，表示取不到有效值。
        :type Cells: list of TableCellInfo
        :param _Type: 图像中的文本块类型：0为非表格文本、1为有线表格、2为无线表格，
有线表格：在表格内部，有横线/竖线纵跨整个表格的宽/高；
无线表格：在表格内部，无横线/竖线纵跨整个表格的宽/高。
注意：此字段可能返回 null，表示取不到有效值。
        :type Type: int
        :param _TableCoordPoint: 表格主体四个顶点坐标（依次为左上角，
右上角，右下角，左下角）
注意：此字段可能返回 null，表示取不到有效值。
        :type TableCoordPoint: list of Coord
        """
        self._Cells = None
        self._Type = None
        self._TableCoordPoint = None

    @property
    def Cells(self):
        r"""单元格内容
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of TableCellInfo
        """
        return self._Cells

    @Cells.setter
    def Cells(self, Cells):
        self._Cells = Cells

    @property
    def Type(self):
        r"""图像中的文本块类型：0为非表格文本、1为有线表格、2为无线表格，
有线表格：在表格内部，有横线/竖线纵跨整个表格的宽/高；
无线表格：在表格内部，无横线/竖线纵跨整个表格的宽/高。
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._Type

    @Type.setter
    def Type(self, Type):
        self._Type = Type

    @property
    def TableCoordPoint(self):
        r"""表格主体四个顶点坐标（依次为左上角，
右上角，右下角，左下角）
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of Coord
        """
        return self._TableCoordPoint

    @TableCoordPoint.setter
    def TableCoordPoint(self, TableCoordPoint):
        self._TableCoordPoint = TableCoordPoint


    def _deserialize(self, params):
        if params.get("Cells") is not None:
            self._Cells = []
            for item in params.get("Cells"):
                obj = TableCellInfo()
                obj._deserialize(item)
                self._Cells.append(obj)
        self._Type = params.get("Type")
        if params.get("TableCoordPoint") is not None:
            self._TableCoordPoint = []
            for item in params.get("TableCoordPoint"):
                obj = Coord()
                obj._deserialize(item)
                self._TableCoordPoint.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class TableOCRRequest(AbstractModel):
    r"""TableOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经Base64编码后不超过 3M。图片下载时间不超过 3 秒。
图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经 Base64 编码后不超过 3M。图片下载时间不超过 3 秒。
图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。
非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        """
        self._ImageBase64 = None
        self._ImageUrl = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经Base64编码后不超过 3M。图片下载时间不超过 3 秒。
图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经 Base64 编码后不超过 3M。图片下载时间不超过 3 秒。
图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。
非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class TableOCRResponse(AbstractModel):
    r"""TableOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _TextDetections: 检测到的文本信息，具体内容请点击左侧链接
        :type TextDetections: list of TextTable
        :param _Data: Base64 编码后的 Excel 数据。
        :type Data: str
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._TextDetections = None
        self._Data = None
        self._RequestId = None

    @property
    def TextDetections(self):
        r"""检测到的文本信息，具体内容请点击左侧链接
        :rtype: list of TextTable
        """
        return self._TextDetections

    @TextDetections.setter
    def TextDetections(self, TextDetections):
        self._TextDetections = TextDetections

    @property
    def Data(self):
        r"""Base64 编码后的 Excel 数据。
        :rtype: str
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("TextDetections") is not None:
            self._TextDetections = []
            for item in params.get("TextDetections"):
                obj = TextTable()
                obj._deserialize(item)
                self._TextDetections.append(obj)
        self._Data = params.get("Data")
        self._RequestId = params.get("RequestId")


class TableTitle(AbstractModel):
    r"""表格标题

    """

    def __init__(self):
        r"""
        :param _Text: 表格名称
注意：此字段可能返回 null，表示取不到有效值。
        :type Text: str
        """
        self._Text = None

    @property
    def Text(self):
        r"""表格名称
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Text

    @Text.setter
    def Text(self, Text):
        self._Text = Text


    def _deserialize(self, params):
        self._Text = params.get("Text")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class TaxPayment(AbstractModel):
    r"""完税凭证

    """

    def __init__(self):
        r"""
        :param _Title: 发票名称
        :type Title: str
        :param _Content: 识别出的字段名称(关键字)，支持以下字段：
税号 、纳税人识别号 、纳税人名称 、金额合计大写 、金额合计小写 、填发日期 、税务机关 、填票人。
示例值：纳税人识别号
        :type Content: list of OtherInvoiceItem
        :param _TableItems: 表格。
        :type TableItems: list of OtherInvoiceList
        """
        self._Title = None
        self._Content = None
        self._TableItems = None

    @property
    def Title(self):
        r"""发票名称
        :rtype: str
        """
        return self._Title

    @Title.setter
    def Title(self, Title):
        self._Title = Title

    @property
    def Content(self):
        r"""识别出的字段名称(关键字)，支持以下字段：
税号 、纳税人识别号 、纳税人名称 、金额合计大写 、金额合计小写 、填发日期 、税务机关 、填票人。
示例值：纳税人识别号
        :rtype: list of OtherInvoiceItem
        """
        return self._Content

    @Content.setter
    def Content(self, Content):
        self._Content = Content

    @property
    def TableItems(self):
        r"""表格。
        :rtype: list of OtherInvoiceList
        """
        return self._TableItems

    @TableItems.setter
    def TableItems(self, TableItems):
        self._TableItems = TableItems


    def _deserialize(self, params):
        self._Title = params.get("Title")
        if params.get("Content") is not None:
            self._Content = []
            for item in params.get("Content"):
                obj = OtherInvoiceItem()
                obj._deserialize(item)
                self._Content.append(obj)
        if params.get("TableItems") is not None:
            self._TableItems = []
            for item in params.get("TableItems"):
                obj = OtherInvoiceList()
                obj._deserialize(item)
                self._TableItems.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class TaxiTicket(AbstractModel):
    r"""出租车发票

    """

    def __init__(self):
        r"""
        :param _Title: 发票名称
        :type Title: str
        :param _QRCodeMark: 是否存在二维码（1：有，0：无）
        :type QRCodeMark: int
        :param _Code: 发票代码
        :type Code: str
        :param _Number: 发票号码
        :type Number: str
        :param _Date: 开票日期
        :type Date: str
        :param _TimeGetOn: 上车时间
        :type TimeGetOn: str
        :param _TimeGetOff: 下车时间
        :type TimeGetOff: str
        :param _Price: 单价
        :type Price: str
        :param _Mileage: 里程
        :type Mileage: str
        :param _Total: 总金额
        :type Total: str
        :param _Place: 发票所在地
        :type Place: str
        :param _Province: 省
        :type Province: str
        :param _City: 市
        :type City: str
        :param _Kind: 发票消费类型
        :type Kind: str
        :param _LicensePlate: 车牌号
        :type LicensePlate: str
        :param _FuelFee: 燃油附加费
        :type FuelFee: str
        :param _BookingCallFee: 预约叫车服务费
        :type BookingCallFee: str
        :param _CompanySealMark: 是否有公司印章（0：没有，1：有）
        :type CompanySealMark: int
        """
        self._Title = None
        self._QRCodeMark = None
        self._Code = None
        self._Number = None
        self._Date = None
        self._TimeGetOn = None
        self._TimeGetOff = None
        self._Price = None
        self._Mileage = None
        self._Total = None
        self._Place = None
        self._Province = None
        self._City = None
        self._Kind = None
        self._LicensePlate = None
        self._FuelFee = None
        self._BookingCallFee = None
        self._CompanySealMark = None

    @property
    def Title(self):
        r"""发票名称
        :rtype: str
        """
        return self._Title

    @Title.setter
    def Title(self, Title):
        self._Title = Title

    @property
    def QRCodeMark(self):
        r"""是否存在二维码（1：有，0：无）
        :rtype: int
        """
        return self._QRCodeMark

    @QRCodeMark.setter
    def QRCodeMark(self, QRCodeMark):
        self._QRCodeMark = QRCodeMark

    @property
    def Code(self):
        r"""发票代码
        :rtype: str
        """
        return self._Code

    @Code.setter
    def Code(self, Code):
        self._Code = Code

    @property
    def Number(self):
        r"""发票号码
        :rtype: str
        """
        return self._Number

    @Number.setter
    def Number(self, Number):
        self._Number = Number

    @property
    def Date(self):
        r"""开票日期
        :rtype: str
        """
        return self._Date

    @Date.setter
    def Date(self, Date):
        self._Date = Date

    @property
    def TimeGetOn(self):
        r"""上车时间
        :rtype: str
        """
        return self._TimeGetOn

    @TimeGetOn.setter
    def TimeGetOn(self, TimeGetOn):
        self._TimeGetOn = TimeGetOn

    @property
    def TimeGetOff(self):
        r"""下车时间
        :rtype: str
        """
        return self._TimeGetOff

    @TimeGetOff.setter
    def TimeGetOff(self, TimeGetOff):
        self._TimeGetOff = TimeGetOff

    @property
    def Price(self):
        r"""单价
        :rtype: str
        """
        return self._Price

    @Price.setter
    def Price(self, Price):
        self._Price = Price

    @property
    def Mileage(self):
        r"""里程
        :rtype: str
        """
        return self._Mileage

    @Mileage.setter
    def Mileage(self, Mileage):
        self._Mileage = Mileage

    @property
    def Total(self):
        r"""总金额
        :rtype: str
        """
        return self._Total

    @Total.setter
    def Total(self, Total):
        self._Total = Total

    @property
    def Place(self):
        r"""发票所在地
        :rtype: str
        """
        return self._Place

    @Place.setter
    def Place(self, Place):
        self._Place = Place

    @property
    def Province(self):
        r"""省
        :rtype: str
        """
        return self._Province

    @Province.setter
    def Province(self, Province):
        self._Province = Province

    @property
    def City(self):
        r"""市
        :rtype: str
        """
        return self._City

    @City.setter
    def City(self, City):
        self._City = City

    @property
    def Kind(self):
        r"""发票消费类型
        :rtype: str
        """
        return self._Kind

    @Kind.setter
    def Kind(self, Kind):
        self._Kind = Kind

    @property
    def LicensePlate(self):
        r"""车牌号
        :rtype: str
        """
        return self._LicensePlate

    @LicensePlate.setter
    def LicensePlate(self, LicensePlate):
        self._LicensePlate = LicensePlate

    @property
    def FuelFee(self):
        r"""燃油附加费
        :rtype: str
        """
        return self._FuelFee

    @FuelFee.setter
    def FuelFee(self, FuelFee):
        self._FuelFee = FuelFee

    @property
    def BookingCallFee(self):
        r"""预约叫车服务费
        :rtype: str
        """
        return self._BookingCallFee

    @BookingCallFee.setter
    def BookingCallFee(self, BookingCallFee):
        self._BookingCallFee = BookingCallFee

    @property
    def CompanySealMark(self):
        r"""是否有公司印章（0：没有，1：有）
        :rtype: int
        """
        return self._CompanySealMark

    @CompanySealMark.setter
    def CompanySealMark(self, CompanySealMark):
        self._CompanySealMark = CompanySealMark


    def _deserialize(self, params):
        self._Title = params.get("Title")
        self._QRCodeMark = params.get("QRCodeMark")
        self._Code = params.get("Code")
        self._Number = params.get("Number")
        self._Date = params.get("Date")
        self._TimeGetOn = params.get("TimeGetOn")
        self._TimeGetOff = params.get("TimeGetOff")
        self._Price = params.get("Price")
        self._Mileage = params.get("Mileage")
        self._Total = params.get("Total")
        self._Place = params.get("Place")
        self._Province = params.get("Province")
        self._City = params.get("City")
        self._Kind = params.get("Kind")
        self._LicensePlate = params.get("LicensePlate")
        self._FuelFee = params.get("FuelFee")
        self._BookingCallFee = params.get("BookingCallFee")
        self._CompanySealMark = params.get("CompanySealMark")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class TemporaryIDCardInfo(AbstractModel):
    r"""临时身份证信息返回

    """

    def __init__(self):
        r"""
        :param _Name: 姓名（人像面）
        :type Name: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _Sex: 性别（人像面）
        :type Sex: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _Nation: 民族（人像面）
        :type Nation: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _Birth: 出生日期（人像面）
        :type Birth: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _Address: 地址（人像面）
        :type Address: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _IdNum: 公民身份号码（人像面）
        :type IdNum: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _Authority: 发证机关（国徽面）
        :type Authority: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _ValidDate: 证件有效期（国徽面）
        :type ValidDate: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _WarnInfos: WarnInfos，告警信息
        :type WarnInfos: :class:`tencentcloud.ocr.v20181119.models.CardWarnInfo`
        :param _CardImage: IdCard，裁剪后身份证照片的base64编码，请求 EnableCropImage 时返回；
        :type CardImage: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        :param _PortraitImage: Portrait，身份证头像照片的base64编码，请求 EnablePortrait 时返回；
        :type PortraitImage: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        self._Name = None
        self._Sex = None
        self._Nation = None
        self._Birth = None
        self._Address = None
        self._IdNum = None
        self._Authority = None
        self._ValidDate = None
        self._WarnInfos = None
        self._CardImage = None
        self._PortraitImage = None

    @property
    def Name(self):
        r"""姓名（人像面）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Sex(self):
        r"""性别（人像面）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._Sex

    @Sex.setter
    def Sex(self, Sex):
        self._Sex = Sex

    @property
    def Nation(self):
        r"""民族（人像面）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._Nation

    @Nation.setter
    def Nation(self, Nation):
        self._Nation = Nation

    @property
    def Birth(self):
        r"""出生日期（人像面）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._Birth

    @Birth.setter
    def Birth(self, Birth):
        self._Birth = Birth

    @property
    def Address(self):
        r"""地址（人像面）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._Address

    @Address.setter
    def Address(self, Address):
        self._Address = Address

    @property
    def IdNum(self):
        r"""公民身份号码（人像面）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._IdNum

    @IdNum.setter
    def IdNum(self, IdNum):
        self._IdNum = IdNum

    @property
    def Authority(self):
        r"""发证机关（国徽面）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._Authority

    @Authority.setter
    def Authority(self, Authority):
        self._Authority = Authority

    @property
    def ValidDate(self):
        r"""证件有效期（国徽面）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._ValidDate

    @ValidDate.setter
    def ValidDate(self, ValidDate):
        self._ValidDate = ValidDate

    @property
    def WarnInfos(self):
        r"""WarnInfos，告警信息
        :rtype: :class:`tencentcloud.ocr.v20181119.models.CardWarnInfo`
        """
        return self._WarnInfos

    @WarnInfos.setter
    def WarnInfos(self, WarnInfos):
        self._WarnInfos = WarnInfos

    @property
    def CardImage(self):
        r"""IdCard，裁剪后身份证照片的base64编码，请求 EnableCropImage 时返回；
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._CardImage

    @CardImage.setter
    def CardImage(self, CardImage):
        self._CardImage = CardImage

    @property
    def PortraitImage(self):
        r"""Portrait，身份证头像照片的base64编码，请求 EnablePortrait 时返回；
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ContentInfo`
        """
        return self._PortraitImage

    @PortraitImage.setter
    def PortraitImage(self, PortraitImage):
        self._PortraitImage = PortraitImage


    def _deserialize(self, params):
        if params.get("Name") is not None:
            self._Name = ContentInfo()
            self._Name._deserialize(params.get("Name"))
        if params.get("Sex") is not None:
            self._Sex = ContentInfo()
            self._Sex._deserialize(params.get("Sex"))
        if params.get("Nation") is not None:
            self._Nation = ContentInfo()
            self._Nation._deserialize(params.get("Nation"))
        if params.get("Birth") is not None:
            self._Birth = ContentInfo()
            self._Birth._deserialize(params.get("Birth"))
        if params.get("Address") is not None:
            self._Address = ContentInfo()
            self._Address._deserialize(params.get("Address"))
        if params.get("IdNum") is not None:
            self._IdNum = ContentInfo()
            self._IdNum._deserialize(params.get("IdNum"))
        if params.get("Authority") is not None:
            self._Authority = ContentInfo()
            self._Authority._deserialize(params.get("Authority"))
        if params.get("ValidDate") is not None:
            self._ValidDate = ContentInfo()
            self._ValidDate._deserialize(params.get("ValidDate"))
        if params.get("WarnInfos") is not None:
            self._WarnInfos = CardWarnInfo()
            self._WarnInfos._deserialize(params.get("WarnInfos"))
        if params.get("CardImage") is not None:
            self._CardImage = ContentInfo()
            self._CardImage._deserialize(params.get("CardImage"))
        if params.get("PortraitImage") is not None:
            self._PortraitImage = ContentInfo()
            self._PortraitImage._deserialize(params.get("PortraitImage"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class TextArithmetic(AbstractModel):
    r"""算式识别结果

    """

    def __init__(self):
        r"""
        :param _DetectedText: 识别出的文本行内容
        :type DetectedText: str
        :param _Result: 算式运算结果，true-正确   false-错误或非法参数
        :type Result: bool
        :param _Confidence: 保留字段，暂不支持
        :type Confidence: int
        :param _Polygon: 原图文本行坐标，以四个顶点坐标表示（保留字段，暂不支持）
注意：此字段可能返回 null，表示取不到有效值。
        :type Polygon: list of Coord
        :param _AdvancedInfo: 保留字段，暂不支持
        :type AdvancedInfo: str
        :param _ItemCoord: 文本行旋转纠正之后在图像中的像素坐标，表示为（左上角x, 左上角y，宽width，高height）
        :type ItemCoord: :class:`tencentcloud.ocr.v20181119.models.ItemCoord`
        :param _ExpressionType: 算式题型编号：
‘1’: 加减乘除四则
‘2’: 加减乘除已知结果求运算因子
‘3’: 判断大小
‘4’: 约等于估算
‘5’: 带余数除法
‘6’: 分数四则运算
‘7’: 单位换算
‘8’: 竖式加减法
‘9’: 竖式乘除法
‘10’: 脱式计算
‘11’: 解方程
        :type ExpressionType: str
        :param _Answer: 错题推荐答案，算式运算结果正确返回为""，算式运算结果错误返回推荐答案 (注：暂不支持多个关系运算符（如`1<10<7`）、无关系运算符（如frac(1,2)+frac(2,3)）、单位换算（如1元=100角）错题的推荐答案返回)
        :type Answer: str
        """
        self._DetectedText = None
        self._Result = None
        self._Confidence = None
        self._Polygon = None
        self._AdvancedInfo = None
        self._ItemCoord = None
        self._ExpressionType = None
        self._Answer = None

    @property
    def DetectedText(self):
        r"""识别出的文本行内容
        :rtype: str
        """
        return self._DetectedText

    @DetectedText.setter
    def DetectedText(self, DetectedText):
        self._DetectedText = DetectedText

    @property
    def Result(self):
        r"""算式运算结果，true-正确   false-错误或非法参数
        :rtype: bool
        """
        return self._Result

    @Result.setter
    def Result(self, Result):
        self._Result = Result

    @property
    def Confidence(self):
        r"""保留字段，暂不支持
        :rtype: int
        """
        return self._Confidence

    @Confidence.setter
    def Confidence(self, Confidence):
        self._Confidence = Confidence

    @property
    def Polygon(self):
        r"""原图文本行坐标，以四个顶点坐标表示（保留字段，暂不支持）
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of Coord
        """
        return self._Polygon

    @Polygon.setter
    def Polygon(self, Polygon):
        self._Polygon = Polygon

    @property
    def AdvancedInfo(self):
        r"""保留字段，暂不支持
        :rtype: str
        """
        return self._AdvancedInfo

    @AdvancedInfo.setter
    def AdvancedInfo(self, AdvancedInfo):
        self._AdvancedInfo = AdvancedInfo

    @property
    def ItemCoord(self):
        r"""文本行旋转纠正之后在图像中的像素坐标，表示为（左上角x, 左上角y，宽width，高height）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ItemCoord`
        """
        return self._ItemCoord

    @ItemCoord.setter
    def ItemCoord(self, ItemCoord):
        self._ItemCoord = ItemCoord

    @property
    def ExpressionType(self):
        r"""算式题型编号：
‘1’: 加减乘除四则
‘2’: 加减乘除已知结果求运算因子
‘3’: 判断大小
‘4’: 约等于估算
‘5’: 带余数除法
‘6’: 分数四则运算
‘7’: 单位换算
‘8’: 竖式加减法
‘9’: 竖式乘除法
‘10’: 脱式计算
‘11’: 解方程
        :rtype: str
        """
        return self._ExpressionType

    @ExpressionType.setter
    def ExpressionType(self, ExpressionType):
        self._ExpressionType = ExpressionType

    @property
    def Answer(self):
        r"""错题推荐答案，算式运算结果正确返回为""，算式运算结果错误返回推荐答案 (注：暂不支持多个关系运算符（如`1<10<7`）、无关系运算符（如frac(1,2)+frac(2,3)）、单位换算（如1元=100角）错题的推荐答案返回)
        :rtype: str
        """
        return self._Answer

    @Answer.setter
    def Answer(self, Answer):
        self._Answer = Answer


    def _deserialize(self, params):
        self._DetectedText = params.get("DetectedText")
        self._Result = params.get("Result")
        self._Confidence = params.get("Confidence")
        if params.get("Polygon") is not None:
            self._Polygon = []
            for item in params.get("Polygon"):
                obj = Coord()
                obj._deserialize(item)
                self._Polygon.append(obj)
        self._AdvancedInfo = params.get("AdvancedInfo")
        if params.get("ItemCoord") is not None:
            self._ItemCoord = ItemCoord()
            self._ItemCoord._deserialize(params.get("ItemCoord"))
        self._ExpressionType = params.get("ExpressionType")
        self._Answer = params.get("Answer")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class TextDetectRequest(AbstractModel):
    r"""TextDetect请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        """
        self._ImageBase64 = None
        self._ImageUrl = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class TextDetectResponse(AbstractModel):
    r"""TextDetect返回参数结构体

    """

    def __init__(self):
        r"""
        :param _HasText: 图片中是否包含文字。
        :type HasText: bool
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._HasText = None
        self._RequestId = None

    @property
    def HasText(self):
        r"""图片中是否包含文字。
        :rtype: bool
        """
        return self._HasText

    @HasText.setter
    def HasText(self, HasText):
        self._HasText = HasText

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._HasText = params.get("HasText")
        self._RequestId = params.get("RequestId")


class TextDetection(AbstractModel):
    r"""文字识别结果

    """

    def __init__(self):
        r"""
        :param _DetectedText: <p>识别出的文本行内容。</p>
        :type DetectedText: str
        :param _Confidence: <p>置信度 0 ~100。</p>
        :type Confidence: int
        :param _Polygon: <p>文本行坐标，以四个顶点坐标表示。</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type Polygon: list of Coord
        :param _AdvancedInfo: <p>此字段为扩展字段。GeneralBasicOcr接口返回段落信息Parag，包含ParagNo。</p>
        :type AdvancedInfo: str
        :param _ItemPolygon: <p>文本行在旋转纠正之后的图像中的像素坐标，表示为（左上角x, 左上角y，宽width，高height）。</p>
        :type ItemPolygon: :class:`tencentcloud.ocr.v20181119.models.ItemCoord`
        :param _Words: <p>识别出来的单字信息包括单字（包括单字Character和单字置信度confidence）， 支持识别的接口：GeneralBasicOCR、GeneralAccurateOCR。</p>
        :type Words: list of DetectedWords
        :param _WordCoordPoint: <p>单字在原图中的四点坐标， 支持识别的接口：GeneralBasicOCR、GeneralAccurateOCR。</p>
        :type WordCoordPoint: list of DetectedWordCoordPoint
        :param _Language: <p>语种信息。注：仅ConfigID配置为MulOCR时支持。zh:中文; en:英文; tha:泰语; may:印尼语; jap:日语; kor:韩语; spa:西班牙语; fre:法语; ger:德语; por:葡萄牙语; vie:越南语; may:马来语; rus:俄语; ita:意大利语; hol:荷兰语; swe:瑞典语; fin:芬兰语; nor:挪威语; hun:匈牙利语; ara:阿拉伯语; hi:印地语。</p>
        :type Language: str
        """
        self._DetectedText = None
        self._Confidence = None
        self._Polygon = None
        self._AdvancedInfo = None
        self._ItemPolygon = None
        self._Words = None
        self._WordCoordPoint = None
        self._Language = None

    @property
    def DetectedText(self):
        r"""<p>识别出的文本行内容。</p>
        :rtype: str
        """
        return self._DetectedText

    @DetectedText.setter
    def DetectedText(self, DetectedText):
        self._DetectedText = DetectedText

    @property
    def Confidence(self):
        r"""<p>置信度 0 ~100。</p>
        :rtype: int
        """
        return self._Confidence

    @Confidence.setter
    def Confidence(self, Confidence):
        self._Confidence = Confidence

    @property
    def Polygon(self):
        r"""<p>文本行坐标，以四个顶点坐标表示。</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of Coord
        """
        return self._Polygon

    @Polygon.setter
    def Polygon(self, Polygon):
        self._Polygon = Polygon

    @property
    def AdvancedInfo(self):
        r"""<p>此字段为扩展字段。GeneralBasicOcr接口返回段落信息Parag，包含ParagNo。</p>
        :rtype: str
        """
        return self._AdvancedInfo

    @AdvancedInfo.setter
    def AdvancedInfo(self, AdvancedInfo):
        self._AdvancedInfo = AdvancedInfo

    @property
    def ItemPolygon(self):
        r"""<p>文本行在旋转纠正之后的图像中的像素坐标，表示为（左上角x, 左上角y，宽width，高height）。</p>
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ItemCoord`
        """
        return self._ItemPolygon

    @ItemPolygon.setter
    def ItemPolygon(self, ItemPolygon):
        self._ItemPolygon = ItemPolygon

    @property
    def Words(self):
        r"""<p>识别出来的单字信息包括单字（包括单字Character和单字置信度confidence）， 支持识别的接口：GeneralBasicOCR、GeneralAccurateOCR。</p>
        :rtype: list of DetectedWords
        """
        return self._Words

    @Words.setter
    def Words(self, Words):
        self._Words = Words

    @property
    def WordCoordPoint(self):
        r"""<p>单字在原图中的四点坐标， 支持识别的接口：GeneralBasicOCR、GeneralAccurateOCR。</p>
        :rtype: list of DetectedWordCoordPoint
        """
        return self._WordCoordPoint

    @WordCoordPoint.setter
    def WordCoordPoint(self, WordCoordPoint):
        self._WordCoordPoint = WordCoordPoint

    @property
    def Language(self):
        r"""<p>语种信息。注：仅ConfigID配置为MulOCR时支持。zh:中文; en:英文; tha:泰语; may:印尼语; jap:日语; kor:韩语; spa:西班牙语; fre:法语; ger:德语; por:葡萄牙语; vie:越南语; may:马来语; rus:俄语; ita:意大利语; hol:荷兰语; swe:瑞典语; fin:芬兰语; nor:挪威语; hun:匈牙利语; ara:阿拉伯语; hi:印地语。</p>
        :rtype: str
        """
        return self._Language

    @Language.setter
    def Language(self, Language):
        self._Language = Language


    def _deserialize(self, params):
        self._DetectedText = params.get("DetectedText")
        self._Confidence = params.get("Confidence")
        if params.get("Polygon") is not None:
            self._Polygon = []
            for item in params.get("Polygon"):
                obj = Coord()
                obj._deserialize(item)
                self._Polygon.append(obj)
        self._AdvancedInfo = params.get("AdvancedInfo")
        if params.get("ItemPolygon") is not None:
            self._ItemPolygon = ItemCoord()
            self._ItemPolygon._deserialize(params.get("ItemPolygon"))
        if params.get("Words") is not None:
            self._Words = []
            for item in params.get("Words"):
                obj = DetectedWords()
                obj._deserialize(item)
                self._Words.append(obj)
        if params.get("WordCoordPoint") is not None:
            self._WordCoordPoint = []
            for item in params.get("WordCoordPoint"):
                obj = DetectedWordCoordPoint()
                obj._deserialize(item)
                self._WordCoordPoint.append(obj)
        self._Language = params.get("Language")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class TextDetectionEn(AbstractModel):
    r"""英文识别结果

    """

    def __init__(self):
        r"""
        :param _DetectedText: 识别出的文本行内容。
        :type DetectedText: str
        :param _Confidence: 置信度 0 ~100。
        :type Confidence: int
        :param _Polygon: 文本行在原图中的四点坐标。
注意：此字段可能返回 null，表示取不到有效值。
        :type Polygon: list of Coord
        :param _AdvancedInfo: 此字段为扩展字段。目前EnglishOCR接口返回内容为空。
        :type AdvancedInfo: str
        :param _WordCoordPoint: 英文单词在原图中的四点坐标。
        :type WordCoordPoint: list of WordCoordPoint
        :param _CandWord: 候选字符集(包含候选字Character以及置信度Confidence)。
        :type CandWord: list of CandWord
        :param _Words: 识别出来的单词信息（包括单词Character和单词置信度confidence）
        :type Words: list of Words
        """
        self._DetectedText = None
        self._Confidence = None
        self._Polygon = None
        self._AdvancedInfo = None
        self._WordCoordPoint = None
        self._CandWord = None
        self._Words = None

    @property
    def DetectedText(self):
        r"""识别出的文本行内容。
        :rtype: str
        """
        return self._DetectedText

    @DetectedText.setter
    def DetectedText(self, DetectedText):
        self._DetectedText = DetectedText

    @property
    def Confidence(self):
        r"""置信度 0 ~100。
        :rtype: int
        """
        return self._Confidence

    @Confidence.setter
    def Confidence(self, Confidence):
        self._Confidence = Confidence

    @property
    def Polygon(self):
        r"""文本行在原图中的四点坐标。
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of Coord
        """
        return self._Polygon

    @Polygon.setter
    def Polygon(self, Polygon):
        self._Polygon = Polygon

    @property
    def AdvancedInfo(self):
        r"""此字段为扩展字段。目前EnglishOCR接口返回内容为空。
        :rtype: str
        """
        return self._AdvancedInfo

    @AdvancedInfo.setter
    def AdvancedInfo(self, AdvancedInfo):
        self._AdvancedInfo = AdvancedInfo

    @property
    def WordCoordPoint(self):
        r"""英文单词在原图中的四点坐标。
        :rtype: list of WordCoordPoint
        """
        return self._WordCoordPoint

    @WordCoordPoint.setter
    def WordCoordPoint(self, WordCoordPoint):
        self._WordCoordPoint = WordCoordPoint

    @property
    def CandWord(self):
        r"""候选字符集(包含候选字Character以及置信度Confidence)。
        :rtype: list of CandWord
        """
        return self._CandWord

    @CandWord.setter
    def CandWord(self, CandWord):
        self._CandWord = CandWord

    @property
    def Words(self):
        r"""识别出来的单词信息（包括单词Character和单词置信度confidence）
        :rtype: list of Words
        """
        return self._Words

    @Words.setter
    def Words(self, Words):
        self._Words = Words


    def _deserialize(self, params):
        self._DetectedText = params.get("DetectedText")
        self._Confidence = params.get("Confidence")
        if params.get("Polygon") is not None:
            self._Polygon = []
            for item in params.get("Polygon"):
                obj = Coord()
                obj._deserialize(item)
                self._Polygon.append(obj)
        self._AdvancedInfo = params.get("AdvancedInfo")
        if params.get("WordCoordPoint") is not None:
            self._WordCoordPoint = []
            for item in params.get("WordCoordPoint"):
                obj = WordCoordPoint()
                obj._deserialize(item)
                self._WordCoordPoint.append(obj)
        if params.get("CandWord") is not None:
            self._CandWord = []
            for item in params.get("CandWord"):
                obj = CandWord()
                obj._deserialize(item)
                self._CandWord.append(obj)
        if params.get("Words") is not None:
            self._Words = []
            for item in params.get("Words"):
                obj = Words()
                obj._deserialize(item)
                self._Words.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class TextEduPaper(AbstractModel):
    r"""数学试题识别结果

    """

    def __init__(self):
        r"""
        :param _Item: 识别出的字段名称（关键字）
        :type Item: str
        :param _DetectedText: 识别出的字段名称对应的值，也就是字段Item对应的字符串结果
        :type DetectedText: str
        :param _Itemcoord: 文本行在旋转纠正之后的图像中的像素坐标，表示为（左上角x, 左上角y，宽width，高height）
        :type Itemcoord: :class:`tencentcloud.ocr.v20181119.models.ItemCoord`
        """
        self._Item = None
        self._DetectedText = None
        self._Itemcoord = None

    @property
    def Item(self):
        r"""识别出的字段名称（关键字）
        :rtype: str
        """
        return self._Item

    @Item.setter
    def Item(self, Item):
        self._Item = Item

    @property
    def DetectedText(self):
        r"""识别出的字段名称对应的值，也就是字段Item对应的字符串结果
        :rtype: str
        """
        return self._DetectedText

    @DetectedText.setter
    def DetectedText(self, DetectedText):
        self._DetectedText = DetectedText

    @property
    def Itemcoord(self):
        r"""文本行在旋转纠正之后的图像中的像素坐标，表示为（左上角x, 左上角y，宽width，高height）
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ItemCoord`
        """
        return self._Itemcoord

    @Itemcoord.setter
    def Itemcoord(self, Itemcoord):
        self._Itemcoord = Itemcoord


    def _deserialize(self, params):
        self._Item = params.get("Item")
        self._DetectedText = params.get("DetectedText")
        if params.get("Itemcoord") is not None:
            self._Itemcoord = ItemCoord()
            self._Itemcoord._deserialize(params.get("Itemcoord"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class TextFormula(AbstractModel):
    r"""数学公式识别结果

    """

    def __init__(self):
        r"""
        :param _DetectedText: 识别出的文本行内容
        :type DetectedText: str
        """
        self._DetectedText = None

    @property
    def DetectedText(self):
        r"""识别出的文本行内容
        :rtype: str
        """
        return self._DetectedText

    @DetectedText.setter
    def DetectedText(self, DetectedText):
        self._DetectedText = DetectedText


    def _deserialize(self, params):
        self._DetectedText = params.get("DetectedText")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class TextFormulaInfo(AbstractModel):
    r"""公式识别结果

    """

    def __init__(self):
        r"""
        :param _DetectedText: 识别出的文本行内容
        :type DetectedText: str
        :param _Coord: 识别出的文本行内容坐标
        :type Coord: :class:`tencentcloud.ocr.v20181119.models.Polygon`
        """
        self._DetectedText = None
        self._Coord = None

    @property
    def DetectedText(self):
        r"""识别出的文本行内容
        :rtype: str
        """
        return self._DetectedText

    @DetectedText.setter
    def DetectedText(self, DetectedText):
        self._DetectedText = DetectedText

    @property
    def Coord(self):
        r"""识别出的文本行内容坐标
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Polygon`
        """
        return self._Coord

    @Coord.setter
    def Coord(self, Coord):
        self._Coord = Coord


    def _deserialize(self, params):
        self._DetectedText = params.get("DetectedText")
        if params.get("Coord") is not None:
            self._Coord = Polygon()
            self._Coord._deserialize(params.get("Coord"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class TextGeneralHandwriting(AbstractModel):
    r"""文字识别结果

    """

    def __init__(self):
        r"""
        :param _DetectedText: 识别出的文本行内容
        :type DetectedText: str
        :param _Confidence: 置信度 0 - 100
        :type Confidence: int
        :param _Polygon: 文本行坐标，以四个顶点坐标表示
        :type Polygon: list of Coord
        :param _AdvancedInfo: 此字段为扩展字段。
能返回文本行的段落信息，例如：{\"Parag\":{\"ParagNo\":2}}，
其中ParagNo为段落行，从1开始。
        :type AdvancedInfo: str
        :param _WordPolygon: 字的坐标数组，以四个顶点坐标表示
注意：此字段可能返回 null，表示取不到有效值。
        :type WordPolygon: list of Polygon
        """
        self._DetectedText = None
        self._Confidence = None
        self._Polygon = None
        self._AdvancedInfo = None
        self._WordPolygon = None

    @property
    def DetectedText(self):
        r"""识别出的文本行内容
        :rtype: str
        """
        return self._DetectedText

    @DetectedText.setter
    def DetectedText(self, DetectedText):
        self._DetectedText = DetectedText

    @property
    def Confidence(self):
        r"""置信度 0 - 100
        :rtype: int
        """
        return self._Confidence

    @Confidence.setter
    def Confidence(self, Confidence):
        self._Confidence = Confidence

    @property
    def Polygon(self):
        r"""文本行坐标，以四个顶点坐标表示
        :rtype: list of Coord
        """
        return self._Polygon

    @Polygon.setter
    def Polygon(self, Polygon):
        self._Polygon = Polygon

    @property
    def AdvancedInfo(self):
        r"""此字段为扩展字段。
能返回文本行的段落信息，例如：{\"Parag\":{\"ParagNo\":2}}，
其中ParagNo为段落行，从1开始。
        :rtype: str
        """
        return self._AdvancedInfo

    @AdvancedInfo.setter
    def AdvancedInfo(self, AdvancedInfo):
        self._AdvancedInfo = AdvancedInfo

    @property
    def WordPolygon(self):
        r"""字的坐标数组，以四个顶点坐标表示
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of Polygon
        """
        return self._WordPolygon

    @WordPolygon.setter
    def WordPolygon(self, WordPolygon):
        self._WordPolygon = WordPolygon


    def _deserialize(self, params):
        self._DetectedText = params.get("DetectedText")
        self._Confidence = params.get("Confidence")
        if params.get("Polygon") is not None:
            self._Polygon = []
            for item in params.get("Polygon"):
                obj = Coord()
                obj._deserialize(item)
                self._Polygon.append(obj)
        self._AdvancedInfo = params.get("AdvancedInfo")
        if params.get("WordPolygon") is not None:
            self._WordPolygon = []
            for item in params.get("WordPolygon"):
                obj = Polygon()
                obj._deserialize(item)
                self._WordPolygon.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class TextTable(AbstractModel):
    r"""表格识别结果

    """

    def __init__(self):
        r"""
        :param _ColTl: 单元格左上角的列索引
        :type ColTl: int
        :param _RowTl: 单元格左上角的行索引
        :type RowTl: int
        :param _ColBr: 单元格右下角的列索引
        :type ColBr: int
        :param _RowBr: 单元格右下角的行索引
        :type RowBr: int
        :param _Text: 单元格文字
        :type Text: str
        :param _Type: 单元格类型，包含body（表格主体）、header（表头）、footer（表尾）三种
        :type Type: str
        :param _Confidence: 置信度 0 ~100
        :type Confidence: int
        :param _Polygon: 文本行坐标，以四个顶点坐标表示
        :type Polygon: list of Coord
        :param _AdvancedInfo: 此字段为扩展字段
        :type AdvancedInfo: str
        """
        self._ColTl = None
        self._RowTl = None
        self._ColBr = None
        self._RowBr = None
        self._Text = None
        self._Type = None
        self._Confidence = None
        self._Polygon = None
        self._AdvancedInfo = None

    @property
    def ColTl(self):
        r"""单元格左上角的列索引
        :rtype: int
        """
        return self._ColTl

    @ColTl.setter
    def ColTl(self, ColTl):
        self._ColTl = ColTl

    @property
    def RowTl(self):
        r"""单元格左上角的行索引
        :rtype: int
        """
        return self._RowTl

    @RowTl.setter
    def RowTl(self, RowTl):
        self._RowTl = RowTl

    @property
    def ColBr(self):
        r"""单元格右下角的列索引
        :rtype: int
        """
        return self._ColBr

    @ColBr.setter
    def ColBr(self, ColBr):
        self._ColBr = ColBr

    @property
    def RowBr(self):
        r"""单元格右下角的行索引
        :rtype: int
        """
        return self._RowBr

    @RowBr.setter
    def RowBr(self, RowBr):
        self._RowBr = RowBr

    @property
    def Text(self):
        r"""单元格文字
        :rtype: str
        """
        return self._Text

    @Text.setter
    def Text(self, Text):
        self._Text = Text

    @property
    def Type(self):
        r"""单元格类型，包含body（表格主体）、header（表头）、footer（表尾）三种
        :rtype: str
        """
        return self._Type

    @Type.setter
    def Type(self, Type):
        self._Type = Type

    @property
    def Confidence(self):
        r"""置信度 0 ~100
        :rtype: int
        """
        return self._Confidence

    @Confidence.setter
    def Confidence(self, Confidence):
        self._Confidence = Confidence

    @property
    def Polygon(self):
        r"""文本行坐标，以四个顶点坐标表示
        :rtype: list of Coord
        """
        return self._Polygon

    @Polygon.setter
    def Polygon(self, Polygon):
        self._Polygon = Polygon

    @property
    def AdvancedInfo(self):
        r"""此字段为扩展字段
        :rtype: str
        """
        return self._AdvancedInfo

    @AdvancedInfo.setter
    def AdvancedInfo(self, AdvancedInfo):
        self._AdvancedInfo = AdvancedInfo


    def _deserialize(self, params):
        self._ColTl = params.get("ColTl")
        self._RowTl = params.get("RowTl")
        self._ColBr = params.get("ColBr")
        self._RowBr = params.get("RowBr")
        self._Text = params.get("Text")
        self._Type = params.get("Type")
        self._Confidence = params.get("Confidence")
        if params.get("Polygon") is not None:
            self._Polygon = []
            for item in params.get("Polygon"):
                obj = Coord()
                obj._deserialize(item)
                self._Polygon.append(obj)
        self._AdvancedInfo = params.get("AdvancedInfo")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class TextTractorVehicleBack(AbstractModel):
    r"""拖拉机行驶证副页正面的识别结果

    """

    def __init__(self):
        r"""
        :param _PlateNo: 号牌号码
注意：此字段可能返回 null，表示取不到有效值。
        :type PlateNo: str
        :param _AllowNum: 准乘人数
注意：此字段可能返回 null，表示取不到有效值。
        :type AllowNum: str
        :param _CombineHarvesterQuality: 联合收割机质量
注意：此字段可能返回 null，表示取不到有效值。
        :type CombineHarvesterQuality: str
        :param _TractorMinUsageWeight: 拖拉机最小使用质量
注意：此字段可能返回 null，表示取不到有效值。
        :type TractorMinUsageWeight: str
        :param _TractorMaxAllowLoadCapacity: 拖拉机最大允许载质量
注意：此字段可能返回 null，表示取不到有效值。
        :type TractorMaxAllowLoadCapacity: str
        :param _ExternalSize: 外廓尺寸
注意：此字段可能返回 null，表示取不到有效值。
        :type ExternalSize: str
        :param _Record: 检验记录
注意：此字段可能返回 null，表示取不到有效值。
        :type Record: str
        :param _VehicleType: 类型
注意：此字段可能返回 null，表示取不到有效值。
        :type VehicleType: str
        :param _Address: 住址
注意：此字段可能返回 null，表示取不到有效值。
        :type Address: str
        """
        self._PlateNo = None
        self._AllowNum = None
        self._CombineHarvesterQuality = None
        self._TractorMinUsageWeight = None
        self._TractorMaxAllowLoadCapacity = None
        self._ExternalSize = None
        self._Record = None
        self._VehicleType = None
        self._Address = None

    @property
    def PlateNo(self):
        r"""号牌号码
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._PlateNo

    @PlateNo.setter
    def PlateNo(self, PlateNo):
        self._PlateNo = PlateNo

    @property
    def AllowNum(self):
        r"""准乘人数
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._AllowNum

    @AllowNum.setter
    def AllowNum(self, AllowNum):
        self._AllowNum = AllowNum

    @property
    def CombineHarvesterQuality(self):
        r"""联合收割机质量
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._CombineHarvesterQuality

    @CombineHarvesterQuality.setter
    def CombineHarvesterQuality(self, CombineHarvesterQuality):
        self._CombineHarvesterQuality = CombineHarvesterQuality

    @property
    def TractorMinUsageWeight(self):
        r"""拖拉机最小使用质量
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._TractorMinUsageWeight

    @TractorMinUsageWeight.setter
    def TractorMinUsageWeight(self, TractorMinUsageWeight):
        self._TractorMinUsageWeight = TractorMinUsageWeight

    @property
    def TractorMaxAllowLoadCapacity(self):
        r"""拖拉机最大允许载质量
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._TractorMaxAllowLoadCapacity

    @TractorMaxAllowLoadCapacity.setter
    def TractorMaxAllowLoadCapacity(self, TractorMaxAllowLoadCapacity):
        self._TractorMaxAllowLoadCapacity = TractorMaxAllowLoadCapacity

    @property
    def ExternalSize(self):
        r"""外廓尺寸
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._ExternalSize

    @ExternalSize.setter
    def ExternalSize(self, ExternalSize):
        self._ExternalSize = ExternalSize

    @property
    def Record(self):
        r"""检验记录
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Record

    @Record.setter
    def Record(self, Record):
        self._Record = Record

    @property
    def VehicleType(self):
        r"""类型
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._VehicleType

    @VehicleType.setter
    def VehicleType(self, VehicleType):
        self._VehicleType = VehicleType

    @property
    def Address(self):
        r"""住址
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Address

    @Address.setter
    def Address(self, Address):
        self._Address = Address


    def _deserialize(self, params):
        self._PlateNo = params.get("PlateNo")
        self._AllowNum = params.get("AllowNum")
        self._CombineHarvesterQuality = params.get("CombineHarvesterQuality")
        self._TractorMinUsageWeight = params.get("TractorMinUsageWeight")
        self._TractorMaxAllowLoadCapacity = params.get("TractorMaxAllowLoadCapacity")
        self._ExternalSize = params.get("ExternalSize")
        self._Record = params.get("Record")
        self._VehicleType = params.get("VehicleType")
        self._Address = params.get("Address")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class TextVatInvoice(AbstractModel):
    r"""增值税发票识别结果

    """

    def __init__(self):
        r"""
        :param _Name: 识别出的字段名称（关键字）。支持以下字段的识别：
发票代码、 发票号码、 打印发票代码、 打印发票号码、 开票日期、 购买方识别号、 小写金额、 价税合计(大写)、 销售方识别号、 校验码、 购买方名称、 销售方名称、 税额、 复核、 联次名称、 备注、 联次、 密码区、 开票人、 收款人、 （货物或应税劳务、服务名称）、省、 市、 服务类型、 通行费标志、 是否代开、 是否收购、 合计金额、 是否有公司印章、 发票消费类型、 车船税、 机器编号、 成品油标志、 税率、 合计税额、 （购买方地址、电话）、 （销售方地址、电话）、 单价、 金额、 销售方开户行及账号、 购买方开户行及账号、 规格型号、 发票名称、 单位、 数量、 校验码备选、 校验码后六位备选、发票号码备选、车牌号、类型、通行日期起、通行日期止、发票类型。
        :type Name: str
        :param _Value: 识别出的字段名称对应的值，也就是字段Name对应的字符串结果。
        :type Value: str
        :param _Polygon: 字段在原图中的中的四点坐标。
注意：此字段可能返回 null，表示取不到有效值。
注意：此字段可能返回 null，表示取不到有效值。
        :type Polygon: :class:`tencentcloud.ocr.v20181119.models.Polygon`
        """
        self._Name = None
        self._Value = None
        self._Polygon = None

    @property
    def Name(self):
        r"""识别出的字段名称（关键字）。支持以下字段的识别：
发票代码、 发票号码、 打印发票代码、 打印发票号码、 开票日期、 购买方识别号、 小写金额、 价税合计(大写)、 销售方识别号、 校验码、 购买方名称、 销售方名称、 税额、 复核、 联次名称、 备注、 联次、 密码区、 开票人、 收款人、 （货物或应税劳务、服务名称）、省、 市、 服务类型、 通行费标志、 是否代开、 是否收购、 合计金额、 是否有公司印章、 发票消费类型、 车船税、 机器编号、 成品油标志、 税率、 合计税额、 （购买方地址、电话）、 （销售方地址、电话）、 单价、 金额、 销售方开户行及账号、 购买方开户行及账号、 规格型号、 发票名称、 单位、 数量、 校验码备选、 校验码后六位备选、发票号码备选、车牌号、类型、通行日期起、通行日期止、发票类型。
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Value(self):
        r"""识别出的字段名称对应的值，也就是字段Name对应的字符串结果。
        :rtype: str
        """
        return self._Value

    @Value.setter
    def Value(self, Value):
        self._Value = Value

    @property
    def Polygon(self):
        r"""字段在原图中的中的四点坐标。
注意：此字段可能返回 null，表示取不到有效值。
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Polygon`
        """
        return self._Polygon

    @Polygon.setter
    def Polygon(self, Polygon):
        self._Polygon = Polygon


    def _deserialize(self, params):
        self._Name = params.get("Name")
        self._Value = params.get("Value")
        if params.get("Polygon") is not None:
            self._Polygon = Polygon()
            self._Polygon._deserialize(params.get("Polygon"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class TextVehicleBack(AbstractModel):
    r"""行驶证副页正面的识别结果

    """

    def __init__(self):
        r"""
        :param _PlateNo: 号牌号码
注意：此字段可能返回 null，表示取不到有效值。
        :type PlateNo: str
        :param _FileNo: 档案编号
注意：此字段可能返回 null，表示取不到有效值。
        :type FileNo: str
        :param _AllowNum: 核定人数
注意：此字段可能返回 null，表示取不到有效值。
        :type AllowNum: str
        :param _TotalMass: 总质量
注意：此字段可能返回 null，表示取不到有效值。
        :type TotalMass: str
        :param _CurbWeight: 整备质量
注意：此字段可能返回 null，表示取不到有效值。
        :type CurbWeight: str
        :param _LoadQuality: 核定载质量
注意：此字段可能返回 null，表示取不到有效值。
        :type LoadQuality: str
        :param _ExternalSize: 外廓尺寸
注意：此字段可能返回 null，表示取不到有效值。
        :type ExternalSize: str
        :param _Marks: 备注
注意：此字段可能返回 null，表示取不到有效值。
        :type Marks: str
        :param _Record: 检验记录
注意：此字段可能返回 null，表示取不到有效值。
        :type Record: str
        :param _TotalQuasiMass: 准牵引总质量
注意：此字段可能返回 null，表示取不到有效值。
        :type TotalQuasiMass: str
        :param _SubPageCode: 副页编码
注意：此字段可能返回 null，表示取不到有效值。
        :type SubPageCode: str
        :param _FuelType: 燃料种类

注意：此字段可能返回 null，表示取不到有效值。
        :type FuelType: str
        :param _AddressElectronic: 住址
        :type AddressElectronic: str
        :param _IssueAuthorityElectronic: 发证机关
        :type IssueAuthorityElectronic: str
        :param _CarBodyColor: 车身颜色
        :type CarBodyColor: str
        """
        self._PlateNo = None
        self._FileNo = None
        self._AllowNum = None
        self._TotalMass = None
        self._CurbWeight = None
        self._LoadQuality = None
        self._ExternalSize = None
        self._Marks = None
        self._Record = None
        self._TotalQuasiMass = None
        self._SubPageCode = None
        self._FuelType = None
        self._AddressElectronic = None
        self._IssueAuthorityElectronic = None
        self._CarBodyColor = None

    @property
    def PlateNo(self):
        r"""号牌号码
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._PlateNo

    @PlateNo.setter
    def PlateNo(self, PlateNo):
        self._PlateNo = PlateNo

    @property
    def FileNo(self):
        r"""档案编号
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._FileNo

    @FileNo.setter
    def FileNo(self, FileNo):
        self._FileNo = FileNo

    @property
    def AllowNum(self):
        r"""核定人数
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._AllowNum

    @AllowNum.setter
    def AllowNum(self, AllowNum):
        self._AllowNum = AllowNum

    @property
    def TotalMass(self):
        r"""总质量
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._TotalMass

    @TotalMass.setter
    def TotalMass(self, TotalMass):
        self._TotalMass = TotalMass

    @property
    def CurbWeight(self):
        r"""整备质量
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._CurbWeight

    @CurbWeight.setter
    def CurbWeight(self, CurbWeight):
        self._CurbWeight = CurbWeight

    @property
    def LoadQuality(self):
        r"""核定载质量
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._LoadQuality

    @LoadQuality.setter
    def LoadQuality(self, LoadQuality):
        self._LoadQuality = LoadQuality

    @property
    def ExternalSize(self):
        r"""外廓尺寸
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._ExternalSize

    @ExternalSize.setter
    def ExternalSize(self, ExternalSize):
        self._ExternalSize = ExternalSize

    @property
    def Marks(self):
        r"""备注
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Marks

    @Marks.setter
    def Marks(self, Marks):
        self._Marks = Marks

    @property
    def Record(self):
        r"""检验记录
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Record

    @Record.setter
    def Record(self, Record):
        self._Record = Record

    @property
    def TotalQuasiMass(self):
        r"""准牵引总质量
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._TotalQuasiMass

    @TotalQuasiMass.setter
    def TotalQuasiMass(self, TotalQuasiMass):
        self._TotalQuasiMass = TotalQuasiMass

    @property
    def SubPageCode(self):
        r"""副页编码
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._SubPageCode

    @SubPageCode.setter
    def SubPageCode(self, SubPageCode):
        self._SubPageCode = SubPageCode

    @property
    def FuelType(self):
        r"""燃料种类

注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._FuelType

    @FuelType.setter
    def FuelType(self, FuelType):
        self._FuelType = FuelType

    @property
    def AddressElectronic(self):
        r"""住址
        :rtype: str
        """
        return self._AddressElectronic

    @AddressElectronic.setter
    def AddressElectronic(self, AddressElectronic):
        self._AddressElectronic = AddressElectronic

    @property
    def IssueAuthorityElectronic(self):
        r"""发证机关
        :rtype: str
        """
        return self._IssueAuthorityElectronic

    @IssueAuthorityElectronic.setter
    def IssueAuthorityElectronic(self, IssueAuthorityElectronic):
        self._IssueAuthorityElectronic = IssueAuthorityElectronic

    @property
    def CarBodyColor(self):
        r"""车身颜色
        :rtype: str
        """
        return self._CarBodyColor

    @CarBodyColor.setter
    def CarBodyColor(self, CarBodyColor):
        self._CarBodyColor = CarBodyColor


    def _deserialize(self, params):
        self._PlateNo = params.get("PlateNo")
        self._FileNo = params.get("FileNo")
        self._AllowNum = params.get("AllowNum")
        self._TotalMass = params.get("TotalMass")
        self._CurbWeight = params.get("CurbWeight")
        self._LoadQuality = params.get("LoadQuality")
        self._ExternalSize = params.get("ExternalSize")
        self._Marks = params.get("Marks")
        self._Record = params.get("Record")
        self._TotalQuasiMass = params.get("TotalQuasiMass")
        self._SubPageCode = params.get("SubPageCode")
        self._FuelType = params.get("FuelType")
        self._AddressElectronic = params.get("AddressElectronic")
        self._IssueAuthorityElectronic = params.get("IssueAuthorityElectronic")
        self._CarBodyColor = params.get("CarBodyColor")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class TextVehicleFront(AbstractModel):
    r"""行驶证主页正面的识别结果

    """

    def __init__(self):
        r"""
        :param _PlateNo: 号牌号码
注意：此字段可能返回 null，表示取不到有效值。
        :type PlateNo: str
        :param _VehicleType: 车辆类型
注意：此字段可能返回 null，表示取不到有效值。
        :type VehicleType: str
        :param _Owner: 所有人
注意：此字段可能返回 null，表示取不到有效值。
        :type Owner: str
        :param _Address: 住址
注意：此字段可能返回 null，表示取不到有效值。
        :type Address: str
        :param _UseCharacter: 使用性质
注意：此字段可能返回 null，表示取不到有效值。
        :type UseCharacter: str
        :param _Model: 品牌型号
注意：此字段可能返回 null，表示取不到有效值。
        :type Model: str
        :param _Vin: 车辆识别代号
注意：此字段可能返回 null，表示取不到有效值。
        :type Vin: str
        :param _EngineNo: 发动机号码
注意：此字段可能返回 null，表示取不到有效值。
        :type EngineNo: str
        :param _RegisterDate: 注册日期
注意：此字段可能返回 null，表示取不到有效值。
        :type RegisterDate: str
        :param _IssueDate: 发证日期
注意：此字段可能返回 null，表示取不到有效值。
        :type IssueDate: str
        :param _Seal: 印章
注意：此字段可能返回 null，表示取不到有效值。
        :type Seal: str
        :param _StateElectronic: 状态，该字段仅支持电子行驶证返回
        :type StateElectronic: str
        :param _InspectionValidityTimeElectronic: 检验有效期，该字段仅支持电子行驶证返回
        :type InspectionValidityTimeElectronic: str
        :param _GenerationTimeElectronic: 生成时间，该字段仅支持电子行驶证返回
        :type GenerationTimeElectronic: str
        """
        self._PlateNo = None
        self._VehicleType = None
        self._Owner = None
        self._Address = None
        self._UseCharacter = None
        self._Model = None
        self._Vin = None
        self._EngineNo = None
        self._RegisterDate = None
        self._IssueDate = None
        self._Seal = None
        self._StateElectronic = None
        self._InspectionValidityTimeElectronic = None
        self._GenerationTimeElectronic = None

    @property
    def PlateNo(self):
        r"""号牌号码
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._PlateNo

    @PlateNo.setter
    def PlateNo(self, PlateNo):
        self._PlateNo = PlateNo

    @property
    def VehicleType(self):
        r"""车辆类型
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._VehicleType

    @VehicleType.setter
    def VehicleType(self, VehicleType):
        self._VehicleType = VehicleType

    @property
    def Owner(self):
        r"""所有人
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Owner

    @Owner.setter
    def Owner(self, Owner):
        self._Owner = Owner

    @property
    def Address(self):
        r"""住址
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Address

    @Address.setter
    def Address(self, Address):
        self._Address = Address

    @property
    def UseCharacter(self):
        r"""使用性质
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._UseCharacter

    @UseCharacter.setter
    def UseCharacter(self, UseCharacter):
        self._UseCharacter = UseCharacter

    @property
    def Model(self):
        r"""品牌型号
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Model

    @Model.setter
    def Model(self, Model):
        self._Model = Model

    @property
    def Vin(self):
        r"""车辆识别代号
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Vin

    @Vin.setter
    def Vin(self, Vin):
        self._Vin = Vin

    @property
    def EngineNo(self):
        r"""发动机号码
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._EngineNo

    @EngineNo.setter
    def EngineNo(self, EngineNo):
        self._EngineNo = EngineNo

    @property
    def RegisterDate(self):
        r"""注册日期
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._RegisterDate

    @RegisterDate.setter
    def RegisterDate(self, RegisterDate):
        self._RegisterDate = RegisterDate

    @property
    def IssueDate(self):
        r"""发证日期
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._IssueDate

    @IssueDate.setter
    def IssueDate(self, IssueDate):
        self._IssueDate = IssueDate

    @property
    def Seal(self):
        r"""印章
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Seal

    @Seal.setter
    def Seal(self, Seal):
        self._Seal = Seal

    @property
    def StateElectronic(self):
        r"""状态，该字段仅支持电子行驶证返回
        :rtype: str
        """
        return self._StateElectronic

    @StateElectronic.setter
    def StateElectronic(self, StateElectronic):
        self._StateElectronic = StateElectronic

    @property
    def InspectionValidityTimeElectronic(self):
        r"""检验有效期，该字段仅支持电子行驶证返回
        :rtype: str
        """
        return self._InspectionValidityTimeElectronic

    @InspectionValidityTimeElectronic.setter
    def InspectionValidityTimeElectronic(self, InspectionValidityTimeElectronic):
        self._InspectionValidityTimeElectronic = InspectionValidityTimeElectronic

    @property
    def GenerationTimeElectronic(self):
        r"""生成时间，该字段仅支持电子行驶证返回
        :rtype: str
        """
        return self._GenerationTimeElectronic

    @GenerationTimeElectronic.setter
    def GenerationTimeElectronic(self, GenerationTimeElectronic):
        self._GenerationTimeElectronic = GenerationTimeElectronic


    def _deserialize(self, params):
        self._PlateNo = params.get("PlateNo")
        self._VehicleType = params.get("VehicleType")
        self._Owner = params.get("Owner")
        self._Address = params.get("Address")
        self._UseCharacter = params.get("UseCharacter")
        self._Model = params.get("Model")
        self._Vin = params.get("Vin")
        self._EngineNo = params.get("EngineNo")
        self._RegisterDate = params.get("RegisterDate")
        self._IssueDate = params.get("IssueDate")
        self._Seal = params.get("Seal")
        self._StateElectronic = params.get("StateElectronic")
        self._InspectionValidityTimeElectronic = params.get("InspectionValidityTimeElectronic")
        self._GenerationTimeElectronic = params.get("GenerationTimeElectronic")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class TextWaybill(AbstractModel):
    r"""运单识别结果

    """

    def __init__(self):
        r"""
        :param _RecName: <p>收件人姓名</p>
        :type RecName: :class:`tencentcloud.ocr.v20181119.models.WaybillObj`
        :param _RecNum: <p>收件人手机号</p>
        :type RecNum: :class:`tencentcloud.ocr.v20181119.models.WaybillObj`
        :param _RecAddr: <p>收件人地址</p>
        :type RecAddr: :class:`tencentcloud.ocr.v20181119.models.WaybillObj`
        :param _SenderName: <p>寄件人姓名</p>
        :type SenderName: :class:`tencentcloud.ocr.v20181119.models.WaybillObj`
        :param _SenderNum: <p>寄件人手机号</p>
        :type SenderNum: :class:`tencentcloud.ocr.v20181119.models.WaybillObj`
        :param _SenderAddr: <p>寄件人地址</p>
        :type SenderAddr: :class:`tencentcloud.ocr.v20181119.models.WaybillObj`
        :param _WaybillNum: <p>运单号, 当同时存在 母 / 子 运单号时， 该字段为子运单号</p>
        :type WaybillNum: :class:`tencentcloud.ocr.v20181119.models.WaybillObj`
        :param _MainWaybillNum: <p>母运单号， 当不存在母运单号时， 该字段为不存在</p>
        :type MainWaybillNum: :class:`tencentcloud.ocr.v20181119.models.WaybillObj`
        """
        self._RecName = None
        self._RecNum = None
        self._RecAddr = None
        self._SenderName = None
        self._SenderNum = None
        self._SenderAddr = None
        self._WaybillNum = None
        self._MainWaybillNum = None

    @property
    def RecName(self):
        r"""<p>收件人姓名</p>
        :rtype: :class:`tencentcloud.ocr.v20181119.models.WaybillObj`
        """
        return self._RecName

    @RecName.setter
    def RecName(self, RecName):
        self._RecName = RecName

    @property
    def RecNum(self):
        r"""<p>收件人手机号</p>
        :rtype: :class:`tencentcloud.ocr.v20181119.models.WaybillObj`
        """
        return self._RecNum

    @RecNum.setter
    def RecNum(self, RecNum):
        self._RecNum = RecNum

    @property
    def RecAddr(self):
        r"""<p>收件人地址</p>
        :rtype: :class:`tencentcloud.ocr.v20181119.models.WaybillObj`
        """
        return self._RecAddr

    @RecAddr.setter
    def RecAddr(self, RecAddr):
        self._RecAddr = RecAddr

    @property
    def SenderName(self):
        r"""<p>寄件人姓名</p>
        :rtype: :class:`tencentcloud.ocr.v20181119.models.WaybillObj`
        """
        return self._SenderName

    @SenderName.setter
    def SenderName(self, SenderName):
        self._SenderName = SenderName

    @property
    def SenderNum(self):
        r"""<p>寄件人手机号</p>
        :rtype: :class:`tencentcloud.ocr.v20181119.models.WaybillObj`
        """
        return self._SenderNum

    @SenderNum.setter
    def SenderNum(self, SenderNum):
        self._SenderNum = SenderNum

    @property
    def SenderAddr(self):
        r"""<p>寄件人地址</p>
        :rtype: :class:`tencentcloud.ocr.v20181119.models.WaybillObj`
        """
        return self._SenderAddr

    @SenderAddr.setter
    def SenderAddr(self, SenderAddr):
        self._SenderAddr = SenderAddr

    @property
    def WaybillNum(self):
        r"""<p>运单号, 当同时存在 母 / 子 运单号时， 该字段为子运单号</p>
        :rtype: :class:`tencentcloud.ocr.v20181119.models.WaybillObj`
        """
        return self._WaybillNum

    @WaybillNum.setter
    def WaybillNum(self, WaybillNum):
        self._WaybillNum = WaybillNum

    @property
    def MainWaybillNum(self):
        r"""<p>母运单号， 当不存在母运单号时， 该字段为不存在</p>
        :rtype: :class:`tencentcloud.ocr.v20181119.models.WaybillObj`
        """
        return self._MainWaybillNum

    @MainWaybillNum.setter
    def MainWaybillNum(self, MainWaybillNum):
        self._MainWaybillNum = MainWaybillNum


    def _deserialize(self, params):
        if params.get("RecName") is not None:
            self._RecName = WaybillObj()
            self._RecName._deserialize(params.get("RecName"))
        if params.get("RecNum") is not None:
            self._RecNum = WaybillObj()
            self._RecNum._deserialize(params.get("RecNum"))
        if params.get("RecAddr") is not None:
            self._RecAddr = WaybillObj()
            self._RecAddr._deserialize(params.get("RecAddr"))
        if params.get("SenderName") is not None:
            self._SenderName = WaybillObj()
            self._SenderName._deserialize(params.get("SenderName"))
        if params.get("SenderNum") is not None:
            self._SenderNum = WaybillObj()
            self._SenderNum._deserialize(params.get("SenderNum"))
        if params.get("SenderAddr") is not None:
            self._SenderAddr = WaybillObj()
            self._SenderAddr._deserialize(params.get("SenderAddr"))
        if params.get("WaybillNum") is not None:
            self._WaybillNum = WaybillObj()
            self._WaybillNum._deserialize(params.get("WaybillNum"))
        if params.get("MainWaybillNum") is not None:
            self._MainWaybillNum = WaybillObj()
            self._MainWaybillNum._deserialize(params.get("MainWaybillNum"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class TollInvoice(AbstractModel):
    r"""过路过桥费发票

    """

    def __init__(self):
        r"""
        :param _Title: 发票名称
        :type Title: str
        :param _Code: 发票代码
        :type Code: str
        :param _Number: 发票号码
        :type Number: str
        :param _Total: 价税合计（小写）
        :type Total: str
        :param _Kind: 发票消费类型
        :type Kind: str
        :param _Date: 日期
        :type Date: str
        :param _Time: 时间
        :type Time: str
        :param _Entrance: 入口
        :type Entrance: str
        :param _Exit: 出口
        :type Exit: str
        :param _HighwayMark: 高速标志（0：没有，1：有）
        :type HighwayMark: int
        :param _QRCodeMark: 是否存在二维码（1：有，0：无）
        :type QRCodeMark: int
        """
        self._Title = None
        self._Code = None
        self._Number = None
        self._Total = None
        self._Kind = None
        self._Date = None
        self._Time = None
        self._Entrance = None
        self._Exit = None
        self._HighwayMark = None
        self._QRCodeMark = None

    @property
    def Title(self):
        r"""发票名称
        :rtype: str
        """
        return self._Title

    @Title.setter
    def Title(self, Title):
        self._Title = Title

    @property
    def Code(self):
        r"""发票代码
        :rtype: str
        """
        return self._Code

    @Code.setter
    def Code(self, Code):
        self._Code = Code

    @property
    def Number(self):
        r"""发票号码
        :rtype: str
        """
        return self._Number

    @Number.setter
    def Number(self, Number):
        self._Number = Number

    @property
    def Total(self):
        r"""价税合计（小写）
        :rtype: str
        """
        return self._Total

    @Total.setter
    def Total(self, Total):
        self._Total = Total

    @property
    def Kind(self):
        r"""发票消费类型
        :rtype: str
        """
        return self._Kind

    @Kind.setter
    def Kind(self, Kind):
        self._Kind = Kind

    @property
    def Date(self):
        r"""日期
        :rtype: str
        """
        return self._Date

    @Date.setter
    def Date(self, Date):
        self._Date = Date

    @property
    def Time(self):
        r"""时间
        :rtype: str
        """
        return self._Time

    @Time.setter
    def Time(self, Time):
        self._Time = Time

    @property
    def Entrance(self):
        r"""入口
        :rtype: str
        """
        return self._Entrance

    @Entrance.setter
    def Entrance(self, Entrance):
        self._Entrance = Entrance

    @property
    def Exit(self):
        r"""出口
        :rtype: str
        """
        return self._Exit

    @Exit.setter
    def Exit(self, Exit):
        self._Exit = Exit

    @property
    def HighwayMark(self):
        r"""高速标志（0：没有，1：有）
        :rtype: int
        """
        return self._HighwayMark

    @HighwayMark.setter
    def HighwayMark(self, HighwayMark):
        self._HighwayMark = HighwayMark

    @property
    def QRCodeMark(self):
        r"""是否存在二维码（1：有，0：无）
        :rtype: int
        """
        return self._QRCodeMark

    @QRCodeMark.setter
    def QRCodeMark(self, QRCodeMark):
        self._QRCodeMark = QRCodeMark


    def _deserialize(self, params):
        self._Title = params.get("Title")
        self._Code = params.get("Code")
        self._Number = params.get("Number")
        self._Total = params.get("Total")
        self._Kind = params.get("Kind")
        self._Date = params.get("Date")
        self._Time = params.get("Time")
        self._Entrance = params.get("Entrance")
        self._Exit = params.get("Exit")
        self._HighwayMark = params.get("HighwayMark")
        self._QRCodeMark = params.get("QRCodeMark")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class TrainTicket(AbstractModel):
    r"""火车票

    """

    def __init__(self):
        r"""
        :param _Title: 发票名称
        :type Title: str
        :param _Number: 发票号码
        :type Number: str
        :param _DateGetOn: 乘车日期
        :type DateGetOn: str
        :param _TimeGetOn: 乘车时间
        :type TimeGetOn: str
        :param _Name: 乘车人姓名
        :type Name: str
        :param _StationGetOn: 出发车站
        :type StationGetOn: str
        :param _StationGetOff: 到达车站
        :type StationGetOff: str
        :param _Seat: 座位类型
        :type Seat: str
        :param _Total: 总金额
        :type Total: str
        :param _Kind: 发票消费类型
        :type Kind: str
        :param _SerialNumber: 序列号
        :type SerialNumber: str
        :param _UserID: 身份证号
        :type UserID: str
        :param _GateNumber: 检票口
        :type GateNumber: str
        :param _TrainNumber: 车次
        :type TrainNumber: str
        :param _HandlingFee: 手续费
        :type HandlingFee: str
        :param _OriginalFare: 原票价
        :type OriginalFare: str
        :param _TotalCn: 大写金额
        :type TotalCn: str
        :param _SeatNumber: 座位号
        :type SeatNumber: str
        :param _PickUpAddress: 取票地址
        :type PickUpAddress: str
        :param _TicketChange: 是否始发改签
        :type TicketChange: str
        :param _AdditionalFare: 加收票价
        :type AdditionalFare: str
        :param _ReceiptNumber: 收据号码
        :type ReceiptNumber: str
        :param _QRCodeMark: 是否存在二维码（1：有，0：无）
        :type QRCodeMark: int
        :param _ReimburseOnlyMark: 是否仅供报销使用（0：没有，1：有）
        :type ReimburseOnlyMark: int
        :param _RefundMark: 是否有退票费标识（0：没有，1：有）
        :type RefundMark: int
        :param _TicketChangeMark: 是否有改签费标识（0：没有，1：有）
        :type TicketChangeMark: int
        """
        self._Title = None
        self._Number = None
        self._DateGetOn = None
        self._TimeGetOn = None
        self._Name = None
        self._StationGetOn = None
        self._StationGetOff = None
        self._Seat = None
        self._Total = None
        self._Kind = None
        self._SerialNumber = None
        self._UserID = None
        self._GateNumber = None
        self._TrainNumber = None
        self._HandlingFee = None
        self._OriginalFare = None
        self._TotalCn = None
        self._SeatNumber = None
        self._PickUpAddress = None
        self._TicketChange = None
        self._AdditionalFare = None
        self._ReceiptNumber = None
        self._QRCodeMark = None
        self._ReimburseOnlyMark = None
        self._RefundMark = None
        self._TicketChangeMark = None

    @property
    def Title(self):
        r"""发票名称
        :rtype: str
        """
        return self._Title

    @Title.setter
    def Title(self, Title):
        self._Title = Title

    @property
    def Number(self):
        r"""发票号码
        :rtype: str
        """
        return self._Number

    @Number.setter
    def Number(self, Number):
        self._Number = Number

    @property
    def DateGetOn(self):
        r"""乘车日期
        :rtype: str
        """
        return self._DateGetOn

    @DateGetOn.setter
    def DateGetOn(self, DateGetOn):
        self._DateGetOn = DateGetOn

    @property
    def TimeGetOn(self):
        r"""乘车时间
        :rtype: str
        """
        return self._TimeGetOn

    @TimeGetOn.setter
    def TimeGetOn(self, TimeGetOn):
        self._TimeGetOn = TimeGetOn

    @property
    def Name(self):
        r"""乘车人姓名
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def StationGetOn(self):
        r"""出发车站
        :rtype: str
        """
        return self._StationGetOn

    @StationGetOn.setter
    def StationGetOn(self, StationGetOn):
        self._StationGetOn = StationGetOn

    @property
    def StationGetOff(self):
        r"""到达车站
        :rtype: str
        """
        return self._StationGetOff

    @StationGetOff.setter
    def StationGetOff(self, StationGetOff):
        self._StationGetOff = StationGetOff

    @property
    def Seat(self):
        r"""座位类型
        :rtype: str
        """
        return self._Seat

    @Seat.setter
    def Seat(self, Seat):
        self._Seat = Seat

    @property
    def Total(self):
        r"""总金额
        :rtype: str
        """
        return self._Total

    @Total.setter
    def Total(self, Total):
        self._Total = Total

    @property
    def Kind(self):
        r"""发票消费类型
        :rtype: str
        """
        return self._Kind

    @Kind.setter
    def Kind(self, Kind):
        self._Kind = Kind

    @property
    def SerialNumber(self):
        r"""序列号
        :rtype: str
        """
        return self._SerialNumber

    @SerialNumber.setter
    def SerialNumber(self, SerialNumber):
        self._SerialNumber = SerialNumber

    @property
    def UserID(self):
        r"""身份证号
        :rtype: str
        """
        return self._UserID

    @UserID.setter
    def UserID(self, UserID):
        self._UserID = UserID

    @property
    def GateNumber(self):
        r"""检票口
        :rtype: str
        """
        return self._GateNumber

    @GateNumber.setter
    def GateNumber(self, GateNumber):
        self._GateNumber = GateNumber

    @property
    def TrainNumber(self):
        r"""车次
        :rtype: str
        """
        return self._TrainNumber

    @TrainNumber.setter
    def TrainNumber(self, TrainNumber):
        self._TrainNumber = TrainNumber

    @property
    def HandlingFee(self):
        r"""手续费
        :rtype: str
        """
        return self._HandlingFee

    @HandlingFee.setter
    def HandlingFee(self, HandlingFee):
        self._HandlingFee = HandlingFee

    @property
    def OriginalFare(self):
        r"""原票价
        :rtype: str
        """
        return self._OriginalFare

    @OriginalFare.setter
    def OriginalFare(self, OriginalFare):
        self._OriginalFare = OriginalFare

    @property
    def TotalCn(self):
        r"""大写金额
        :rtype: str
        """
        return self._TotalCn

    @TotalCn.setter
    def TotalCn(self, TotalCn):
        self._TotalCn = TotalCn

    @property
    def SeatNumber(self):
        r"""座位号
        :rtype: str
        """
        return self._SeatNumber

    @SeatNumber.setter
    def SeatNumber(self, SeatNumber):
        self._SeatNumber = SeatNumber

    @property
    def PickUpAddress(self):
        r"""取票地址
        :rtype: str
        """
        return self._PickUpAddress

    @PickUpAddress.setter
    def PickUpAddress(self, PickUpAddress):
        self._PickUpAddress = PickUpAddress

    @property
    def TicketChange(self):
        r"""是否始发改签
        :rtype: str
        """
        return self._TicketChange

    @TicketChange.setter
    def TicketChange(self, TicketChange):
        self._TicketChange = TicketChange

    @property
    def AdditionalFare(self):
        r"""加收票价
        :rtype: str
        """
        return self._AdditionalFare

    @AdditionalFare.setter
    def AdditionalFare(self, AdditionalFare):
        self._AdditionalFare = AdditionalFare

    @property
    def ReceiptNumber(self):
        r"""收据号码
        :rtype: str
        """
        return self._ReceiptNumber

    @ReceiptNumber.setter
    def ReceiptNumber(self, ReceiptNumber):
        self._ReceiptNumber = ReceiptNumber

    @property
    def QRCodeMark(self):
        r"""是否存在二维码（1：有，0：无）
        :rtype: int
        """
        return self._QRCodeMark

    @QRCodeMark.setter
    def QRCodeMark(self, QRCodeMark):
        self._QRCodeMark = QRCodeMark

    @property
    def ReimburseOnlyMark(self):
        r"""是否仅供报销使用（0：没有，1：有）
        :rtype: int
        """
        return self._ReimburseOnlyMark

    @ReimburseOnlyMark.setter
    def ReimburseOnlyMark(self, ReimburseOnlyMark):
        self._ReimburseOnlyMark = ReimburseOnlyMark

    @property
    def RefundMark(self):
        r"""是否有退票费标识（0：没有，1：有）
        :rtype: int
        """
        return self._RefundMark

    @RefundMark.setter
    def RefundMark(self, RefundMark):
        self._RefundMark = RefundMark

    @property
    def TicketChangeMark(self):
        r"""是否有改签费标识（0：没有，1：有）
        :rtype: int
        """
        return self._TicketChangeMark

    @TicketChangeMark.setter
    def TicketChangeMark(self, TicketChangeMark):
        self._TicketChangeMark = TicketChangeMark


    def _deserialize(self, params):
        self._Title = params.get("Title")
        self._Number = params.get("Number")
        self._DateGetOn = params.get("DateGetOn")
        self._TimeGetOn = params.get("TimeGetOn")
        self._Name = params.get("Name")
        self._StationGetOn = params.get("StationGetOn")
        self._StationGetOff = params.get("StationGetOff")
        self._Seat = params.get("Seat")
        self._Total = params.get("Total")
        self._Kind = params.get("Kind")
        self._SerialNumber = params.get("SerialNumber")
        self._UserID = params.get("UserID")
        self._GateNumber = params.get("GateNumber")
        self._TrainNumber = params.get("TrainNumber")
        self._HandlingFee = params.get("HandlingFee")
        self._OriginalFare = params.get("OriginalFare")
        self._TotalCn = params.get("TotalCn")
        self._SeatNumber = params.get("SeatNumber")
        self._PickUpAddress = params.get("PickUpAddress")
        self._TicketChange = params.get("TicketChange")
        self._AdditionalFare = params.get("AdditionalFare")
        self._ReceiptNumber = params.get("ReceiptNumber")
        self._QRCodeMark = params.get("QRCodeMark")
        self._ReimburseOnlyMark = params.get("ReimburseOnlyMark")
        self._RefundMark = params.get("RefundMark")
        self._TicketChangeMark = params.get("TicketChangeMark")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class TrainTicketOCRRequest(AbstractModel):
    r"""TrainTicketOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        :param _IsPdf: 是否开启PDF识别，默认值为true，开启后可同时支持图片和PDF的识别。
        :type IsPdf: bool
        :param _PdfPageNumber: 需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :type PdfPageNumber: int
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._IsPdf = None
        self._PdfPageNumber = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def IsPdf(self):
        r"""是否开启PDF识别，默认值为true，开启后可同时支持图片和PDF的识别。
        :rtype: bool
        """
        return self._IsPdf

    @IsPdf.setter
    def IsPdf(self, IsPdf):
        self._IsPdf = IsPdf

    @property
    def PdfPageNumber(self):
        r"""需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :rtype: int
        """
        return self._PdfPageNumber

    @PdfPageNumber.setter
    def PdfPageNumber(self, PdfPageNumber):
        self._PdfPageNumber = PdfPageNumber


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._IsPdf = params.get("IsPdf")
        self._PdfPageNumber = params.get("PdfPageNumber")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class TrainTicketOCRResponse(AbstractModel):
    r"""TrainTicketOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _TicketNum: 编号
        :type TicketNum: str
        :param _StartStation: 出发站
        :type StartStation: str
        :param _DestinationStation: 到达站
        :type DestinationStation: str
        :param _Date: 出发时间
        :type Date: str
        :param _TrainNum: 车次
        :type TrainNum: str
        :param _Seat: 座位号
        :type Seat: str
        :param _Name: 姓名
        :type Name: str
        :param _Price: 票价
        :type Price: str
        :param _SeatCategory: 席别
        :type SeatCategory: str
        :param _ID: 身份证号
        :type ID: str
        :param _InvoiceType: 发票消费类型：交通
        :type InvoiceType: str
        :param _SerialNumber: 序列号
        :type SerialNumber: str
        :param _AdditionalCost: 加收票价
        :type AdditionalCost: str
        :param _HandlingFee: 手续费
        :type HandlingFee: str
        :param _LegalAmount: 大写金额（票面有大写金额该字段才有值）
        :type LegalAmount: str
        :param _TicketStation: 售票站
        :type TicketStation: str
        :param _OriginalPrice: 原票价（一般有手续费的才有原始票价字段）
        :type OriginalPrice: str
        :param _InvoiceStyle: 发票类型：火车票、火车票补票、火车票退票凭证
        :type InvoiceStyle: str
        :param _ReceiptNumber: 收据号码
        :type ReceiptNumber: str
        :param _IsReceipt: 仅供报销使用：1为是，0为否
        :type IsReceipt: str
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._TicketNum = None
        self._StartStation = None
        self._DestinationStation = None
        self._Date = None
        self._TrainNum = None
        self._Seat = None
        self._Name = None
        self._Price = None
        self._SeatCategory = None
        self._ID = None
        self._InvoiceType = None
        self._SerialNumber = None
        self._AdditionalCost = None
        self._HandlingFee = None
        self._LegalAmount = None
        self._TicketStation = None
        self._OriginalPrice = None
        self._InvoiceStyle = None
        self._ReceiptNumber = None
        self._IsReceipt = None
        self._RequestId = None

    @property
    def TicketNum(self):
        r"""编号
        :rtype: str
        """
        return self._TicketNum

    @TicketNum.setter
    def TicketNum(self, TicketNum):
        self._TicketNum = TicketNum

    @property
    def StartStation(self):
        r"""出发站
        :rtype: str
        """
        return self._StartStation

    @StartStation.setter
    def StartStation(self, StartStation):
        self._StartStation = StartStation

    @property
    def DestinationStation(self):
        r"""到达站
        :rtype: str
        """
        return self._DestinationStation

    @DestinationStation.setter
    def DestinationStation(self, DestinationStation):
        self._DestinationStation = DestinationStation

    @property
    def Date(self):
        r"""出发时间
        :rtype: str
        """
        return self._Date

    @Date.setter
    def Date(self, Date):
        self._Date = Date

    @property
    def TrainNum(self):
        r"""车次
        :rtype: str
        """
        return self._TrainNum

    @TrainNum.setter
    def TrainNum(self, TrainNum):
        self._TrainNum = TrainNum

    @property
    def Seat(self):
        r"""座位号
        :rtype: str
        """
        return self._Seat

    @Seat.setter
    def Seat(self, Seat):
        self._Seat = Seat

    @property
    def Name(self):
        r"""姓名
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Price(self):
        r"""票价
        :rtype: str
        """
        return self._Price

    @Price.setter
    def Price(self, Price):
        self._Price = Price

    @property
    def SeatCategory(self):
        r"""席别
        :rtype: str
        """
        return self._SeatCategory

    @SeatCategory.setter
    def SeatCategory(self, SeatCategory):
        self._SeatCategory = SeatCategory

    @property
    def ID(self):
        r"""身份证号
        :rtype: str
        """
        return self._ID

    @ID.setter
    def ID(self, ID):
        self._ID = ID

    @property
    def InvoiceType(self):
        r"""发票消费类型：交通
        :rtype: str
        """
        return self._InvoiceType

    @InvoiceType.setter
    def InvoiceType(self, InvoiceType):
        self._InvoiceType = InvoiceType

    @property
    def SerialNumber(self):
        r"""序列号
        :rtype: str
        """
        return self._SerialNumber

    @SerialNumber.setter
    def SerialNumber(self, SerialNumber):
        self._SerialNumber = SerialNumber

    @property
    def AdditionalCost(self):
        r"""加收票价
        :rtype: str
        """
        return self._AdditionalCost

    @AdditionalCost.setter
    def AdditionalCost(self, AdditionalCost):
        self._AdditionalCost = AdditionalCost

    @property
    def HandlingFee(self):
        r"""手续费
        :rtype: str
        """
        return self._HandlingFee

    @HandlingFee.setter
    def HandlingFee(self, HandlingFee):
        self._HandlingFee = HandlingFee

    @property
    def LegalAmount(self):
        r"""大写金额（票面有大写金额该字段才有值）
        :rtype: str
        """
        return self._LegalAmount

    @LegalAmount.setter
    def LegalAmount(self, LegalAmount):
        self._LegalAmount = LegalAmount

    @property
    def TicketStation(self):
        r"""售票站
        :rtype: str
        """
        return self._TicketStation

    @TicketStation.setter
    def TicketStation(self, TicketStation):
        self._TicketStation = TicketStation

    @property
    def OriginalPrice(self):
        r"""原票价（一般有手续费的才有原始票价字段）
        :rtype: str
        """
        return self._OriginalPrice

    @OriginalPrice.setter
    def OriginalPrice(self, OriginalPrice):
        self._OriginalPrice = OriginalPrice

    @property
    def InvoiceStyle(self):
        r"""发票类型：火车票、火车票补票、火车票退票凭证
        :rtype: str
        """
        return self._InvoiceStyle

    @InvoiceStyle.setter
    def InvoiceStyle(self, InvoiceStyle):
        self._InvoiceStyle = InvoiceStyle

    @property
    def ReceiptNumber(self):
        r"""收据号码
        :rtype: str
        """
        return self._ReceiptNumber

    @ReceiptNumber.setter
    def ReceiptNumber(self, ReceiptNumber):
        self._ReceiptNumber = ReceiptNumber

    @property
    def IsReceipt(self):
        r"""仅供报销使用：1为是，0为否
        :rtype: str
        """
        return self._IsReceipt

    @IsReceipt.setter
    def IsReceipt(self, IsReceipt):
        self._IsReceipt = IsReceipt

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._TicketNum = params.get("TicketNum")
        self._StartStation = params.get("StartStation")
        self._DestinationStation = params.get("DestinationStation")
        self._Date = params.get("Date")
        self._TrainNum = params.get("TrainNum")
        self._Seat = params.get("Seat")
        self._Name = params.get("Name")
        self._Price = params.get("Price")
        self._SeatCategory = params.get("SeatCategory")
        self._ID = params.get("ID")
        self._InvoiceType = params.get("InvoiceType")
        self._SerialNumber = params.get("SerialNumber")
        self._AdditionalCost = params.get("AdditionalCost")
        self._HandlingFee = params.get("HandlingFee")
        self._LegalAmount = params.get("LegalAmount")
        self._TicketStation = params.get("TicketStation")
        self._OriginalPrice = params.get("OriginalPrice")
        self._InvoiceStyle = params.get("InvoiceStyle")
        self._ReceiptNumber = params.get("ReceiptNumber")
        self._IsReceipt = params.get("IsReceipt")
        self._RequestId = params.get("RequestId")


class UsedCarPurchaseInvoice(AbstractModel):
    r"""二手车销售统一发票

    """

    def __init__(self):
        r"""
        :param _Title: 发票名称
        :type Title: str
        :param _QRCodeMark: 是否存在二维码（0：没有，1：有）
        :type QRCodeMark: int
        :param _Code: 发票代码
        :type Code: str
        :param _Number: 发票号码
        :type Number: str
        :param _Date: 开票日期
        :type Date: str
        :param _Total: 价税合计（小写）
        :type Total: str
        :param _TotalCn: 价税合计（大写）
        :type TotalCn: str
        :param _Seller: 销货单位名称
        :type Seller: str
        :param _SellerTel: 销售方电话
        :type SellerTel: str
        :param _SellerTaxID: 销售方单位代码/个人身份证号
        :type SellerTaxID: str
        :param _SellerAddress: 销售方地址
        :type SellerAddress: str
        :param _Buyer: 购买方名称
        :type Buyer: str
        :param _BuyerID: 购买方单位代码/个人身份证号
        :type BuyerID: str
        :param _BuyerAddress: 购买方地址
        :type BuyerAddress: str
        :param _BuyerTel: 购买方电话
        :type BuyerTel: str
        :param _CompanyName: 二手车市场
        :type CompanyName: str
        :param _CompanyTaxID: 二手车市场纳税人识别号
        :type CompanyTaxID: str
        :param _CompanyBankAccount: 二手车市场开户银行和账号
        :type CompanyBankAccount: str
        :param _CompanyTel: 二手车市场电话
        :type CompanyTel: str
        :param _CompanyAddress: 二手车市场地址
        :type CompanyAddress: str
        :param _TransferAdministrationName: 转入地车辆管理所名称
        :type TransferAdministrationName: str
        :param _LicensePlate: 车牌号
        :type LicensePlate: str
        :param _RegistrationNumber: 登记证号
        :type RegistrationNumber: str
        :param _VIN: 车辆识别代码
        :type VIN: str
        :param _VehicleModel: 厂牌型号
        :type VehicleModel: str
        :param _Kind: 发票消费类型
        :type Kind: str
        :param _Province: 省
        :type Province: str
        :param _City: 市
        :type City: str
        :param _VehicleType: 车辆类型
        :type VehicleType: str
        :param _Remark: 备注
        :type Remark: str
        :param _FormType: 发票联次
        :type FormType: str
        :param _FormName: 发票联名
        :type FormName: str
        :param _CompanySealMark: 是否有公司印章（0：没有，1：有）
        :type CompanySealMark: int
        :param _AuctionOrgName: 经营拍卖单位
        :type AuctionOrgName: str
        :param _AuctionOrgAddress: 经营拍卖单位地址
        :type AuctionOrgAddress: str
        :param _AuctionOrgTaxID: 经营拍卖单位纳税人识别号
        :type AuctionOrgTaxID: str
        :param _AuctionOrgBankAccount: 经营拍卖单位开户银行账号
        :type AuctionOrgBankAccount: str
        :param _AuctionOrgPhone: 经营拍卖单位电话
        :type AuctionOrgPhone: str
        :param _Issuer: 开票人
        :type Issuer: str
        :param _TaxCode: 税控码
        :type TaxCode: str
        :param _MachineSerialNumber: 机器编号
        :type MachineSerialNumber: str
        :param _MachineCode: 机打发票代码
        :type MachineCode: str
        :param _MachineNumber: 机打发票号码
        :type MachineNumber: str
        """
        self._Title = None
        self._QRCodeMark = None
        self._Code = None
        self._Number = None
        self._Date = None
        self._Total = None
        self._TotalCn = None
        self._Seller = None
        self._SellerTel = None
        self._SellerTaxID = None
        self._SellerAddress = None
        self._Buyer = None
        self._BuyerID = None
        self._BuyerAddress = None
        self._BuyerTel = None
        self._CompanyName = None
        self._CompanyTaxID = None
        self._CompanyBankAccount = None
        self._CompanyTel = None
        self._CompanyAddress = None
        self._TransferAdministrationName = None
        self._LicensePlate = None
        self._RegistrationNumber = None
        self._VIN = None
        self._VehicleModel = None
        self._Kind = None
        self._Province = None
        self._City = None
        self._VehicleType = None
        self._Remark = None
        self._FormType = None
        self._FormName = None
        self._CompanySealMark = None
        self._AuctionOrgName = None
        self._AuctionOrgAddress = None
        self._AuctionOrgTaxID = None
        self._AuctionOrgBankAccount = None
        self._AuctionOrgPhone = None
        self._Issuer = None
        self._TaxCode = None
        self._MachineSerialNumber = None
        self._MachineCode = None
        self._MachineNumber = None

    @property
    def Title(self):
        r"""发票名称
        :rtype: str
        """
        return self._Title

    @Title.setter
    def Title(self, Title):
        self._Title = Title

    @property
    def QRCodeMark(self):
        r"""是否存在二维码（0：没有，1：有）
        :rtype: int
        """
        return self._QRCodeMark

    @QRCodeMark.setter
    def QRCodeMark(self, QRCodeMark):
        self._QRCodeMark = QRCodeMark

    @property
    def Code(self):
        r"""发票代码
        :rtype: str
        """
        return self._Code

    @Code.setter
    def Code(self, Code):
        self._Code = Code

    @property
    def Number(self):
        r"""发票号码
        :rtype: str
        """
        return self._Number

    @Number.setter
    def Number(self, Number):
        self._Number = Number

    @property
    def Date(self):
        r"""开票日期
        :rtype: str
        """
        return self._Date

    @Date.setter
    def Date(self, Date):
        self._Date = Date

    @property
    def Total(self):
        r"""价税合计（小写）
        :rtype: str
        """
        return self._Total

    @Total.setter
    def Total(self, Total):
        self._Total = Total

    @property
    def TotalCn(self):
        r"""价税合计（大写）
        :rtype: str
        """
        return self._TotalCn

    @TotalCn.setter
    def TotalCn(self, TotalCn):
        self._TotalCn = TotalCn

    @property
    def Seller(self):
        r"""销货单位名称
        :rtype: str
        """
        return self._Seller

    @Seller.setter
    def Seller(self, Seller):
        self._Seller = Seller

    @property
    def SellerTel(self):
        r"""销售方电话
        :rtype: str
        """
        return self._SellerTel

    @SellerTel.setter
    def SellerTel(self, SellerTel):
        self._SellerTel = SellerTel

    @property
    def SellerTaxID(self):
        r"""销售方单位代码/个人身份证号
        :rtype: str
        """
        return self._SellerTaxID

    @SellerTaxID.setter
    def SellerTaxID(self, SellerTaxID):
        self._SellerTaxID = SellerTaxID

    @property
    def SellerAddress(self):
        r"""销售方地址
        :rtype: str
        """
        return self._SellerAddress

    @SellerAddress.setter
    def SellerAddress(self, SellerAddress):
        self._SellerAddress = SellerAddress

    @property
    def Buyer(self):
        r"""购买方名称
        :rtype: str
        """
        return self._Buyer

    @Buyer.setter
    def Buyer(self, Buyer):
        self._Buyer = Buyer

    @property
    def BuyerID(self):
        r"""购买方单位代码/个人身份证号
        :rtype: str
        """
        return self._BuyerID

    @BuyerID.setter
    def BuyerID(self, BuyerID):
        self._BuyerID = BuyerID

    @property
    def BuyerAddress(self):
        r"""购买方地址
        :rtype: str
        """
        return self._BuyerAddress

    @BuyerAddress.setter
    def BuyerAddress(self, BuyerAddress):
        self._BuyerAddress = BuyerAddress

    @property
    def BuyerTel(self):
        r"""购买方电话
        :rtype: str
        """
        return self._BuyerTel

    @BuyerTel.setter
    def BuyerTel(self, BuyerTel):
        self._BuyerTel = BuyerTel

    @property
    def CompanyName(self):
        r"""二手车市场
        :rtype: str
        """
        return self._CompanyName

    @CompanyName.setter
    def CompanyName(self, CompanyName):
        self._CompanyName = CompanyName

    @property
    def CompanyTaxID(self):
        r"""二手车市场纳税人识别号
        :rtype: str
        """
        return self._CompanyTaxID

    @CompanyTaxID.setter
    def CompanyTaxID(self, CompanyTaxID):
        self._CompanyTaxID = CompanyTaxID

    @property
    def CompanyBankAccount(self):
        r"""二手车市场开户银行和账号
        :rtype: str
        """
        return self._CompanyBankAccount

    @CompanyBankAccount.setter
    def CompanyBankAccount(self, CompanyBankAccount):
        self._CompanyBankAccount = CompanyBankAccount

    @property
    def CompanyTel(self):
        r"""二手车市场电话
        :rtype: str
        """
        return self._CompanyTel

    @CompanyTel.setter
    def CompanyTel(self, CompanyTel):
        self._CompanyTel = CompanyTel

    @property
    def CompanyAddress(self):
        r"""二手车市场地址
        :rtype: str
        """
        return self._CompanyAddress

    @CompanyAddress.setter
    def CompanyAddress(self, CompanyAddress):
        self._CompanyAddress = CompanyAddress

    @property
    def TransferAdministrationName(self):
        r"""转入地车辆管理所名称
        :rtype: str
        """
        return self._TransferAdministrationName

    @TransferAdministrationName.setter
    def TransferAdministrationName(self, TransferAdministrationName):
        self._TransferAdministrationName = TransferAdministrationName

    @property
    def LicensePlate(self):
        r"""车牌号
        :rtype: str
        """
        return self._LicensePlate

    @LicensePlate.setter
    def LicensePlate(self, LicensePlate):
        self._LicensePlate = LicensePlate

    @property
    def RegistrationNumber(self):
        r"""登记证号
        :rtype: str
        """
        return self._RegistrationNumber

    @RegistrationNumber.setter
    def RegistrationNumber(self, RegistrationNumber):
        self._RegistrationNumber = RegistrationNumber

    @property
    def VIN(self):
        r"""车辆识别代码
        :rtype: str
        """
        return self._VIN

    @VIN.setter
    def VIN(self, VIN):
        self._VIN = VIN

    @property
    def VehicleModel(self):
        r"""厂牌型号
        :rtype: str
        """
        return self._VehicleModel

    @VehicleModel.setter
    def VehicleModel(self, VehicleModel):
        self._VehicleModel = VehicleModel

    @property
    def Kind(self):
        r"""发票消费类型
        :rtype: str
        """
        return self._Kind

    @Kind.setter
    def Kind(self, Kind):
        self._Kind = Kind

    @property
    def Province(self):
        r"""省
        :rtype: str
        """
        return self._Province

    @Province.setter
    def Province(self, Province):
        self._Province = Province

    @property
    def City(self):
        r"""市
        :rtype: str
        """
        return self._City

    @City.setter
    def City(self, City):
        self._City = City

    @property
    def VehicleType(self):
        r"""车辆类型
        :rtype: str
        """
        return self._VehicleType

    @VehicleType.setter
    def VehicleType(self, VehicleType):
        self._VehicleType = VehicleType

    @property
    def Remark(self):
        r"""备注
        :rtype: str
        """
        return self._Remark

    @Remark.setter
    def Remark(self, Remark):
        self._Remark = Remark

    @property
    def FormType(self):
        r"""发票联次
        :rtype: str
        """
        return self._FormType

    @FormType.setter
    def FormType(self, FormType):
        self._FormType = FormType

    @property
    def FormName(self):
        r"""发票联名
        :rtype: str
        """
        return self._FormName

    @FormName.setter
    def FormName(self, FormName):
        self._FormName = FormName

    @property
    def CompanySealMark(self):
        r"""是否有公司印章（0：没有，1：有）
        :rtype: int
        """
        return self._CompanySealMark

    @CompanySealMark.setter
    def CompanySealMark(self, CompanySealMark):
        self._CompanySealMark = CompanySealMark

    @property
    def AuctionOrgName(self):
        r"""经营拍卖单位
        :rtype: str
        """
        return self._AuctionOrgName

    @AuctionOrgName.setter
    def AuctionOrgName(self, AuctionOrgName):
        self._AuctionOrgName = AuctionOrgName

    @property
    def AuctionOrgAddress(self):
        r"""经营拍卖单位地址
        :rtype: str
        """
        return self._AuctionOrgAddress

    @AuctionOrgAddress.setter
    def AuctionOrgAddress(self, AuctionOrgAddress):
        self._AuctionOrgAddress = AuctionOrgAddress

    @property
    def AuctionOrgTaxID(self):
        r"""经营拍卖单位纳税人识别号
        :rtype: str
        """
        return self._AuctionOrgTaxID

    @AuctionOrgTaxID.setter
    def AuctionOrgTaxID(self, AuctionOrgTaxID):
        self._AuctionOrgTaxID = AuctionOrgTaxID

    @property
    def AuctionOrgBankAccount(self):
        r"""经营拍卖单位开户银行账号
        :rtype: str
        """
        return self._AuctionOrgBankAccount

    @AuctionOrgBankAccount.setter
    def AuctionOrgBankAccount(self, AuctionOrgBankAccount):
        self._AuctionOrgBankAccount = AuctionOrgBankAccount

    @property
    def AuctionOrgPhone(self):
        r"""经营拍卖单位电话
        :rtype: str
        """
        return self._AuctionOrgPhone

    @AuctionOrgPhone.setter
    def AuctionOrgPhone(self, AuctionOrgPhone):
        self._AuctionOrgPhone = AuctionOrgPhone

    @property
    def Issuer(self):
        r"""开票人
        :rtype: str
        """
        return self._Issuer

    @Issuer.setter
    def Issuer(self, Issuer):
        self._Issuer = Issuer

    @property
    def TaxCode(self):
        r"""税控码
        :rtype: str
        """
        return self._TaxCode

    @TaxCode.setter
    def TaxCode(self, TaxCode):
        self._TaxCode = TaxCode

    @property
    def MachineSerialNumber(self):
        r"""机器编号
        :rtype: str
        """
        return self._MachineSerialNumber

    @MachineSerialNumber.setter
    def MachineSerialNumber(self, MachineSerialNumber):
        self._MachineSerialNumber = MachineSerialNumber

    @property
    def MachineCode(self):
        r"""机打发票代码
        :rtype: str
        """
        return self._MachineCode

    @MachineCode.setter
    def MachineCode(self, MachineCode):
        self._MachineCode = MachineCode

    @property
    def MachineNumber(self):
        r"""机打发票号码
        :rtype: str
        """
        return self._MachineNumber

    @MachineNumber.setter
    def MachineNumber(self, MachineNumber):
        self._MachineNumber = MachineNumber


    def _deserialize(self, params):
        self._Title = params.get("Title")
        self._QRCodeMark = params.get("QRCodeMark")
        self._Code = params.get("Code")
        self._Number = params.get("Number")
        self._Date = params.get("Date")
        self._Total = params.get("Total")
        self._TotalCn = params.get("TotalCn")
        self._Seller = params.get("Seller")
        self._SellerTel = params.get("SellerTel")
        self._SellerTaxID = params.get("SellerTaxID")
        self._SellerAddress = params.get("SellerAddress")
        self._Buyer = params.get("Buyer")
        self._BuyerID = params.get("BuyerID")
        self._BuyerAddress = params.get("BuyerAddress")
        self._BuyerTel = params.get("BuyerTel")
        self._CompanyName = params.get("CompanyName")
        self._CompanyTaxID = params.get("CompanyTaxID")
        self._CompanyBankAccount = params.get("CompanyBankAccount")
        self._CompanyTel = params.get("CompanyTel")
        self._CompanyAddress = params.get("CompanyAddress")
        self._TransferAdministrationName = params.get("TransferAdministrationName")
        self._LicensePlate = params.get("LicensePlate")
        self._RegistrationNumber = params.get("RegistrationNumber")
        self._VIN = params.get("VIN")
        self._VehicleModel = params.get("VehicleModel")
        self._Kind = params.get("Kind")
        self._Province = params.get("Province")
        self._City = params.get("City")
        self._VehicleType = params.get("VehicleType")
        self._Remark = params.get("Remark")
        self._FormType = params.get("FormType")
        self._FormName = params.get("FormName")
        self._CompanySealMark = params.get("CompanySealMark")
        self._AuctionOrgName = params.get("AuctionOrgName")
        self._AuctionOrgAddress = params.get("AuctionOrgAddress")
        self._AuctionOrgTaxID = params.get("AuctionOrgTaxID")
        self._AuctionOrgBankAccount = params.get("AuctionOrgBankAccount")
        self._AuctionOrgPhone = params.get("AuctionOrgPhone")
        self._Issuer = params.get("Issuer")
        self._TaxCode = params.get("TaxCode")
        self._MachineSerialNumber = params.get("MachineSerialNumber")
        self._MachineCode = params.get("MachineCode")
        self._MachineNumber = params.get("MachineNumber")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class UsedVehicleInvoiceInfo(AbstractModel):
    r"""二手车销售统一发票信息

    """

    def __init__(self):
        r"""
        :param _TaxBureau: 所属税局
        :type TaxBureau: str
        :param _Buyer: 买方单位/个人
        :type Buyer: str
        :param _BuyerNo: 买方单位代码/身份证号码
        :type BuyerNo: str
        :param _BuyerAddress: 买方单位/个人地址
        :type BuyerAddress: str
        :param _BuyerTel: 买方单位电话
        :type BuyerTel: str
        :param _Seller: 卖方单位/个人
        :type Seller: str
        :param _SellerNo: 卖方单位代码/身份证号码
        :type SellerNo: str
        :param _SellerAddress: 卖方单位/个人地址
        :type SellerAddress: str
        :param _SellerTel: 卖方单位电话
        :type SellerTel: str
        :param _VehicleLicenseNo: 车牌照号
        :type VehicleLicenseNo: str
        :param _RegisterNo: 登记证号
        :type RegisterNo: str
        :param _VehicleIdentifyNo: 车架号/车辆识别代码
        :type VehicleIdentifyNo: str
        :param _ManagementOffice: 转入地车辆管理所名称
        :type ManagementOffice: str
        :param _VehicleTotalPrice: 车价合计
        :type VehicleTotalPrice: str
        :param _Auctioneer: 经营、拍卖单位
        :type Auctioneer: str
        :param _AuctioneerAddress: 经营、拍卖单位地址
        :type AuctioneerAddress: str
        :param _AuctioneerTaxpayerNum: 经营、拍卖单位纳税人识别号
        :type AuctioneerTaxpayerNum: str
        :param _AuctioneerBankAccount: 经营、拍卖单位开户银行、账号
        :type AuctioneerBankAccount: str
        :param _AuctioneerTel: 经营、拍卖单位电话
        :type AuctioneerTel: str
        :param _Market: 二手车市场
        :type Market: str
        :param _MarketTaxpayerNum: 二手车市场纳税人识别号
        :type MarketTaxpayerNum: str
        :param _MarketAddress: 二手车市场地址
        :type MarketAddress: str
        :param _MarketBankAccount: 二手车市场开户银行账号
        :type MarketBankAccount: str
        :param _MarketTel: 二手车市场电话
        :type MarketTel: str
        """
        self._TaxBureau = None
        self._Buyer = None
        self._BuyerNo = None
        self._BuyerAddress = None
        self._BuyerTel = None
        self._Seller = None
        self._SellerNo = None
        self._SellerAddress = None
        self._SellerTel = None
        self._VehicleLicenseNo = None
        self._RegisterNo = None
        self._VehicleIdentifyNo = None
        self._ManagementOffice = None
        self._VehicleTotalPrice = None
        self._Auctioneer = None
        self._AuctioneerAddress = None
        self._AuctioneerTaxpayerNum = None
        self._AuctioneerBankAccount = None
        self._AuctioneerTel = None
        self._Market = None
        self._MarketTaxpayerNum = None
        self._MarketAddress = None
        self._MarketBankAccount = None
        self._MarketTel = None

    @property
    def TaxBureau(self):
        r"""所属税局
        :rtype: str
        """
        return self._TaxBureau

    @TaxBureau.setter
    def TaxBureau(self, TaxBureau):
        self._TaxBureau = TaxBureau

    @property
    def Buyer(self):
        r"""买方单位/个人
        :rtype: str
        """
        return self._Buyer

    @Buyer.setter
    def Buyer(self, Buyer):
        self._Buyer = Buyer

    @property
    def BuyerNo(self):
        r"""买方单位代码/身份证号码
        :rtype: str
        """
        return self._BuyerNo

    @BuyerNo.setter
    def BuyerNo(self, BuyerNo):
        self._BuyerNo = BuyerNo

    @property
    def BuyerAddress(self):
        r"""买方单位/个人地址
        :rtype: str
        """
        return self._BuyerAddress

    @BuyerAddress.setter
    def BuyerAddress(self, BuyerAddress):
        self._BuyerAddress = BuyerAddress

    @property
    def BuyerTel(self):
        r"""买方单位电话
        :rtype: str
        """
        return self._BuyerTel

    @BuyerTel.setter
    def BuyerTel(self, BuyerTel):
        self._BuyerTel = BuyerTel

    @property
    def Seller(self):
        r"""卖方单位/个人
        :rtype: str
        """
        return self._Seller

    @Seller.setter
    def Seller(self, Seller):
        self._Seller = Seller

    @property
    def SellerNo(self):
        r"""卖方单位代码/身份证号码
        :rtype: str
        """
        return self._SellerNo

    @SellerNo.setter
    def SellerNo(self, SellerNo):
        self._SellerNo = SellerNo

    @property
    def SellerAddress(self):
        r"""卖方单位/个人地址
        :rtype: str
        """
        return self._SellerAddress

    @SellerAddress.setter
    def SellerAddress(self, SellerAddress):
        self._SellerAddress = SellerAddress

    @property
    def SellerTel(self):
        r"""卖方单位电话
        :rtype: str
        """
        return self._SellerTel

    @SellerTel.setter
    def SellerTel(self, SellerTel):
        self._SellerTel = SellerTel

    @property
    def VehicleLicenseNo(self):
        r"""车牌照号
        :rtype: str
        """
        return self._VehicleLicenseNo

    @VehicleLicenseNo.setter
    def VehicleLicenseNo(self, VehicleLicenseNo):
        self._VehicleLicenseNo = VehicleLicenseNo

    @property
    def RegisterNo(self):
        r"""登记证号
        :rtype: str
        """
        return self._RegisterNo

    @RegisterNo.setter
    def RegisterNo(self, RegisterNo):
        self._RegisterNo = RegisterNo

    @property
    def VehicleIdentifyNo(self):
        r"""车架号/车辆识别代码
        :rtype: str
        """
        return self._VehicleIdentifyNo

    @VehicleIdentifyNo.setter
    def VehicleIdentifyNo(self, VehicleIdentifyNo):
        self._VehicleIdentifyNo = VehicleIdentifyNo

    @property
    def ManagementOffice(self):
        r"""转入地车辆管理所名称
        :rtype: str
        """
        return self._ManagementOffice

    @ManagementOffice.setter
    def ManagementOffice(self, ManagementOffice):
        self._ManagementOffice = ManagementOffice

    @property
    def VehicleTotalPrice(self):
        r"""车价合计
        :rtype: str
        """
        return self._VehicleTotalPrice

    @VehicleTotalPrice.setter
    def VehicleTotalPrice(self, VehicleTotalPrice):
        self._VehicleTotalPrice = VehicleTotalPrice

    @property
    def Auctioneer(self):
        r"""经营、拍卖单位
        :rtype: str
        """
        return self._Auctioneer

    @Auctioneer.setter
    def Auctioneer(self, Auctioneer):
        self._Auctioneer = Auctioneer

    @property
    def AuctioneerAddress(self):
        r"""经营、拍卖单位地址
        :rtype: str
        """
        return self._AuctioneerAddress

    @AuctioneerAddress.setter
    def AuctioneerAddress(self, AuctioneerAddress):
        self._AuctioneerAddress = AuctioneerAddress

    @property
    def AuctioneerTaxpayerNum(self):
        r"""经营、拍卖单位纳税人识别号
        :rtype: str
        """
        return self._AuctioneerTaxpayerNum

    @AuctioneerTaxpayerNum.setter
    def AuctioneerTaxpayerNum(self, AuctioneerTaxpayerNum):
        self._AuctioneerTaxpayerNum = AuctioneerTaxpayerNum

    @property
    def AuctioneerBankAccount(self):
        r"""经营、拍卖单位开户银行、账号
        :rtype: str
        """
        return self._AuctioneerBankAccount

    @AuctioneerBankAccount.setter
    def AuctioneerBankAccount(self, AuctioneerBankAccount):
        self._AuctioneerBankAccount = AuctioneerBankAccount

    @property
    def AuctioneerTel(self):
        r"""经营、拍卖单位电话
        :rtype: str
        """
        return self._AuctioneerTel

    @AuctioneerTel.setter
    def AuctioneerTel(self, AuctioneerTel):
        self._AuctioneerTel = AuctioneerTel

    @property
    def Market(self):
        r"""二手车市场
        :rtype: str
        """
        return self._Market

    @Market.setter
    def Market(self, Market):
        self._Market = Market

    @property
    def MarketTaxpayerNum(self):
        r"""二手车市场纳税人识别号
        :rtype: str
        """
        return self._MarketTaxpayerNum

    @MarketTaxpayerNum.setter
    def MarketTaxpayerNum(self, MarketTaxpayerNum):
        self._MarketTaxpayerNum = MarketTaxpayerNum

    @property
    def MarketAddress(self):
        r"""二手车市场地址
        :rtype: str
        """
        return self._MarketAddress

    @MarketAddress.setter
    def MarketAddress(self, MarketAddress):
        self._MarketAddress = MarketAddress

    @property
    def MarketBankAccount(self):
        r"""二手车市场开户银行账号
        :rtype: str
        """
        return self._MarketBankAccount

    @MarketBankAccount.setter
    def MarketBankAccount(self, MarketBankAccount):
        self._MarketBankAccount = MarketBankAccount

    @property
    def MarketTel(self):
        r"""二手车市场电话
        :rtype: str
        """
        return self._MarketTel

    @MarketTel.setter
    def MarketTel(self, MarketTel):
        self._MarketTel = MarketTel


    def _deserialize(self, params):
        self._TaxBureau = params.get("TaxBureau")
        self._Buyer = params.get("Buyer")
        self._BuyerNo = params.get("BuyerNo")
        self._BuyerAddress = params.get("BuyerAddress")
        self._BuyerTel = params.get("BuyerTel")
        self._Seller = params.get("Seller")
        self._SellerNo = params.get("SellerNo")
        self._SellerAddress = params.get("SellerAddress")
        self._SellerTel = params.get("SellerTel")
        self._VehicleLicenseNo = params.get("VehicleLicenseNo")
        self._RegisterNo = params.get("RegisterNo")
        self._VehicleIdentifyNo = params.get("VehicleIdentifyNo")
        self._ManagementOffice = params.get("ManagementOffice")
        self._VehicleTotalPrice = params.get("VehicleTotalPrice")
        self._Auctioneer = params.get("Auctioneer")
        self._AuctioneerAddress = params.get("AuctioneerAddress")
        self._AuctioneerTaxpayerNum = params.get("AuctioneerTaxpayerNum")
        self._AuctioneerBankAccount = params.get("AuctioneerBankAccount")
        self._AuctioneerTel = params.get("AuctioneerTel")
        self._Market = params.get("Market")
        self._MarketTaxpayerNum = params.get("MarketTaxpayerNum")
        self._MarketAddress = params.get("MarketAddress")
        self._MarketBankAccount = params.get("MarketBankAccount")
        self._MarketTel = params.get("MarketTel")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class Value(AbstractModel):
    r"""value信息组

    """

    def __init__(self):
        r"""
        :param _AutoContent: 自动识别的字段内容
        :type AutoContent: str
        :param _Coord: 四点坐标
注意：此字段可能返回 null，表示取不到有效值。
        :type Coord: :class:`tencentcloud.ocr.v20181119.models.Polygon`
        :param _PageIndex: 页数
注意：此字段可能返回 null，表示取不到有效值。
        :type PageIndex: str
        """
        self._AutoContent = None
        self._Coord = None
        self._PageIndex = None

    @property
    def AutoContent(self):
        r"""自动识别的字段内容
        :rtype: str
        """
        return self._AutoContent

    @AutoContent.setter
    def AutoContent(self, AutoContent):
        self._AutoContent = AutoContent

    @property
    def Coord(self):
        r"""四点坐标
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Polygon`
        """
        return self._Coord

    @Coord.setter
    def Coord(self, Coord):
        self._Coord = Coord

    @property
    def PageIndex(self):
        r"""页数
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._PageIndex

    @PageIndex.setter
    def PageIndex(self, PageIndex):
        self._PageIndex = PageIndex


    def _deserialize(self, params):
        self._AutoContent = params.get("AutoContent")
        if params.get("Coord") is not None:
            self._Coord = Polygon()
            self._Coord._deserialize(params.get("Coord"))
        self._PageIndex = params.get("PageIndex")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class VatElectronicInfo(AbstractModel):
    r"""电子发票返回值

    """

    def __init__(self):
        r"""
        :param _Title: 发票名称
        :type Title: str
        :param _Number: 发票号码
        :type Number: str
        :param _Date: 开票日期
        :type Date: str
        :param _PretaxAmount: 税前金额
        :type PretaxAmount: str
        :param _Tax: 合计税额
        :type Tax: str
        :param _Total: 价税合计（小写）
        :type Total: str
        :param _TotalCn: 价税合计（大写）
        :type TotalCn: str
        :param _Seller: 销售方名称
        :type Seller: str
        :param _SellerTaxID: 销售方纳税人识别号
        :type SellerTaxID: str
        :param _Buyer: 购买方名称
        :type Buyer: str
        :param _BuyerTaxID: 购买方纳税人识别号
        :type BuyerTaxID: str
        :param _Issuer: 开票人
        :type Issuer: str
        :param _Remark: 备注
        :type Remark: str
        :param _SubTotal: 小计金额
        :type SubTotal: str
        :param _SubTax: 小计税额
        :type SubTax: str
        :param _VatElectronicItems: 电子发票详细条目信息
        :type VatElectronicItems: list of VatElectronicItemInfo
        :param _ServiceTypeLabel: 业务类型标志
        :type ServiceTypeLabel: str
        :param _TotalCnMark: 价税合计(大写)前符号
        :type TotalCnMark: str
        :param _TotalMark: 价税合计(小写)前字样
        :type TotalMark: str
        :param _PretaxAmountMark: 合计金额前字样
        :type PretaxAmountMark: str
        :param _TaxMark: 合计税额前字样
        :type TaxMark: str
        :param _CompanySealMark: 是否有公司印章（0：没有，1：有）
        :type CompanySealMark: int
        :param _InvoicePageIndex: 全电类型的多页pdf票据中，支持输出票面页码：当前第几页，一共第几页。
        :type InvoicePageIndex: str
        """
        self._Title = None
        self._Number = None
        self._Date = None
        self._PretaxAmount = None
        self._Tax = None
        self._Total = None
        self._TotalCn = None
        self._Seller = None
        self._SellerTaxID = None
        self._Buyer = None
        self._BuyerTaxID = None
        self._Issuer = None
        self._Remark = None
        self._SubTotal = None
        self._SubTax = None
        self._VatElectronicItems = None
        self._ServiceTypeLabel = None
        self._TotalCnMark = None
        self._TotalMark = None
        self._PretaxAmountMark = None
        self._TaxMark = None
        self._CompanySealMark = None
        self._InvoicePageIndex = None

    @property
    def Title(self):
        r"""发票名称
        :rtype: str
        """
        return self._Title

    @Title.setter
    def Title(self, Title):
        self._Title = Title

    @property
    def Number(self):
        r"""发票号码
        :rtype: str
        """
        return self._Number

    @Number.setter
    def Number(self, Number):
        self._Number = Number

    @property
    def Date(self):
        r"""开票日期
        :rtype: str
        """
        return self._Date

    @Date.setter
    def Date(self, Date):
        self._Date = Date

    @property
    def PretaxAmount(self):
        r"""税前金额
        :rtype: str
        """
        return self._PretaxAmount

    @PretaxAmount.setter
    def PretaxAmount(self, PretaxAmount):
        self._PretaxAmount = PretaxAmount

    @property
    def Tax(self):
        r"""合计税额
        :rtype: str
        """
        return self._Tax

    @Tax.setter
    def Tax(self, Tax):
        self._Tax = Tax

    @property
    def Total(self):
        r"""价税合计（小写）
        :rtype: str
        """
        return self._Total

    @Total.setter
    def Total(self, Total):
        self._Total = Total

    @property
    def TotalCn(self):
        r"""价税合计（大写）
        :rtype: str
        """
        return self._TotalCn

    @TotalCn.setter
    def TotalCn(self, TotalCn):
        self._TotalCn = TotalCn

    @property
    def Seller(self):
        r"""销售方名称
        :rtype: str
        """
        return self._Seller

    @Seller.setter
    def Seller(self, Seller):
        self._Seller = Seller

    @property
    def SellerTaxID(self):
        r"""销售方纳税人识别号
        :rtype: str
        """
        return self._SellerTaxID

    @SellerTaxID.setter
    def SellerTaxID(self, SellerTaxID):
        self._SellerTaxID = SellerTaxID

    @property
    def Buyer(self):
        r"""购买方名称
        :rtype: str
        """
        return self._Buyer

    @Buyer.setter
    def Buyer(self, Buyer):
        self._Buyer = Buyer

    @property
    def BuyerTaxID(self):
        r"""购买方纳税人识别号
        :rtype: str
        """
        return self._BuyerTaxID

    @BuyerTaxID.setter
    def BuyerTaxID(self, BuyerTaxID):
        self._BuyerTaxID = BuyerTaxID

    @property
    def Issuer(self):
        r"""开票人
        :rtype: str
        """
        return self._Issuer

    @Issuer.setter
    def Issuer(self, Issuer):
        self._Issuer = Issuer

    @property
    def Remark(self):
        r"""备注
        :rtype: str
        """
        return self._Remark

    @Remark.setter
    def Remark(self, Remark):
        self._Remark = Remark

    @property
    def SubTotal(self):
        r"""小计金额
        :rtype: str
        """
        return self._SubTotal

    @SubTotal.setter
    def SubTotal(self, SubTotal):
        self._SubTotal = SubTotal

    @property
    def SubTax(self):
        r"""小计税额
        :rtype: str
        """
        return self._SubTax

    @SubTax.setter
    def SubTax(self, SubTax):
        self._SubTax = SubTax

    @property
    def VatElectronicItems(self):
        r"""电子发票详细条目信息
        :rtype: list of VatElectronicItemInfo
        """
        return self._VatElectronicItems

    @VatElectronicItems.setter
    def VatElectronicItems(self, VatElectronicItems):
        self._VatElectronicItems = VatElectronicItems

    @property
    def ServiceTypeLabel(self):
        r"""业务类型标志
        :rtype: str
        """
        return self._ServiceTypeLabel

    @ServiceTypeLabel.setter
    def ServiceTypeLabel(self, ServiceTypeLabel):
        self._ServiceTypeLabel = ServiceTypeLabel

    @property
    def TotalCnMark(self):
        r"""价税合计(大写)前符号
        :rtype: str
        """
        return self._TotalCnMark

    @TotalCnMark.setter
    def TotalCnMark(self, TotalCnMark):
        self._TotalCnMark = TotalCnMark

    @property
    def TotalMark(self):
        r"""价税合计(小写)前字样
        :rtype: str
        """
        return self._TotalMark

    @TotalMark.setter
    def TotalMark(self, TotalMark):
        self._TotalMark = TotalMark

    @property
    def PretaxAmountMark(self):
        r"""合计金额前字样
        :rtype: str
        """
        return self._PretaxAmountMark

    @PretaxAmountMark.setter
    def PretaxAmountMark(self, PretaxAmountMark):
        self._PretaxAmountMark = PretaxAmountMark

    @property
    def TaxMark(self):
        r"""合计税额前字样
        :rtype: str
        """
        return self._TaxMark

    @TaxMark.setter
    def TaxMark(self, TaxMark):
        self._TaxMark = TaxMark

    @property
    def CompanySealMark(self):
        r"""是否有公司印章（0：没有，1：有）
        :rtype: int
        """
        return self._CompanySealMark

    @CompanySealMark.setter
    def CompanySealMark(self, CompanySealMark):
        self._CompanySealMark = CompanySealMark

    @property
    def InvoicePageIndex(self):
        r"""全电类型的多页pdf票据中，支持输出票面页码：当前第几页，一共第几页。
        :rtype: str
        """
        return self._InvoicePageIndex

    @InvoicePageIndex.setter
    def InvoicePageIndex(self, InvoicePageIndex):
        self._InvoicePageIndex = InvoicePageIndex


    def _deserialize(self, params):
        self._Title = params.get("Title")
        self._Number = params.get("Number")
        self._Date = params.get("Date")
        self._PretaxAmount = params.get("PretaxAmount")
        self._Tax = params.get("Tax")
        self._Total = params.get("Total")
        self._TotalCn = params.get("TotalCn")
        self._Seller = params.get("Seller")
        self._SellerTaxID = params.get("SellerTaxID")
        self._Buyer = params.get("Buyer")
        self._BuyerTaxID = params.get("BuyerTaxID")
        self._Issuer = params.get("Issuer")
        self._Remark = params.get("Remark")
        self._SubTotal = params.get("SubTotal")
        self._SubTax = params.get("SubTax")
        if params.get("VatElectronicItems") is not None:
            self._VatElectronicItems = []
            for item in params.get("VatElectronicItems"):
                obj = VatElectronicItemInfo()
                obj._deserialize(item)
                self._VatElectronicItems.append(obj)
        self._ServiceTypeLabel = params.get("ServiceTypeLabel")
        self._TotalCnMark = params.get("TotalCnMark")
        self._TotalMark = params.get("TotalMark")
        self._PretaxAmountMark = params.get("PretaxAmountMark")
        self._TaxMark = params.get("TaxMark")
        self._CompanySealMark = params.get("CompanySealMark")
        self._InvoicePageIndex = params.get("InvoicePageIndex")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class VatElectronicItemInfo(AbstractModel):
    r"""电子发票详细条目信息

    """

    def __init__(self):
        r"""
        :param _Name: 项目名称
        :type Name: str
        :param _Quantity: 数量
        :type Quantity: str
        :param _Specification: 规格型号
        :type Specification: str
        :param _Price: 单价
        :type Price: str
        :param _Total: 金额
        :type Total: str
        :param _TaxRate: 税率
        :type TaxRate: str
        :param _Tax: 税额
        :type Tax: str
        :param _Unit: 单位
        :type Unit: str
        :param _VehicleType: 运输工具类型
        :type VehicleType: str
        :param _VehicleBrand: 运输工具牌号
        :type VehicleBrand: str
        :param _DeparturePlace: 起始地
        :type DeparturePlace: str
        :param _ArrivalPlace: 到达地
        :type ArrivalPlace: str
        :param _TransportItemsName: 运输货物名称，仅货物运输服务发票返回
        :type TransportItemsName: str
        :param _PlaceOfBuildingService: 建筑服务发生地，仅建筑发票返回
        :type PlaceOfBuildingService: str
        :param _BuildingName: 建筑项目名称，仅建筑发票返回
        :type BuildingName: str
        :param _EstateNumber: 产权证书/不动产权证号，仅不动产经营租赁服务发票返回
        :type EstateNumber: str
        :param _AreaUnit: 面积单位，仅不动产经营租赁服务发票返回
        :type AreaUnit: str
        :param _Traveler: 出行人，仅旅客运输服务发票返回
        :type Traveler: str
        :param _TravelerID: 有效身份证件号，仅旅客运输服务发票返回
        :type TravelerID: str
        :param _TravelDate: 出行日期，仅旅客运输服务发票返回
        :type TravelDate: str
        :param _TravelLevel: 等级，仅旅客运输服务发票返回
        :type TravelLevel: str
        """
        self._Name = None
        self._Quantity = None
        self._Specification = None
        self._Price = None
        self._Total = None
        self._TaxRate = None
        self._Tax = None
        self._Unit = None
        self._VehicleType = None
        self._VehicleBrand = None
        self._DeparturePlace = None
        self._ArrivalPlace = None
        self._TransportItemsName = None
        self._PlaceOfBuildingService = None
        self._BuildingName = None
        self._EstateNumber = None
        self._AreaUnit = None
        self._Traveler = None
        self._TravelerID = None
        self._TravelDate = None
        self._TravelLevel = None

    @property
    def Name(self):
        r"""项目名称
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Quantity(self):
        r"""数量
        :rtype: str
        """
        return self._Quantity

    @Quantity.setter
    def Quantity(self, Quantity):
        self._Quantity = Quantity

    @property
    def Specification(self):
        r"""规格型号
        :rtype: str
        """
        return self._Specification

    @Specification.setter
    def Specification(self, Specification):
        self._Specification = Specification

    @property
    def Price(self):
        r"""单价
        :rtype: str
        """
        return self._Price

    @Price.setter
    def Price(self, Price):
        self._Price = Price

    @property
    def Total(self):
        r"""金额
        :rtype: str
        """
        return self._Total

    @Total.setter
    def Total(self, Total):
        self._Total = Total

    @property
    def TaxRate(self):
        r"""税率
        :rtype: str
        """
        return self._TaxRate

    @TaxRate.setter
    def TaxRate(self, TaxRate):
        self._TaxRate = TaxRate

    @property
    def Tax(self):
        r"""税额
        :rtype: str
        """
        return self._Tax

    @Tax.setter
    def Tax(self, Tax):
        self._Tax = Tax

    @property
    def Unit(self):
        r"""单位
        :rtype: str
        """
        return self._Unit

    @Unit.setter
    def Unit(self, Unit):
        self._Unit = Unit

    @property
    def VehicleType(self):
        r"""运输工具类型
        :rtype: str
        """
        return self._VehicleType

    @VehicleType.setter
    def VehicleType(self, VehicleType):
        self._VehicleType = VehicleType

    @property
    def VehicleBrand(self):
        r"""运输工具牌号
        :rtype: str
        """
        return self._VehicleBrand

    @VehicleBrand.setter
    def VehicleBrand(self, VehicleBrand):
        self._VehicleBrand = VehicleBrand

    @property
    def DeparturePlace(self):
        r"""起始地
        :rtype: str
        """
        return self._DeparturePlace

    @DeparturePlace.setter
    def DeparturePlace(self, DeparturePlace):
        self._DeparturePlace = DeparturePlace

    @property
    def ArrivalPlace(self):
        r"""到达地
        :rtype: str
        """
        return self._ArrivalPlace

    @ArrivalPlace.setter
    def ArrivalPlace(self, ArrivalPlace):
        self._ArrivalPlace = ArrivalPlace

    @property
    def TransportItemsName(self):
        r"""运输货物名称，仅货物运输服务发票返回
        :rtype: str
        """
        return self._TransportItemsName

    @TransportItemsName.setter
    def TransportItemsName(self, TransportItemsName):
        self._TransportItemsName = TransportItemsName

    @property
    def PlaceOfBuildingService(self):
        r"""建筑服务发生地，仅建筑发票返回
        :rtype: str
        """
        return self._PlaceOfBuildingService

    @PlaceOfBuildingService.setter
    def PlaceOfBuildingService(self, PlaceOfBuildingService):
        self._PlaceOfBuildingService = PlaceOfBuildingService

    @property
    def BuildingName(self):
        r"""建筑项目名称，仅建筑发票返回
        :rtype: str
        """
        return self._BuildingName

    @BuildingName.setter
    def BuildingName(self, BuildingName):
        self._BuildingName = BuildingName

    @property
    def EstateNumber(self):
        r"""产权证书/不动产权证号，仅不动产经营租赁服务发票返回
        :rtype: str
        """
        return self._EstateNumber

    @EstateNumber.setter
    def EstateNumber(self, EstateNumber):
        self._EstateNumber = EstateNumber

    @property
    def AreaUnit(self):
        r"""面积单位，仅不动产经营租赁服务发票返回
        :rtype: str
        """
        return self._AreaUnit

    @AreaUnit.setter
    def AreaUnit(self, AreaUnit):
        self._AreaUnit = AreaUnit

    @property
    def Traveler(self):
        r"""出行人，仅旅客运输服务发票返回
        :rtype: str
        """
        return self._Traveler

    @Traveler.setter
    def Traveler(self, Traveler):
        self._Traveler = Traveler

    @property
    def TravelerID(self):
        r"""有效身份证件号，仅旅客运输服务发票返回
        :rtype: str
        """
        return self._TravelerID

    @TravelerID.setter
    def TravelerID(self, TravelerID):
        self._TravelerID = TravelerID

    @property
    def TravelDate(self):
        r"""出行日期，仅旅客运输服务发票返回
        :rtype: str
        """
        return self._TravelDate

    @TravelDate.setter
    def TravelDate(self, TravelDate):
        self._TravelDate = TravelDate

    @property
    def TravelLevel(self):
        r"""等级，仅旅客运输服务发票返回
        :rtype: str
        """
        return self._TravelLevel

    @TravelLevel.setter
    def TravelLevel(self, TravelLevel):
        self._TravelLevel = TravelLevel


    def _deserialize(self, params):
        self._Name = params.get("Name")
        self._Quantity = params.get("Quantity")
        self._Specification = params.get("Specification")
        self._Price = params.get("Price")
        self._Total = params.get("Total")
        self._TaxRate = params.get("TaxRate")
        self._Tax = params.get("Tax")
        self._Unit = params.get("Unit")
        self._VehicleType = params.get("VehicleType")
        self._VehicleBrand = params.get("VehicleBrand")
        self._DeparturePlace = params.get("DeparturePlace")
        self._ArrivalPlace = params.get("ArrivalPlace")
        self._TransportItemsName = params.get("TransportItemsName")
        self._PlaceOfBuildingService = params.get("PlaceOfBuildingService")
        self._BuildingName = params.get("BuildingName")
        self._EstateNumber = params.get("EstateNumber")
        self._AreaUnit = params.get("AreaUnit")
        self._Traveler = params.get("Traveler")
        self._TravelerID = params.get("TravelerID")
        self._TravelDate = params.get("TravelDate")
        self._TravelLevel = params.get("TravelLevel")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class VatInvoice(AbstractModel):
    r"""增值税发票、购车发票、全电发票的基础要素字段信息。

    """

    def __init__(self):
        r"""
        :param _Code: 发票代码
        :type Code: str
        :param _Number: 发票号码
        :type Number: str
        :param _Date: 开票日期
        :type Date: str
        :param _BuyerName: 购方抬头
通用机打发票类型时不返回
        :type BuyerName: str
        :param _BuyerTaxCode: 购方税号
通用机打发票类型时不返回
        :type BuyerTaxCode: str
        :param _BuyerAddressPhone: 购方地址电话
通用机打发票类型做不返回
        :type BuyerAddressPhone: str
        :param _BuyerBankAccount: 购方银行账号
通用机打发票类型时不返回
        :type BuyerBankAccount: str
        :param _SellerName: 销方名称
        :type SellerName: str
        :param _SellerTaxCode: 销方税号
        :type SellerTaxCode: str
        :param _SellerAddressPhone: 销方地址电话
        :type SellerAddressPhone: str
        :param _SellerBankAccount: 销方银行账号
        :type SellerBankAccount: str
        :param _Remark: 备注
        :type Remark: str
        :param _MachineNo: 机器编码
        :type MachineNo: str
        :param _Type: 票种类型
01：增值税专用发票，
02：货运运输业增值税专用发票，
03：机动车销售统一发票，
04：增值税普通发票，
08：增值税电子专用发票（含全电，全电仅新版接口支持），
09：全电发票，
0901：全电纸质发票(增值税专用发票)，
0903：全电纸质(机动车销售统一发票)，
0904：全电纸质发票(增值税普通发票)，
0910：电子发票(普通发票)，
0915：全电纸质(二手车销售统一发票)，
0920：电子发票(增值税专用发票)，
0930：电子发票(机动车销售统一发票)，
0940：电子发票(二手车销售统一发票)，
10：增值税电子普通发票（含全电，全电仅新版接口支持），
11：增值税普通发票（卷式），
14：增值税电子（通行费）发票，
15：二手车销售统一发票，
32：深圳区块链发票，
61：电子发票（航空运输电子客票行程单），
8208：电子发票(通行费发票)，
83：电子发票(铁路电子客票)，
100：区块链发票，
101：财政票据，
102：通用电子发票，
103：车辆通行费




        :type Type: str
        :param _ElectronicType: 具体的全电发票类型：01: 全电专用发票；02：全电普通发票；03：全电火车票；04：全电机票行程单
        :type ElectronicType: str
        :param _CheckCode: 检验码
        :type CheckCode: str
        :param _IsAbandoned: 是否作废（红冲）是否作废（红冲）
Y：已作废，N：未作废，H：红冲，HP：部分红冲，HF：全额红冲
        :type IsAbandoned: str
        :param _HasSellerList: 是否有销货清单 
Y: 有清单 N：无清单 
卷票无
        :type HasSellerList: str
        :param _SellerListTitle: 销货清单标题
        :type SellerListTitle: str
        :param _SellerListTax: 销货清单税额
        :type SellerListTax: str
        :param _AmountWithoutTax: 不含税金额
        :type AmountWithoutTax: str
        :param _TaxAmount: 税额
        :type TaxAmount: str
        :param _AmountWithTax: 含税金额
        :type AmountWithTax: str
        :param _Items: 项目明细
        :type Items: list of VatInvoiceItem
        :param _TaxBureau: 所属税局
        :type TaxBureau: str
        :param _TrafficFreeFlag: 通行费标志:Y、是;N、否
        :type TrafficFreeFlag: str
        :param _RedLetterInvoiceMark: 是否为红票
注意：此字段可能返回 null，表示取不到有效值。
        :type RedLetterInvoiceMark: bool
        :param _IssuingTypeMark: 开具类型标识（0: 委托代开，1：自开，2：代开，3：代办退税
注意：此字段可能返回 null，表示取不到有效值。
        :type IssuingTypeMark: int
        :param _SellerAgentName: 代开销售方名称
        :type SellerAgentName: str
        :param _SellerAgentTaxID: 代开销售方税号
        :type SellerAgentTaxID: str
        """
        self._Code = None
        self._Number = None
        self._Date = None
        self._BuyerName = None
        self._BuyerTaxCode = None
        self._BuyerAddressPhone = None
        self._BuyerBankAccount = None
        self._SellerName = None
        self._SellerTaxCode = None
        self._SellerAddressPhone = None
        self._SellerBankAccount = None
        self._Remark = None
        self._MachineNo = None
        self._Type = None
        self._ElectronicType = None
        self._CheckCode = None
        self._IsAbandoned = None
        self._HasSellerList = None
        self._SellerListTitle = None
        self._SellerListTax = None
        self._AmountWithoutTax = None
        self._TaxAmount = None
        self._AmountWithTax = None
        self._Items = None
        self._TaxBureau = None
        self._TrafficFreeFlag = None
        self._RedLetterInvoiceMark = None
        self._IssuingTypeMark = None
        self._SellerAgentName = None
        self._SellerAgentTaxID = None

    @property
    def Code(self):
        r"""发票代码
        :rtype: str
        """
        return self._Code

    @Code.setter
    def Code(self, Code):
        self._Code = Code

    @property
    def Number(self):
        r"""发票号码
        :rtype: str
        """
        return self._Number

    @Number.setter
    def Number(self, Number):
        self._Number = Number

    @property
    def Date(self):
        r"""开票日期
        :rtype: str
        """
        return self._Date

    @Date.setter
    def Date(self, Date):
        self._Date = Date

    @property
    def BuyerName(self):
        r"""购方抬头
通用机打发票类型时不返回
        :rtype: str
        """
        return self._BuyerName

    @BuyerName.setter
    def BuyerName(self, BuyerName):
        self._BuyerName = BuyerName

    @property
    def BuyerTaxCode(self):
        r"""购方税号
通用机打发票类型时不返回
        :rtype: str
        """
        return self._BuyerTaxCode

    @BuyerTaxCode.setter
    def BuyerTaxCode(self, BuyerTaxCode):
        self._BuyerTaxCode = BuyerTaxCode

    @property
    def BuyerAddressPhone(self):
        r"""购方地址电话
通用机打发票类型做不返回
        :rtype: str
        """
        return self._BuyerAddressPhone

    @BuyerAddressPhone.setter
    def BuyerAddressPhone(self, BuyerAddressPhone):
        self._BuyerAddressPhone = BuyerAddressPhone

    @property
    def BuyerBankAccount(self):
        r"""购方银行账号
通用机打发票类型时不返回
        :rtype: str
        """
        return self._BuyerBankAccount

    @BuyerBankAccount.setter
    def BuyerBankAccount(self, BuyerBankAccount):
        self._BuyerBankAccount = BuyerBankAccount

    @property
    def SellerName(self):
        r"""销方名称
        :rtype: str
        """
        return self._SellerName

    @SellerName.setter
    def SellerName(self, SellerName):
        self._SellerName = SellerName

    @property
    def SellerTaxCode(self):
        r"""销方税号
        :rtype: str
        """
        return self._SellerTaxCode

    @SellerTaxCode.setter
    def SellerTaxCode(self, SellerTaxCode):
        self._SellerTaxCode = SellerTaxCode

    @property
    def SellerAddressPhone(self):
        r"""销方地址电话
        :rtype: str
        """
        return self._SellerAddressPhone

    @SellerAddressPhone.setter
    def SellerAddressPhone(self, SellerAddressPhone):
        self._SellerAddressPhone = SellerAddressPhone

    @property
    def SellerBankAccount(self):
        r"""销方银行账号
        :rtype: str
        """
        return self._SellerBankAccount

    @SellerBankAccount.setter
    def SellerBankAccount(self, SellerBankAccount):
        self._SellerBankAccount = SellerBankAccount

    @property
    def Remark(self):
        r"""备注
        :rtype: str
        """
        return self._Remark

    @Remark.setter
    def Remark(self, Remark):
        self._Remark = Remark

    @property
    def MachineNo(self):
        r"""机器编码
        :rtype: str
        """
        return self._MachineNo

    @MachineNo.setter
    def MachineNo(self, MachineNo):
        self._MachineNo = MachineNo

    @property
    def Type(self):
        r"""票种类型
01：增值税专用发票，
02：货运运输业增值税专用发票，
03：机动车销售统一发票，
04：增值税普通发票，
08：增值税电子专用发票（含全电，全电仅新版接口支持），
09：全电发票，
0901：全电纸质发票(增值税专用发票)，
0903：全电纸质(机动车销售统一发票)，
0904：全电纸质发票(增值税普通发票)，
0910：电子发票(普通发票)，
0915：全电纸质(二手车销售统一发票)，
0920：电子发票(增值税专用发票)，
0930：电子发票(机动车销售统一发票)，
0940：电子发票(二手车销售统一发票)，
10：增值税电子普通发票（含全电，全电仅新版接口支持），
11：增值税普通发票（卷式），
14：增值税电子（通行费）发票，
15：二手车销售统一发票，
32：深圳区块链发票，
61：电子发票（航空运输电子客票行程单），
8208：电子发票(通行费发票)，
83：电子发票(铁路电子客票)，
100：区块链发票，
101：财政票据，
102：通用电子发票，
103：车辆通行费




        :rtype: str
        """
        return self._Type

    @Type.setter
    def Type(self, Type):
        self._Type = Type

    @property
    def ElectronicType(self):
        r"""具体的全电发票类型：01: 全电专用发票；02：全电普通发票；03：全电火车票；04：全电机票行程单
        :rtype: str
        """
        return self._ElectronicType

    @ElectronicType.setter
    def ElectronicType(self, ElectronicType):
        self._ElectronicType = ElectronicType

    @property
    def CheckCode(self):
        r"""检验码
        :rtype: str
        """
        return self._CheckCode

    @CheckCode.setter
    def CheckCode(self, CheckCode):
        self._CheckCode = CheckCode

    @property
    def IsAbandoned(self):
        r"""是否作废（红冲）是否作废（红冲）
Y：已作废，N：未作废，H：红冲，HP：部分红冲，HF：全额红冲
        :rtype: str
        """
        return self._IsAbandoned

    @IsAbandoned.setter
    def IsAbandoned(self, IsAbandoned):
        self._IsAbandoned = IsAbandoned

    @property
    def HasSellerList(self):
        r"""是否有销货清单 
Y: 有清单 N：无清单 
卷票无
        :rtype: str
        """
        return self._HasSellerList

    @HasSellerList.setter
    def HasSellerList(self, HasSellerList):
        self._HasSellerList = HasSellerList

    @property
    def SellerListTitle(self):
        r"""销货清单标题
        :rtype: str
        """
        return self._SellerListTitle

    @SellerListTitle.setter
    def SellerListTitle(self, SellerListTitle):
        self._SellerListTitle = SellerListTitle

    @property
    def SellerListTax(self):
        r"""销货清单税额
        :rtype: str
        """
        return self._SellerListTax

    @SellerListTax.setter
    def SellerListTax(self, SellerListTax):
        self._SellerListTax = SellerListTax

    @property
    def AmountWithoutTax(self):
        r"""不含税金额
        :rtype: str
        """
        return self._AmountWithoutTax

    @AmountWithoutTax.setter
    def AmountWithoutTax(self, AmountWithoutTax):
        self._AmountWithoutTax = AmountWithoutTax

    @property
    def TaxAmount(self):
        r"""税额
        :rtype: str
        """
        return self._TaxAmount

    @TaxAmount.setter
    def TaxAmount(self, TaxAmount):
        self._TaxAmount = TaxAmount

    @property
    def AmountWithTax(self):
        r"""含税金额
        :rtype: str
        """
        return self._AmountWithTax

    @AmountWithTax.setter
    def AmountWithTax(self, AmountWithTax):
        self._AmountWithTax = AmountWithTax

    @property
    def Items(self):
        r"""项目明细
        :rtype: list of VatInvoiceItem
        """
        return self._Items

    @Items.setter
    def Items(self, Items):
        self._Items = Items

    @property
    def TaxBureau(self):
        r"""所属税局
        :rtype: str
        """
        return self._TaxBureau

    @TaxBureau.setter
    def TaxBureau(self, TaxBureau):
        self._TaxBureau = TaxBureau

    @property
    def TrafficFreeFlag(self):
        r"""通行费标志:Y、是;N、否
        :rtype: str
        """
        return self._TrafficFreeFlag

    @TrafficFreeFlag.setter
    def TrafficFreeFlag(self, TrafficFreeFlag):
        self._TrafficFreeFlag = TrafficFreeFlag

    @property
    def RedLetterInvoiceMark(self):
        r"""是否为红票
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: bool
        """
        return self._RedLetterInvoiceMark

    @RedLetterInvoiceMark.setter
    def RedLetterInvoiceMark(self, RedLetterInvoiceMark):
        self._RedLetterInvoiceMark = RedLetterInvoiceMark

    @property
    def IssuingTypeMark(self):
        r"""开具类型标识（0: 委托代开，1：自开，2：代开，3：代办退税
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._IssuingTypeMark

    @IssuingTypeMark.setter
    def IssuingTypeMark(self, IssuingTypeMark):
        self._IssuingTypeMark = IssuingTypeMark

    @property
    def SellerAgentName(self):
        r"""代开销售方名称
        :rtype: str
        """
        return self._SellerAgentName

    @SellerAgentName.setter
    def SellerAgentName(self, SellerAgentName):
        self._SellerAgentName = SellerAgentName

    @property
    def SellerAgentTaxID(self):
        r"""代开销售方税号
        :rtype: str
        """
        return self._SellerAgentTaxID

    @SellerAgentTaxID.setter
    def SellerAgentTaxID(self, SellerAgentTaxID):
        self._SellerAgentTaxID = SellerAgentTaxID


    def _deserialize(self, params):
        self._Code = params.get("Code")
        self._Number = params.get("Number")
        self._Date = params.get("Date")
        self._BuyerName = params.get("BuyerName")
        self._BuyerTaxCode = params.get("BuyerTaxCode")
        self._BuyerAddressPhone = params.get("BuyerAddressPhone")
        self._BuyerBankAccount = params.get("BuyerBankAccount")
        self._SellerName = params.get("SellerName")
        self._SellerTaxCode = params.get("SellerTaxCode")
        self._SellerAddressPhone = params.get("SellerAddressPhone")
        self._SellerBankAccount = params.get("SellerBankAccount")
        self._Remark = params.get("Remark")
        self._MachineNo = params.get("MachineNo")
        self._Type = params.get("Type")
        self._ElectronicType = params.get("ElectronicType")
        self._CheckCode = params.get("CheckCode")
        self._IsAbandoned = params.get("IsAbandoned")
        self._HasSellerList = params.get("HasSellerList")
        self._SellerListTitle = params.get("SellerListTitle")
        self._SellerListTax = params.get("SellerListTax")
        self._AmountWithoutTax = params.get("AmountWithoutTax")
        self._TaxAmount = params.get("TaxAmount")
        self._AmountWithTax = params.get("AmountWithTax")
        if params.get("Items") is not None:
            self._Items = []
            for item in params.get("Items"):
                obj = VatInvoiceItem()
                obj._deserialize(item)
                self._Items.append(obj)
        self._TaxBureau = params.get("TaxBureau")
        self._TrafficFreeFlag = params.get("TrafficFreeFlag")
        self._RedLetterInvoiceMark = params.get("RedLetterInvoiceMark")
        self._IssuingTypeMark = params.get("IssuingTypeMark")
        self._SellerAgentName = params.get("SellerAgentName")
        self._SellerAgentTaxID = params.get("SellerAgentTaxID")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class VatInvoiceGoodsInfo(AbstractModel):
    r"""发票商品

    """

    def __init__(self):
        r"""
        :param _Item: 项目名称
        :type Item: str
        :param _Specification: 规格型号
        :type Specification: str
        :param _MeasurementDimension: 单位
        :type MeasurementDimension: str
        :param _Price: 价格
        :type Price: str
        :param _Quantity: 数量
        :type Quantity: str
        :param _Amount: 金额
        :type Amount: str
        :param _TaxScheme: 税率(如6%、免税)
        :type TaxScheme: str
        :param _TaxAmount: 税额
        :type TaxAmount: str
        """
        self._Item = None
        self._Specification = None
        self._MeasurementDimension = None
        self._Price = None
        self._Quantity = None
        self._Amount = None
        self._TaxScheme = None
        self._TaxAmount = None

    @property
    def Item(self):
        r"""项目名称
        :rtype: str
        """
        return self._Item

    @Item.setter
    def Item(self, Item):
        self._Item = Item

    @property
    def Specification(self):
        r"""规格型号
        :rtype: str
        """
        return self._Specification

    @Specification.setter
    def Specification(self, Specification):
        self._Specification = Specification

    @property
    def MeasurementDimension(self):
        r"""单位
        :rtype: str
        """
        return self._MeasurementDimension

    @MeasurementDimension.setter
    def MeasurementDimension(self, MeasurementDimension):
        self._MeasurementDimension = MeasurementDimension

    @property
    def Price(self):
        r"""价格
        :rtype: str
        """
        return self._Price

    @Price.setter
    def Price(self, Price):
        self._Price = Price

    @property
    def Quantity(self):
        r"""数量
        :rtype: str
        """
        return self._Quantity

    @Quantity.setter
    def Quantity(self, Quantity):
        self._Quantity = Quantity

    @property
    def Amount(self):
        r"""金额
        :rtype: str
        """
        return self._Amount

    @Amount.setter
    def Amount(self, Amount):
        self._Amount = Amount

    @property
    def TaxScheme(self):
        r"""税率(如6%、免税)
        :rtype: str
        """
        return self._TaxScheme

    @TaxScheme.setter
    def TaxScheme(self, TaxScheme):
        self._TaxScheme = TaxScheme

    @property
    def TaxAmount(self):
        r"""税额
        :rtype: str
        """
        return self._TaxAmount

    @TaxAmount.setter
    def TaxAmount(self, TaxAmount):
        self._TaxAmount = TaxAmount


    def _deserialize(self, params):
        self._Item = params.get("Item")
        self._Specification = params.get("Specification")
        self._MeasurementDimension = params.get("MeasurementDimension")
        self._Price = params.get("Price")
        self._Quantity = params.get("Quantity")
        self._Amount = params.get("Amount")
        self._TaxScheme = params.get("TaxScheme")
        self._TaxAmount = params.get("TaxAmount")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class VatInvoiceInfo(AbstractModel):
    r"""增值税发票返回值

    """

    def __init__(self):
        r"""
        :param _CheckCode: 校验码
        :type CheckCode: str
        :param _FormType: 发票联次
        :type FormType: str
        :param _TravelTax: 车船税
        :type TravelTax: str
        :param _BuyerAddrTel: 购买方地址电话
        :type BuyerAddrTel: str
        :param _BuyerBankAccount: 购买方银行账号
        :type BuyerBankAccount: str
        :param _CompanySealContent: 公司印章内容
        :type CompanySealContent: str
        :param _TaxSealContent: 税务局章内容
        :type TaxSealContent: str
        :param _ServiceName: 服务类型
        :type ServiceName: str
        :param _City: 市
        :type City: str
        :param _QRCodeMark: 是否存在二维码（0：没有，1：有）
        :type QRCodeMark: int
        :param _AgentMark: 是否有代开标记（0：没有，1：有）
        :type AgentMark: int
        :param _TransitMark: 是否有通行费标记（0：没有，1：有）
        :type TransitMark: int
        :param _OilMark: 是否有成品油标记（0：没有，1：有）
        :type OilMark: int
        :param _Title: 发票名称
        :type Title: str
        :param _Kind: 发票消费类型
        :type Kind: str
        :param _Code: 发票代码
        :type Code: str
        :param _Number: 发票号码
        :type Number: str
        :param _NumberConfirm: 机打发票号码
        :type NumberConfirm: str
        :param _Date: 开票日期
        :type Date: str
        :param _Total: 价税合计（小写）
        :type Total: str
        :param _TotalCn: 价税合计（大写）
        :type TotalCn: str
        :param _PretaxAmount: 税前金额
        :type PretaxAmount: str
        :param _Tax: 合计税额
        :type Tax: str
        :param _MachineCode: 机器编号
        :type MachineCode: str
        :param _Ciphertext: 密码区
        :type Ciphertext: str
        :param _Remark: 备注
        :type Remark: str
        :param _Seller: 销售方名称
        :type Seller: str
        :param _SellerTaxID: 销售方纳税人识别号
        :type SellerTaxID: str
        :param _SellerAddrTel: 销售方地址电话
        :type SellerAddrTel: str
        :param _SellerBankAccount: 销售方银行账号
        :type SellerBankAccount: str
        :param _Buyer: 购买方名称
        :type Buyer: str
        :param _BuyerTaxID: 购买方纳税人识别号
        :type BuyerTaxID: str
        :param _CompanySealMark: 是否有公司印章（0：没有，1：有）
        :type CompanySealMark: int
        :param _Issuer: 开票人
        :type Issuer: str
        :param _Reviewer: 复核人
        :type Reviewer: str
        :param _Province: 省
        :type Province: str
        :param _VatInvoiceItemInfos: 增值税发票项目信息
        :type VatInvoiceItemInfos: list of VatInvoiceItemInfo
        :param _CodeConfirm: 机打发票代码
        :type CodeConfirm: str
        :param _Receiptor: 收款人
        :type Receiptor: str
        :param _ElectronicFullMark: 是否有全电纸质票（0：没有，1：有）
        :type ElectronicFullMark: int
        :param _ElectronicFullNumber: 全电号码
        :type ElectronicFullNumber: str
        :param _FormName: 发票联名
        :type FormName: str
        :param _BlockChainMark: 是否有区块链标记（0：没有，1：有）	
        :type BlockChainMark: int
        :param _AcquisitionMark: 是否有收购标记（0：没有，1：有）	
        :type AcquisitionMark: int
        :param _SubTotal: 小计金额
        :type SubTotal: str
        :param _SubTax: 小计税额
        :type SubTax: str
        """
        self._CheckCode = None
        self._FormType = None
        self._TravelTax = None
        self._BuyerAddrTel = None
        self._BuyerBankAccount = None
        self._CompanySealContent = None
        self._TaxSealContent = None
        self._ServiceName = None
        self._City = None
        self._QRCodeMark = None
        self._AgentMark = None
        self._TransitMark = None
        self._OilMark = None
        self._Title = None
        self._Kind = None
        self._Code = None
        self._Number = None
        self._NumberConfirm = None
        self._Date = None
        self._Total = None
        self._TotalCn = None
        self._PretaxAmount = None
        self._Tax = None
        self._MachineCode = None
        self._Ciphertext = None
        self._Remark = None
        self._Seller = None
        self._SellerTaxID = None
        self._SellerAddrTel = None
        self._SellerBankAccount = None
        self._Buyer = None
        self._BuyerTaxID = None
        self._CompanySealMark = None
        self._Issuer = None
        self._Reviewer = None
        self._Province = None
        self._VatInvoiceItemInfos = None
        self._CodeConfirm = None
        self._Receiptor = None
        self._ElectronicFullMark = None
        self._ElectronicFullNumber = None
        self._FormName = None
        self._BlockChainMark = None
        self._AcquisitionMark = None
        self._SubTotal = None
        self._SubTax = None

    @property
    def CheckCode(self):
        r"""校验码
        :rtype: str
        """
        return self._CheckCode

    @CheckCode.setter
    def CheckCode(self, CheckCode):
        self._CheckCode = CheckCode

    @property
    def FormType(self):
        r"""发票联次
        :rtype: str
        """
        return self._FormType

    @FormType.setter
    def FormType(self, FormType):
        self._FormType = FormType

    @property
    def TravelTax(self):
        r"""车船税
        :rtype: str
        """
        return self._TravelTax

    @TravelTax.setter
    def TravelTax(self, TravelTax):
        self._TravelTax = TravelTax

    @property
    def BuyerAddrTel(self):
        r"""购买方地址电话
        :rtype: str
        """
        return self._BuyerAddrTel

    @BuyerAddrTel.setter
    def BuyerAddrTel(self, BuyerAddrTel):
        self._BuyerAddrTel = BuyerAddrTel

    @property
    def BuyerBankAccount(self):
        r"""购买方银行账号
        :rtype: str
        """
        return self._BuyerBankAccount

    @BuyerBankAccount.setter
    def BuyerBankAccount(self, BuyerBankAccount):
        self._BuyerBankAccount = BuyerBankAccount

    @property
    def CompanySealContent(self):
        r"""公司印章内容
        :rtype: str
        """
        return self._CompanySealContent

    @CompanySealContent.setter
    def CompanySealContent(self, CompanySealContent):
        self._CompanySealContent = CompanySealContent

    @property
    def TaxSealContent(self):
        r"""税务局章内容
        :rtype: str
        """
        return self._TaxSealContent

    @TaxSealContent.setter
    def TaxSealContent(self, TaxSealContent):
        self._TaxSealContent = TaxSealContent

    @property
    def ServiceName(self):
        r"""服务类型
        :rtype: str
        """
        return self._ServiceName

    @ServiceName.setter
    def ServiceName(self, ServiceName):
        self._ServiceName = ServiceName

    @property
    def City(self):
        r"""市
        :rtype: str
        """
        return self._City

    @City.setter
    def City(self, City):
        self._City = City

    @property
    def QRCodeMark(self):
        r"""是否存在二维码（0：没有，1：有）
        :rtype: int
        """
        return self._QRCodeMark

    @QRCodeMark.setter
    def QRCodeMark(self, QRCodeMark):
        self._QRCodeMark = QRCodeMark

    @property
    def AgentMark(self):
        r"""是否有代开标记（0：没有，1：有）
        :rtype: int
        """
        return self._AgentMark

    @AgentMark.setter
    def AgentMark(self, AgentMark):
        self._AgentMark = AgentMark

    @property
    def TransitMark(self):
        r"""是否有通行费标记（0：没有，1：有）
        :rtype: int
        """
        return self._TransitMark

    @TransitMark.setter
    def TransitMark(self, TransitMark):
        self._TransitMark = TransitMark

    @property
    def OilMark(self):
        r"""是否有成品油标记（0：没有，1：有）
        :rtype: int
        """
        return self._OilMark

    @OilMark.setter
    def OilMark(self, OilMark):
        self._OilMark = OilMark

    @property
    def Title(self):
        r"""发票名称
        :rtype: str
        """
        return self._Title

    @Title.setter
    def Title(self, Title):
        self._Title = Title

    @property
    def Kind(self):
        r"""发票消费类型
        :rtype: str
        """
        return self._Kind

    @Kind.setter
    def Kind(self, Kind):
        self._Kind = Kind

    @property
    def Code(self):
        r"""发票代码
        :rtype: str
        """
        return self._Code

    @Code.setter
    def Code(self, Code):
        self._Code = Code

    @property
    def Number(self):
        r"""发票号码
        :rtype: str
        """
        return self._Number

    @Number.setter
    def Number(self, Number):
        self._Number = Number

    @property
    def NumberConfirm(self):
        r"""机打发票号码
        :rtype: str
        """
        return self._NumberConfirm

    @NumberConfirm.setter
    def NumberConfirm(self, NumberConfirm):
        self._NumberConfirm = NumberConfirm

    @property
    def Date(self):
        r"""开票日期
        :rtype: str
        """
        return self._Date

    @Date.setter
    def Date(self, Date):
        self._Date = Date

    @property
    def Total(self):
        r"""价税合计（小写）
        :rtype: str
        """
        return self._Total

    @Total.setter
    def Total(self, Total):
        self._Total = Total

    @property
    def TotalCn(self):
        r"""价税合计（大写）
        :rtype: str
        """
        return self._TotalCn

    @TotalCn.setter
    def TotalCn(self, TotalCn):
        self._TotalCn = TotalCn

    @property
    def PretaxAmount(self):
        r"""税前金额
        :rtype: str
        """
        return self._PretaxAmount

    @PretaxAmount.setter
    def PretaxAmount(self, PretaxAmount):
        self._PretaxAmount = PretaxAmount

    @property
    def Tax(self):
        r"""合计税额
        :rtype: str
        """
        return self._Tax

    @Tax.setter
    def Tax(self, Tax):
        self._Tax = Tax

    @property
    def MachineCode(self):
        r"""机器编号
        :rtype: str
        """
        return self._MachineCode

    @MachineCode.setter
    def MachineCode(self, MachineCode):
        self._MachineCode = MachineCode

    @property
    def Ciphertext(self):
        r"""密码区
        :rtype: str
        """
        return self._Ciphertext

    @Ciphertext.setter
    def Ciphertext(self, Ciphertext):
        self._Ciphertext = Ciphertext

    @property
    def Remark(self):
        r"""备注
        :rtype: str
        """
        return self._Remark

    @Remark.setter
    def Remark(self, Remark):
        self._Remark = Remark

    @property
    def Seller(self):
        r"""销售方名称
        :rtype: str
        """
        return self._Seller

    @Seller.setter
    def Seller(self, Seller):
        self._Seller = Seller

    @property
    def SellerTaxID(self):
        r"""销售方纳税人识别号
        :rtype: str
        """
        return self._SellerTaxID

    @SellerTaxID.setter
    def SellerTaxID(self, SellerTaxID):
        self._SellerTaxID = SellerTaxID

    @property
    def SellerAddrTel(self):
        r"""销售方地址电话
        :rtype: str
        """
        return self._SellerAddrTel

    @SellerAddrTel.setter
    def SellerAddrTel(self, SellerAddrTel):
        self._SellerAddrTel = SellerAddrTel

    @property
    def SellerBankAccount(self):
        r"""销售方银行账号
        :rtype: str
        """
        return self._SellerBankAccount

    @SellerBankAccount.setter
    def SellerBankAccount(self, SellerBankAccount):
        self._SellerBankAccount = SellerBankAccount

    @property
    def Buyer(self):
        r"""购买方名称
        :rtype: str
        """
        return self._Buyer

    @Buyer.setter
    def Buyer(self, Buyer):
        self._Buyer = Buyer

    @property
    def BuyerTaxID(self):
        r"""购买方纳税人识别号
        :rtype: str
        """
        return self._BuyerTaxID

    @BuyerTaxID.setter
    def BuyerTaxID(self, BuyerTaxID):
        self._BuyerTaxID = BuyerTaxID

    @property
    def CompanySealMark(self):
        r"""是否有公司印章（0：没有，1：有）
        :rtype: int
        """
        return self._CompanySealMark

    @CompanySealMark.setter
    def CompanySealMark(self, CompanySealMark):
        self._CompanySealMark = CompanySealMark

    @property
    def Issuer(self):
        r"""开票人
        :rtype: str
        """
        return self._Issuer

    @Issuer.setter
    def Issuer(self, Issuer):
        self._Issuer = Issuer

    @property
    def Reviewer(self):
        r"""复核人
        :rtype: str
        """
        return self._Reviewer

    @Reviewer.setter
    def Reviewer(self, Reviewer):
        self._Reviewer = Reviewer

    @property
    def Province(self):
        r"""省
        :rtype: str
        """
        return self._Province

    @Province.setter
    def Province(self, Province):
        self._Province = Province

    @property
    def VatInvoiceItemInfos(self):
        r"""增值税发票项目信息
        :rtype: list of VatInvoiceItemInfo
        """
        return self._VatInvoiceItemInfos

    @VatInvoiceItemInfos.setter
    def VatInvoiceItemInfos(self, VatInvoiceItemInfos):
        self._VatInvoiceItemInfos = VatInvoiceItemInfos

    @property
    def CodeConfirm(self):
        r"""机打发票代码
        :rtype: str
        """
        return self._CodeConfirm

    @CodeConfirm.setter
    def CodeConfirm(self, CodeConfirm):
        self._CodeConfirm = CodeConfirm

    @property
    def Receiptor(self):
        r"""收款人
        :rtype: str
        """
        return self._Receiptor

    @Receiptor.setter
    def Receiptor(self, Receiptor):
        self._Receiptor = Receiptor

    @property
    def ElectronicFullMark(self):
        r"""是否有全电纸质票（0：没有，1：有）
        :rtype: int
        """
        return self._ElectronicFullMark

    @ElectronicFullMark.setter
    def ElectronicFullMark(self, ElectronicFullMark):
        self._ElectronicFullMark = ElectronicFullMark

    @property
    def ElectronicFullNumber(self):
        r"""全电号码
        :rtype: str
        """
        return self._ElectronicFullNumber

    @ElectronicFullNumber.setter
    def ElectronicFullNumber(self, ElectronicFullNumber):
        self._ElectronicFullNumber = ElectronicFullNumber

    @property
    def FormName(self):
        r"""发票联名
        :rtype: str
        """
        return self._FormName

    @FormName.setter
    def FormName(self, FormName):
        self._FormName = FormName

    @property
    def BlockChainMark(self):
        r"""是否有区块链标记（0：没有，1：有）	
        :rtype: int
        """
        return self._BlockChainMark

    @BlockChainMark.setter
    def BlockChainMark(self, BlockChainMark):
        self._BlockChainMark = BlockChainMark

    @property
    def AcquisitionMark(self):
        r"""是否有收购标记（0：没有，1：有）	
        :rtype: int
        """
        return self._AcquisitionMark

    @AcquisitionMark.setter
    def AcquisitionMark(self, AcquisitionMark):
        self._AcquisitionMark = AcquisitionMark

    @property
    def SubTotal(self):
        r"""小计金额
        :rtype: str
        """
        return self._SubTotal

    @SubTotal.setter
    def SubTotal(self, SubTotal):
        self._SubTotal = SubTotal

    @property
    def SubTax(self):
        r"""小计税额
        :rtype: str
        """
        return self._SubTax

    @SubTax.setter
    def SubTax(self, SubTax):
        self._SubTax = SubTax


    def _deserialize(self, params):
        self._CheckCode = params.get("CheckCode")
        self._FormType = params.get("FormType")
        self._TravelTax = params.get("TravelTax")
        self._BuyerAddrTel = params.get("BuyerAddrTel")
        self._BuyerBankAccount = params.get("BuyerBankAccount")
        self._CompanySealContent = params.get("CompanySealContent")
        self._TaxSealContent = params.get("TaxSealContent")
        self._ServiceName = params.get("ServiceName")
        self._City = params.get("City")
        self._QRCodeMark = params.get("QRCodeMark")
        self._AgentMark = params.get("AgentMark")
        self._TransitMark = params.get("TransitMark")
        self._OilMark = params.get("OilMark")
        self._Title = params.get("Title")
        self._Kind = params.get("Kind")
        self._Code = params.get("Code")
        self._Number = params.get("Number")
        self._NumberConfirm = params.get("NumberConfirm")
        self._Date = params.get("Date")
        self._Total = params.get("Total")
        self._TotalCn = params.get("TotalCn")
        self._PretaxAmount = params.get("PretaxAmount")
        self._Tax = params.get("Tax")
        self._MachineCode = params.get("MachineCode")
        self._Ciphertext = params.get("Ciphertext")
        self._Remark = params.get("Remark")
        self._Seller = params.get("Seller")
        self._SellerTaxID = params.get("SellerTaxID")
        self._SellerAddrTel = params.get("SellerAddrTel")
        self._SellerBankAccount = params.get("SellerBankAccount")
        self._Buyer = params.get("Buyer")
        self._BuyerTaxID = params.get("BuyerTaxID")
        self._CompanySealMark = params.get("CompanySealMark")
        self._Issuer = params.get("Issuer")
        self._Reviewer = params.get("Reviewer")
        self._Province = params.get("Province")
        if params.get("VatInvoiceItemInfos") is not None:
            self._VatInvoiceItemInfos = []
            for item in params.get("VatInvoiceItemInfos"):
                obj = VatInvoiceItemInfo()
                obj._deserialize(item)
                self._VatInvoiceItemInfos.append(obj)
        self._CodeConfirm = params.get("CodeConfirm")
        self._Receiptor = params.get("Receiptor")
        self._ElectronicFullMark = params.get("ElectronicFullMark")
        self._ElectronicFullNumber = params.get("ElectronicFullNumber")
        self._FormName = params.get("FormName")
        self._BlockChainMark = params.get("BlockChainMark")
        self._AcquisitionMark = params.get("AcquisitionMark")
        self._SubTotal = params.get("SubTotal")
        self._SubTax = params.get("SubTax")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class VatInvoiceItem(AbstractModel):
    r"""增值税发票项目明细

    """

    def __init__(self):
        r"""
        :param _LineNo: 行号
        :type LineNo: str
        :param _Name: 名称
        :type Name: str
        :param _Spec: 规格
        :type Spec: str
        :param _Unit: 单位
        :type Unit: str
        :param _Quantity: 数量
        :type Quantity: str
        :param _UnitPrice: 单价
        :type UnitPrice: str
        :param _AmountWithoutTax: 不含税金额
        :type AmountWithoutTax: str
        :param _TaxRate: 税率
        :type TaxRate: str
        :param _TaxAmount: 税额
        :type TaxAmount: str
        :param _TaxClassifyCode: 税收分类编码
        :type TaxClassifyCode: str
        :param _VehicleType: 运输工具类型
        :type VehicleType: str
        :param _VehicleBrand: 运输工具牌号
        :type VehicleBrand: str
        :param _DeparturePlace: 起始地
        :type DeparturePlace: str
        :param _ArrivalPlace: 到达地
        :type ArrivalPlace: str
        :param _TransportItemsName: 运输货物名称
        :type TransportItemsName: str
        :param _ConstructionPlace: 建筑服务发生地
        :type ConstructionPlace: str
        :param _ConstructionName: 建筑项目名称
        :type ConstructionName: str
        """
        self._LineNo = None
        self._Name = None
        self._Spec = None
        self._Unit = None
        self._Quantity = None
        self._UnitPrice = None
        self._AmountWithoutTax = None
        self._TaxRate = None
        self._TaxAmount = None
        self._TaxClassifyCode = None
        self._VehicleType = None
        self._VehicleBrand = None
        self._DeparturePlace = None
        self._ArrivalPlace = None
        self._TransportItemsName = None
        self._ConstructionPlace = None
        self._ConstructionName = None

    @property
    def LineNo(self):
        r"""行号
        :rtype: str
        """
        return self._LineNo

    @LineNo.setter
    def LineNo(self, LineNo):
        self._LineNo = LineNo

    @property
    def Name(self):
        r"""名称
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Spec(self):
        r"""规格
        :rtype: str
        """
        return self._Spec

    @Spec.setter
    def Spec(self, Spec):
        self._Spec = Spec

    @property
    def Unit(self):
        r"""单位
        :rtype: str
        """
        return self._Unit

    @Unit.setter
    def Unit(self, Unit):
        self._Unit = Unit

    @property
    def Quantity(self):
        r"""数量
        :rtype: str
        """
        return self._Quantity

    @Quantity.setter
    def Quantity(self, Quantity):
        self._Quantity = Quantity

    @property
    def UnitPrice(self):
        r"""单价
        :rtype: str
        """
        return self._UnitPrice

    @UnitPrice.setter
    def UnitPrice(self, UnitPrice):
        self._UnitPrice = UnitPrice

    @property
    def AmountWithoutTax(self):
        r"""不含税金额
        :rtype: str
        """
        return self._AmountWithoutTax

    @AmountWithoutTax.setter
    def AmountWithoutTax(self, AmountWithoutTax):
        self._AmountWithoutTax = AmountWithoutTax

    @property
    def TaxRate(self):
        r"""税率
        :rtype: str
        """
        return self._TaxRate

    @TaxRate.setter
    def TaxRate(self, TaxRate):
        self._TaxRate = TaxRate

    @property
    def TaxAmount(self):
        r"""税额
        :rtype: str
        """
        return self._TaxAmount

    @TaxAmount.setter
    def TaxAmount(self, TaxAmount):
        self._TaxAmount = TaxAmount

    @property
    def TaxClassifyCode(self):
        r"""税收分类编码
        :rtype: str
        """
        return self._TaxClassifyCode

    @TaxClassifyCode.setter
    def TaxClassifyCode(self, TaxClassifyCode):
        self._TaxClassifyCode = TaxClassifyCode

    @property
    def VehicleType(self):
        r"""运输工具类型
        :rtype: str
        """
        return self._VehicleType

    @VehicleType.setter
    def VehicleType(self, VehicleType):
        self._VehicleType = VehicleType

    @property
    def VehicleBrand(self):
        r"""运输工具牌号
        :rtype: str
        """
        return self._VehicleBrand

    @VehicleBrand.setter
    def VehicleBrand(self, VehicleBrand):
        self._VehicleBrand = VehicleBrand

    @property
    def DeparturePlace(self):
        r"""起始地
        :rtype: str
        """
        return self._DeparturePlace

    @DeparturePlace.setter
    def DeparturePlace(self, DeparturePlace):
        self._DeparturePlace = DeparturePlace

    @property
    def ArrivalPlace(self):
        r"""到达地
        :rtype: str
        """
        return self._ArrivalPlace

    @ArrivalPlace.setter
    def ArrivalPlace(self, ArrivalPlace):
        self._ArrivalPlace = ArrivalPlace

    @property
    def TransportItemsName(self):
        r"""运输货物名称
        :rtype: str
        """
        return self._TransportItemsName

    @TransportItemsName.setter
    def TransportItemsName(self, TransportItemsName):
        self._TransportItemsName = TransportItemsName

    @property
    def ConstructionPlace(self):
        r"""建筑服务发生地
        :rtype: str
        """
        return self._ConstructionPlace

    @ConstructionPlace.setter
    def ConstructionPlace(self, ConstructionPlace):
        self._ConstructionPlace = ConstructionPlace

    @property
    def ConstructionName(self):
        r"""建筑项目名称
        :rtype: str
        """
        return self._ConstructionName

    @ConstructionName.setter
    def ConstructionName(self, ConstructionName):
        self._ConstructionName = ConstructionName


    def _deserialize(self, params):
        self._LineNo = params.get("LineNo")
        self._Name = params.get("Name")
        self._Spec = params.get("Spec")
        self._Unit = params.get("Unit")
        self._Quantity = params.get("Quantity")
        self._UnitPrice = params.get("UnitPrice")
        self._AmountWithoutTax = params.get("AmountWithoutTax")
        self._TaxRate = params.get("TaxRate")
        self._TaxAmount = params.get("TaxAmount")
        self._TaxClassifyCode = params.get("TaxClassifyCode")
        self._VehicleType = params.get("VehicleType")
        self._VehicleBrand = params.get("VehicleBrand")
        self._DeparturePlace = params.get("DeparturePlace")
        self._ArrivalPlace = params.get("ArrivalPlace")
        self._TransportItemsName = params.get("TransportItemsName")
        self._ConstructionPlace = params.get("ConstructionPlace")
        self._ConstructionName = params.get("ConstructionName")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class VatInvoiceItemInfo(AbstractModel):
    r"""增值税发票项目信息

    """

    def __init__(self):
        r"""
        :param _Name: 项目名称
        :type Name: str
        :param _Specification: 规格型号
        :type Specification: str
        :param _Unit: 单位
        :type Unit: str
        :param _Quantity: 数量
        :type Quantity: str
        :param _Price: 单价
        :type Price: str
        :param _Total: 金额
        :type Total: str
        :param _TaxRate: 税率
        :type TaxRate: str
        :param _Tax: 税额
        :type Tax: str
        :param _DateStart: 通行日期起
        :type DateStart: str
        :param _DateEnd: 通行日期止
        :type DateEnd: str
        :param _LicensePlate: 车牌号
        :type LicensePlate: str
        :param _VehicleType: 车辆类型
        :type VehicleType: str
        :param _SerialNumber: 序号
        :type SerialNumber: str
        """
        self._Name = None
        self._Specification = None
        self._Unit = None
        self._Quantity = None
        self._Price = None
        self._Total = None
        self._TaxRate = None
        self._Tax = None
        self._DateStart = None
        self._DateEnd = None
        self._LicensePlate = None
        self._VehicleType = None
        self._SerialNumber = None

    @property
    def Name(self):
        r"""项目名称
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Specification(self):
        r"""规格型号
        :rtype: str
        """
        return self._Specification

    @Specification.setter
    def Specification(self, Specification):
        self._Specification = Specification

    @property
    def Unit(self):
        r"""单位
        :rtype: str
        """
        return self._Unit

    @Unit.setter
    def Unit(self, Unit):
        self._Unit = Unit

    @property
    def Quantity(self):
        r"""数量
        :rtype: str
        """
        return self._Quantity

    @Quantity.setter
    def Quantity(self, Quantity):
        self._Quantity = Quantity

    @property
    def Price(self):
        r"""单价
        :rtype: str
        """
        return self._Price

    @Price.setter
    def Price(self, Price):
        self._Price = Price

    @property
    def Total(self):
        r"""金额
        :rtype: str
        """
        return self._Total

    @Total.setter
    def Total(self, Total):
        self._Total = Total

    @property
    def TaxRate(self):
        r"""税率
        :rtype: str
        """
        return self._TaxRate

    @TaxRate.setter
    def TaxRate(self, TaxRate):
        self._TaxRate = TaxRate

    @property
    def Tax(self):
        r"""税额
        :rtype: str
        """
        return self._Tax

    @Tax.setter
    def Tax(self, Tax):
        self._Tax = Tax

    @property
    def DateStart(self):
        r"""通行日期起
        :rtype: str
        """
        return self._DateStart

    @DateStart.setter
    def DateStart(self, DateStart):
        self._DateStart = DateStart

    @property
    def DateEnd(self):
        r"""通行日期止
        :rtype: str
        """
        return self._DateEnd

    @DateEnd.setter
    def DateEnd(self, DateEnd):
        self._DateEnd = DateEnd

    @property
    def LicensePlate(self):
        r"""车牌号
        :rtype: str
        """
        return self._LicensePlate

    @LicensePlate.setter
    def LicensePlate(self, LicensePlate):
        self._LicensePlate = LicensePlate

    @property
    def VehicleType(self):
        r"""车辆类型
        :rtype: str
        """
        return self._VehicleType

    @VehicleType.setter
    def VehicleType(self, VehicleType):
        self._VehicleType = VehicleType

    @property
    def SerialNumber(self):
        r"""序号
        :rtype: str
        """
        return self._SerialNumber

    @SerialNumber.setter
    def SerialNumber(self, SerialNumber):
        self._SerialNumber = SerialNumber


    def _deserialize(self, params):
        self._Name = params.get("Name")
        self._Specification = params.get("Specification")
        self._Unit = params.get("Unit")
        self._Quantity = params.get("Quantity")
        self._Price = params.get("Price")
        self._Total = params.get("Total")
        self._TaxRate = params.get("TaxRate")
        self._Tax = params.get("Tax")
        self._DateStart = params.get("DateStart")
        self._DateEnd = params.get("DateEnd")
        self._LicensePlate = params.get("LicensePlate")
        self._VehicleType = params.get("VehicleType")
        self._SerialNumber = params.get("SerialNumber")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class VatInvoiceOCRRequest(AbstractModel):
    r"""VatInvoiceOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片/PDF的 Base64 值。支持的文件格式：PNG、JPG、JPEG、PDF，暂不支持 GIF 格式。支持的图片/PDF大小：所下载文件经Base64编码后不超过 10M。文件下载时间不超过 3 秒。支持的图片像素：需介于20-10000px之间。输入参数 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片/PDF的 Url 地址。支持的文件格式：PNG、JPG、JPEG、PDF，暂不支持 GIF 格式。支持的图片/PDF大小：所下载文件经 Base64 编码后不超过 10M。文件下载时间不超过 3 秒。支持的图片像素：需介于20-10000px之间。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        :param _IsPdf: 是否开启PDF识别，默认值为false，开启后可同时支持图片和PDF的识别。
        :type IsPdf: bool
        :param _PdfPageNumber: 需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :type PdfPageNumber: int
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._IsPdf = None
        self._PdfPageNumber = None

    @property
    def ImageBase64(self):
        r"""图片/PDF的 Base64 值。支持的文件格式：PNG、JPG、JPEG、PDF，暂不支持 GIF 格式。支持的图片/PDF大小：所下载文件经Base64编码后不超过 10M。文件下载时间不超过 3 秒。支持的图片像素：需介于20-10000px之间。输入参数 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片/PDF的 Url 地址。支持的文件格式：PNG、JPG、JPEG、PDF，暂不支持 GIF 格式。支持的图片/PDF大小：所下载文件经 Base64 编码后不超过 10M。文件下载时间不超过 3 秒。支持的图片像素：需介于20-10000px之间。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def IsPdf(self):
        r"""是否开启PDF识别，默认值为false，开启后可同时支持图片和PDF的识别。
        :rtype: bool
        """
        return self._IsPdf

    @IsPdf.setter
    def IsPdf(self, IsPdf):
        self._IsPdf = IsPdf

    @property
    def PdfPageNumber(self):
        r"""需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :rtype: int
        """
        return self._PdfPageNumber

    @PdfPageNumber.setter
    def PdfPageNumber(self, PdfPageNumber):
        self._PdfPageNumber = PdfPageNumber


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._IsPdf = params.get("IsPdf")
        self._PdfPageNumber = params.get("PdfPageNumber")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class VatInvoiceOCRResponse(AbstractModel):
    r"""VatInvoiceOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _VatInvoiceInfos: 检测到的文本信息，具体内容请点击左侧链接。
        :type VatInvoiceInfos: list of TextVatInvoice
        :param _Items: 明细条目。VatInvoiceInfos中关于明细项的具体条目。
        :type Items: list of VatInvoiceItem
        :param _PdfPageSize: 默认值为0。如果图片为PDF时，返回PDF的总页数。
        :type PdfPageSize: int
        :param _Angle: 图片旋转角度（角度制），文本的水平方向为0°；顺时针为正，逆时针为负。点击查看<a href="https://cloud.tencent.com/document/product/866/45139">如何纠正倾斜文本</a>
        :type Angle: float
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._VatInvoiceInfos = None
        self._Items = None
        self._PdfPageSize = None
        self._Angle = None
        self._RequestId = None

    @property
    def VatInvoiceInfos(self):
        r"""检测到的文本信息，具体内容请点击左侧链接。
        :rtype: list of TextVatInvoice
        """
        return self._VatInvoiceInfos

    @VatInvoiceInfos.setter
    def VatInvoiceInfos(self, VatInvoiceInfos):
        self._VatInvoiceInfos = VatInvoiceInfos

    @property
    def Items(self):
        r"""明细条目。VatInvoiceInfos中关于明细项的具体条目。
        :rtype: list of VatInvoiceItem
        """
        return self._Items

    @Items.setter
    def Items(self, Items):
        self._Items = Items

    @property
    def PdfPageSize(self):
        r"""默认值为0。如果图片为PDF时，返回PDF的总页数。
        :rtype: int
        """
        return self._PdfPageSize

    @PdfPageSize.setter
    def PdfPageSize(self, PdfPageSize):
        self._PdfPageSize = PdfPageSize

    @property
    def Angle(self):
        r"""图片旋转角度（角度制），文本的水平方向为0°；顺时针为正，逆时针为负。点击查看<a href="https://cloud.tencent.com/document/product/866/45139">如何纠正倾斜文本</a>
        :rtype: float
        """
        return self._Angle

    @Angle.setter
    def Angle(self, Angle):
        self._Angle = Angle

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("VatInvoiceInfos") is not None:
            self._VatInvoiceInfos = []
            for item in params.get("VatInvoiceInfos"):
                obj = TextVatInvoice()
                obj._deserialize(item)
                self._VatInvoiceInfos.append(obj)
        if params.get("Items") is not None:
            self._Items = []
            for item in params.get("Items"):
                obj = VatInvoiceItem()
                obj._deserialize(item)
                self._Items.append(obj)
        self._PdfPageSize = params.get("PdfPageSize")
        self._Angle = params.get("Angle")
        self._RequestId = params.get("RequestId")


class VatInvoiceRoll(AbstractModel):
    r"""增值税普通发票(卷票)

    """

    def __init__(self):
        r"""
        :param _Title: 发票名称
        :type Title: str
        :param _Code: 发票代码
        :type Code: str
        :param _Number: 发票号码
        :type Number: str
        :param _NumberConfirm: 机打发票号码
        :type NumberConfirm: str
        :param _Date: 开票日期
        :type Date: str
        :param _CheckCode: 校验码
        :type CheckCode: str
        :param _Seller: 销售方名称
        :type Seller: str
        :param _SellerTaxID: 销售方纳税人识别号
        :type SellerTaxID: str
        :param _Buyer: 购买方名称
        :type Buyer: str
        :param _BuyerTaxID: 购买方纳税人识别号
        :type BuyerTaxID: str
        :param _Category: 种类
        :type Category: str
        :param _Total: 价税合计（小写）
        :type Total: str
        :param _TotalCn: 价税合计（大写）
        :type TotalCn: str
        :param _Kind: 发票消费类型
        :type Kind: str
        :param _Province: 省
        :type Province: str
        :param _City: 市
        :type City: str
        :param _CompanySealMark: 是否有公司印章（0：没有，1：有）
        :type CompanySealMark: int
        :param _QRCodeMark: 是否存在二维码（1：有，0：无）
        :type QRCodeMark: int
        :param _ServiceName: 服务类型
        :type ServiceName: str
        :param _CompanySealContent: 公司印章内容
        :type CompanySealContent: str
        :param _TaxSealContent: 税务局章内容
        :type TaxSealContent: str
        :param _VatRollItems: 条目
        :type VatRollItems: list of VatRollItem
        """
        self._Title = None
        self._Code = None
        self._Number = None
        self._NumberConfirm = None
        self._Date = None
        self._CheckCode = None
        self._Seller = None
        self._SellerTaxID = None
        self._Buyer = None
        self._BuyerTaxID = None
        self._Category = None
        self._Total = None
        self._TotalCn = None
        self._Kind = None
        self._Province = None
        self._City = None
        self._CompanySealMark = None
        self._QRCodeMark = None
        self._ServiceName = None
        self._CompanySealContent = None
        self._TaxSealContent = None
        self._VatRollItems = None

    @property
    def Title(self):
        r"""发票名称
        :rtype: str
        """
        return self._Title

    @Title.setter
    def Title(self, Title):
        self._Title = Title

    @property
    def Code(self):
        r"""发票代码
        :rtype: str
        """
        return self._Code

    @Code.setter
    def Code(self, Code):
        self._Code = Code

    @property
    def Number(self):
        r"""发票号码
        :rtype: str
        """
        return self._Number

    @Number.setter
    def Number(self, Number):
        self._Number = Number

    @property
    def NumberConfirm(self):
        r"""机打发票号码
        :rtype: str
        """
        return self._NumberConfirm

    @NumberConfirm.setter
    def NumberConfirm(self, NumberConfirm):
        self._NumberConfirm = NumberConfirm

    @property
    def Date(self):
        r"""开票日期
        :rtype: str
        """
        return self._Date

    @Date.setter
    def Date(self, Date):
        self._Date = Date

    @property
    def CheckCode(self):
        r"""校验码
        :rtype: str
        """
        return self._CheckCode

    @CheckCode.setter
    def CheckCode(self, CheckCode):
        self._CheckCode = CheckCode

    @property
    def Seller(self):
        r"""销售方名称
        :rtype: str
        """
        return self._Seller

    @Seller.setter
    def Seller(self, Seller):
        self._Seller = Seller

    @property
    def SellerTaxID(self):
        r"""销售方纳税人识别号
        :rtype: str
        """
        return self._SellerTaxID

    @SellerTaxID.setter
    def SellerTaxID(self, SellerTaxID):
        self._SellerTaxID = SellerTaxID

    @property
    def Buyer(self):
        r"""购买方名称
        :rtype: str
        """
        return self._Buyer

    @Buyer.setter
    def Buyer(self, Buyer):
        self._Buyer = Buyer

    @property
    def BuyerTaxID(self):
        r"""购买方纳税人识别号
        :rtype: str
        """
        return self._BuyerTaxID

    @BuyerTaxID.setter
    def BuyerTaxID(self, BuyerTaxID):
        self._BuyerTaxID = BuyerTaxID

    @property
    def Category(self):
        r"""种类
        :rtype: str
        """
        return self._Category

    @Category.setter
    def Category(self, Category):
        self._Category = Category

    @property
    def Total(self):
        r"""价税合计（小写）
        :rtype: str
        """
        return self._Total

    @Total.setter
    def Total(self, Total):
        self._Total = Total

    @property
    def TotalCn(self):
        r"""价税合计（大写）
        :rtype: str
        """
        return self._TotalCn

    @TotalCn.setter
    def TotalCn(self, TotalCn):
        self._TotalCn = TotalCn

    @property
    def Kind(self):
        r"""发票消费类型
        :rtype: str
        """
        return self._Kind

    @Kind.setter
    def Kind(self, Kind):
        self._Kind = Kind

    @property
    def Province(self):
        r"""省
        :rtype: str
        """
        return self._Province

    @Province.setter
    def Province(self, Province):
        self._Province = Province

    @property
    def City(self):
        r"""市
        :rtype: str
        """
        return self._City

    @City.setter
    def City(self, City):
        self._City = City

    @property
    def CompanySealMark(self):
        r"""是否有公司印章（0：没有，1：有）
        :rtype: int
        """
        return self._CompanySealMark

    @CompanySealMark.setter
    def CompanySealMark(self, CompanySealMark):
        self._CompanySealMark = CompanySealMark

    @property
    def QRCodeMark(self):
        r"""是否存在二维码（1：有，0：无）
        :rtype: int
        """
        return self._QRCodeMark

    @QRCodeMark.setter
    def QRCodeMark(self, QRCodeMark):
        self._QRCodeMark = QRCodeMark

    @property
    def ServiceName(self):
        r"""服务类型
        :rtype: str
        """
        return self._ServiceName

    @ServiceName.setter
    def ServiceName(self, ServiceName):
        self._ServiceName = ServiceName

    @property
    def CompanySealContent(self):
        r"""公司印章内容
        :rtype: str
        """
        return self._CompanySealContent

    @CompanySealContent.setter
    def CompanySealContent(self, CompanySealContent):
        self._CompanySealContent = CompanySealContent

    @property
    def TaxSealContent(self):
        r"""税务局章内容
        :rtype: str
        """
        return self._TaxSealContent

    @TaxSealContent.setter
    def TaxSealContent(self, TaxSealContent):
        self._TaxSealContent = TaxSealContent

    @property
    def VatRollItems(self):
        r"""条目
        :rtype: list of VatRollItem
        """
        return self._VatRollItems

    @VatRollItems.setter
    def VatRollItems(self, VatRollItems):
        self._VatRollItems = VatRollItems


    def _deserialize(self, params):
        self._Title = params.get("Title")
        self._Code = params.get("Code")
        self._Number = params.get("Number")
        self._NumberConfirm = params.get("NumberConfirm")
        self._Date = params.get("Date")
        self._CheckCode = params.get("CheckCode")
        self._Seller = params.get("Seller")
        self._SellerTaxID = params.get("SellerTaxID")
        self._Buyer = params.get("Buyer")
        self._BuyerTaxID = params.get("BuyerTaxID")
        self._Category = params.get("Category")
        self._Total = params.get("Total")
        self._TotalCn = params.get("TotalCn")
        self._Kind = params.get("Kind")
        self._Province = params.get("Province")
        self._City = params.get("City")
        self._CompanySealMark = params.get("CompanySealMark")
        self._QRCodeMark = params.get("QRCodeMark")
        self._ServiceName = params.get("ServiceName")
        self._CompanySealContent = params.get("CompanySealContent")
        self._TaxSealContent = params.get("TaxSealContent")
        if params.get("VatRollItems") is not None:
            self._VatRollItems = []
            for item in params.get("VatRollItems"):
                obj = VatRollItem()
                obj._deserialize(item)
                self._VatRollItems.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class VatInvoiceUserInfo(AbstractModel):
    r"""发票人员信息

    """

    def __init__(self):
        r"""
        :param _Name: 名称
        :type Name: str
        :param _TaxId: 纳税人识别号
        :type TaxId: str
        :param _AddrTel: 地 址、电 话
        :type AddrTel: str
        :param _FinancialAccount: 开户行及账号
        :type FinancialAccount: str
        """
        self._Name = None
        self._TaxId = None
        self._AddrTel = None
        self._FinancialAccount = None

    @property
    def Name(self):
        r"""名称
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def TaxId(self):
        r"""纳税人识别号
        :rtype: str
        """
        return self._TaxId

    @TaxId.setter
    def TaxId(self, TaxId):
        self._TaxId = TaxId

    @property
    def AddrTel(self):
        r"""地 址、电 话
        :rtype: str
        """
        return self._AddrTel

    @AddrTel.setter
    def AddrTel(self, AddrTel):
        self._AddrTel = AddrTel

    @property
    def FinancialAccount(self):
        r"""开户行及账号
        :rtype: str
        """
        return self._FinancialAccount

    @FinancialAccount.setter
    def FinancialAccount(self, FinancialAccount):
        self._FinancialAccount = FinancialAccount


    def _deserialize(self, params):
        self._Name = params.get("Name")
        self._TaxId = params.get("TaxId")
        self._AddrTel = params.get("AddrTel")
        self._FinancialAccount = params.get("FinancialAccount")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class VatInvoiceVerifyNewRequest(AbstractModel):
    r"""VatInvoiceVerifyNew请求参数结构体

    """

    def __init__(self):
        r"""
        :param _InvoiceNo: 发票号码，8位、20位（全电票）
        :type InvoiceNo: str
        :param _InvoiceDate: 开票日期（不支持当天发票查询，支持五年以内开具的发票），格式：“YYYY-MM-DD”，如：2019-12-20。
        :type InvoiceDate: str
        :param _InvoiceCode: 发票代码（10或12 位），全电发票为空。查验超过5次后当日无法再查。
        :type InvoiceCode: str
        :param _InvoiceKind: 票种类型 01:增值税专用发票， 02:货运运输业增值税专用发 票， 03:机动车销售统一发票， 04:增值税普通发票， 08:增值税电子专用发票(含全电)， 10:增值税电子普通发票(含全电)， 11:增值税普通发票(卷式)， 14:增值税电子(通行费)发 票， 15:二手车销售统一发票，16:财务发票， 32:深圳区块链发票(云南区块链因业务调整现已下线)。
        :type InvoiceKind: str
        :param _CheckCode: 校验码后 6 位，增值税普通发票、增值税电子普通发票、增值税普通发票(卷式)、增值税电子普通发票(通行费)、全电纸质发票（增值税普通发票）、财政票据时必填;
区块链为 5 位
        :type CheckCode: str
        :param _Amount: 不含税金额，增值税专用发票、增值税电子专用发票、机动车销售统一发票、二手车销售统一发票、区块链发票、财政发票时必填; 全电发票为价税合计(含税金额)
        :type Amount: str
        :param _RegionCode: 地区编码，通用机打电子发票时必填。
广东:4400，浙江:3300
        :type RegionCode: str
        :param _SellerTaxCode: 销方税号，通用机打电子发票必填，区块链发票时必填
        :type SellerTaxCode: str
        :param _EnableCommonElectronic: 是否开启通用机打电子发票，默认为关闭。
        :type EnableCommonElectronic: bool
        :param _EnableTodayInvoice: 是否允许查验当日发票，默认值为false。请注意，发票从开具到录入税局需要一定的时间来更新和验证发票信息，打开后仅支持查验已成功录入到税局中的当日发票。
        :type EnableTodayInvoice: bool
        """
        self._InvoiceNo = None
        self._InvoiceDate = None
        self._InvoiceCode = None
        self._InvoiceKind = None
        self._CheckCode = None
        self._Amount = None
        self._RegionCode = None
        self._SellerTaxCode = None
        self._EnableCommonElectronic = None
        self._EnableTodayInvoice = None

    @property
    def InvoiceNo(self):
        r"""发票号码，8位、20位（全电票）
        :rtype: str
        """
        return self._InvoiceNo

    @InvoiceNo.setter
    def InvoiceNo(self, InvoiceNo):
        self._InvoiceNo = InvoiceNo

    @property
    def InvoiceDate(self):
        r"""开票日期（不支持当天发票查询，支持五年以内开具的发票），格式：“YYYY-MM-DD”，如：2019-12-20。
        :rtype: str
        """
        return self._InvoiceDate

    @InvoiceDate.setter
    def InvoiceDate(self, InvoiceDate):
        self._InvoiceDate = InvoiceDate

    @property
    def InvoiceCode(self):
        r"""发票代码（10或12 位），全电发票为空。查验超过5次后当日无法再查。
        :rtype: str
        """
        return self._InvoiceCode

    @InvoiceCode.setter
    def InvoiceCode(self, InvoiceCode):
        self._InvoiceCode = InvoiceCode

    @property
    def InvoiceKind(self):
        r"""票种类型 01:增值税专用发票， 02:货运运输业增值税专用发 票， 03:机动车销售统一发票， 04:增值税普通发票， 08:增值税电子专用发票(含全电)， 10:增值税电子普通发票(含全电)， 11:增值税普通发票(卷式)， 14:增值税电子(通行费)发 票， 15:二手车销售统一发票，16:财务发票， 32:深圳区块链发票(云南区块链因业务调整现已下线)。
        :rtype: str
        """
        return self._InvoiceKind

    @InvoiceKind.setter
    def InvoiceKind(self, InvoiceKind):
        self._InvoiceKind = InvoiceKind

    @property
    def CheckCode(self):
        r"""校验码后 6 位，增值税普通发票、增值税电子普通发票、增值税普通发票(卷式)、增值税电子普通发票(通行费)、全电纸质发票（增值税普通发票）、财政票据时必填;
区块链为 5 位
        :rtype: str
        """
        return self._CheckCode

    @CheckCode.setter
    def CheckCode(self, CheckCode):
        self._CheckCode = CheckCode

    @property
    def Amount(self):
        r"""不含税金额，增值税专用发票、增值税电子专用发票、机动车销售统一发票、二手车销售统一发票、区块链发票、财政发票时必填; 全电发票为价税合计(含税金额)
        :rtype: str
        """
        return self._Amount

    @Amount.setter
    def Amount(self, Amount):
        self._Amount = Amount

    @property
    def RegionCode(self):
        r"""地区编码，通用机打电子发票时必填。
广东:4400，浙江:3300
        :rtype: str
        """
        return self._RegionCode

    @RegionCode.setter
    def RegionCode(self, RegionCode):
        self._RegionCode = RegionCode

    @property
    def SellerTaxCode(self):
        r"""销方税号，通用机打电子发票必填，区块链发票时必填
        :rtype: str
        """
        return self._SellerTaxCode

    @SellerTaxCode.setter
    def SellerTaxCode(self, SellerTaxCode):
        self._SellerTaxCode = SellerTaxCode

    @property
    def EnableCommonElectronic(self):
        r"""是否开启通用机打电子发票，默认为关闭。
        :rtype: bool
        """
        return self._EnableCommonElectronic

    @EnableCommonElectronic.setter
    def EnableCommonElectronic(self, EnableCommonElectronic):
        self._EnableCommonElectronic = EnableCommonElectronic

    @property
    def EnableTodayInvoice(self):
        r"""是否允许查验当日发票，默认值为false。请注意，发票从开具到录入税局需要一定的时间来更新和验证发票信息，打开后仅支持查验已成功录入到税局中的当日发票。
        :rtype: bool
        """
        return self._EnableTodayInvoice

    @EnableTodayInvoice.setter
    def EnableTodayInvoice(self, EnableTodayInvoice):
        self._EnableTodayInvoice = EnableTodayInvoice


    def _deserialize(self, params):
        self._InvoiceNo = params.get("InvoiceNo")
        self._InvoiceDate = params.get("InvoiceDate")
        self._InvoiceCode = params.get("InvoiceCode")
        self._InvoiceKind = params.get("InvoiceKind")
        self._CheckCode = params.get("CheckCode")
        self._Amount = params.get("Amount")
        self._RegionCode = params.get("RegionCode")
        self._SellerTaxCode = params.get("SellerTaxCode")
        self._EnableCommonElectronic = params.get("EnableCommonElectronic")
        self._EnableTodayInvoice = params.get("EnableTodayInvoice")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class VatInvoiceVerifyNewResponse(AbstractModel):
    r"""VatInvoiceVerifyNew返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Invoice: 增值税发票、购车发票、全电发票的基础要素字段信息。
        :type Invoice: :class:`tencentcloud.ocr.v20181119.models.VatInvoice`
        :param _VehicleInvoiceInfo: 机动车销售统一发票详细字段信息。
        :type VehicleInvoiceInfo: :class:`tencentcloud.ocr.v20181119.models.VehicleInvoiceInfo`
        :param _UsedVehicleInvoiceInfo: 二手车销售统一发票详细字段信息。
        :type UsedVehicleInvoiceInfo: :class:`tencentcloud.ocr.v20181119.models.UsedVehicleInvoiceInfo`
        :param _PassInvoiceInfoList: 通行费发票详细字段信息。
        :type PassInvoiceInfoList: list of PassInvoiceInfo
        :param _ElectronicTrainTicket: 全电发票（铁路电子客票）详细字段信息。

        :type ElectronicTrainTicket: :class:`tencentcloud.ocr.v20181119.models.ElectronicTrainTicket`
        :param _ElectronicAirTransport: 全电发票（航空运输电子客票行程单）详细字段信息。
        :type ElectronicAirTransport: :class:`tencentcloud.ocr.v20181119.models.ElectronicAirTransport`
        :param _FinancialBill: 财政发票详细字段信息
        :type FinancialBill: :class:`tencentcloud.ocr.v20181119.models.FinancialBill`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Invoice = None
        self._VehicleInvoiceInfo = None
        self._UsedVehicleInvoiceInfo = None
        self._PassInvoiceInfoList = None
        self._ElectronicTrainTicket = None
        self._ElectronicAirTransport = None
        self._FinancialBill = None
        self._RequestId = None

    @property
    def Invoice(self):
        r"""增值税发票、购车发票、全电发票的基础要素字段信息。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.VatInvoice`
        """
        return self._Invoice

    @Invoice.setter
    def Invoice(self, Invoice):
        self._Invoice = Invoice

    @property
    def VehicleInvoiceInfo(self):
        r"""机动车销售统一发票详细字段信息。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.VehicleInvoiceInfo`
        """
        return self._VehicleInvoiceInfo

    @VehicleInvoiceInfo.setter
    def VehicleInvoiceInfo(self, VehicleInvoiceInfo):
        self._VehicleInvoiceInfo = VehicleInvoiceInfo

    @property
    def UsedVehicleInvoiceInfo(self):
        r"""二手车销售统一发票详细字段信息。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.UsedVehicleInvoiceInfo`
        """
        return self._UsedVehicleInvoiceInfo

    @UsedVehicleInvoiceInfo.setter
    def UsedVehicleInvoiceInfo(self, UsedVehicleInvoiceInfo):
        self._UsedVehicleInvoiceInfo = UsedVehicleInvoiceInfo

    @property
    def PassInvoiceInfoList(self):
        r"""通行费发票详细字段信息。
        :rtype: list of PassInvoiceInfo
        """
        return self._PassInvoiceInfoList

    @PassInvoiceInfoList.setter
    def PassInvoiceInfoList(self, PassInvoiceInfoList):
        self._PassInvoiceInfoList = PassInvoiceInfoList

    @property
    def ElectronicTrainTicket(self):
        r"""全电发票（铁路电子客票）详细字段信息。

        :rtype: :class:`tencentcloud.ocr.v20181119.models.ElectronicTrainTicket`
        """
        return self._ElectronicTrainTicket

    @ElectronicTrainTicket.setter
    def ElectronicTrainTicket(self, ElectronicTrainTicket):
        self._ElectronicTrainTicket = ElectronicTrainTicket

    @property
    def ElectronicAirTransport(self):
        r"""全电发票（航空运输电子客票行程单）详细字段信息。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.ElectronicAirTransport`
        """
        return self._ElectronicAirTransport

    @ElectronicAirTransport.setter
    def ElectronicAirTransport(self, ElectronicAirTransport):
        self._ElectronicAirTransport = ElectronicAirTransport

    @property
    def FinancialBill(self):
        r"""财政发票详细字段信息
        :rtype: :class:`tencentcloud.ocr.v20181119.models.FinancialBill`
        """
        return self._FinancialBill

    @FinancialBill.setter
    def FinancialBill(self, FinancialBill):
        self._FinancialBill = FinancialBill

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Invoice") is not None:
            self._Invoice = VatInvoice()
            self._Invoice._deserialize(params.get("Invoice"))
        if params.get("VehicleInvoiceInfo") is not None:
            self._VehicleInvoiceInfo = VehicleInvoiceInfo()
            self._VehicleInvoiceInfo._deserialize(params.get("VehicleInvoiceInfo"))
        if params.get("UsedVehicleInvoiceInfo") is not None:
            self._UsedVehicleInvoiceInfo = UsedVehicleInvoiceInfo()
            self._UsedVehicleInvoiceInfo._deserialize(params.get("UsedVehicleInvoiceInfo"))
        if params.get("PassInvoiceInfoList") is not None:
            self._PassInvoiceInfoList = []
            for item in params.get("PassInvoiceInfoList"):
                obj = PassInvoiceInfo()
                obj._deserialize(item)
                self._PassInvoiceInfoList.append(obj)
        if params.get("ElectronicTrainTicket") is not None:
            self._ElectronicTrainTicket = ElectronicTrainTicket()
            self._ElectronicTrainTicket._deserialize(params.get("ElectronicTrainTicket"))
        if params.get("ElectronicAirTransport") is not None:
            self._ElectronicAirTransport = ElectronicAirTransport()
            self._ElectronicAirTransport._deserialize(params.get("ElectronicAirTransport"))
        if params.get("FinancialBill") is not None:
            self._FinancialBill = FinancialBill()
            self._FinancialBill._deserialize(params.get("FinancialBill"))
        self._RequestId = params.get("RequestId")


class VatRollItem(AbstractModel):
    r"""增值税普通发票（卷票）条目

    """

    def __init__(self):
        r"""
        :param _Name: 项目名称
        :type Name: str
        :param _Quantity: 数量
        :type Quantity: str
        :param _Price: 单价
        :type Price: str
        :param _Total: 金额
        :type Total: str
        """
        self._Name = None
        self._Quantity = None
        self._Price = None
        self._Total = None

    @property
    def Name(self):
        r"""项目名称
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Quantity(self):
        r"""数量
        :rtype: str
        """
        return self._Quantity

    @Quantity.setter
    def Quantity(self, Quantity):
        self._Quantity = Quantity

    @property
    def Price(self):
        r"""单价
        :rtype: str
        """
        return self._Price

    @Price.setter
    def Price(self, Price):
        self._Price = Price

    @property
    def Total(self):
        r"""金额
        :rtype: str
        """
        return self._Total

    @Total.setter
    def Total(self, Total):
        self._Total = Total


    def _deserialize(self, params):
        self._Name = params.get("Name")
        self._Quantity = params.get("Quantity")
        self._Price = params.get("Price")
        self._Total = params.get("Total")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class VehicleInvoiceInfo(AbstractModel):
    r"""机动车销售统一发票信息

    """

    def __init__(self):
        r"""
        :param _CarType: 车辆类型
        :type CarType: str
        :param _PlateModel: 厂牌型号
        :type PlateModel: str
        :param _ProduceAddress: 产地
        :type ProduceAddress: str
        :param _CertificateNo: 合格证号
        :type CertificateNo: str
        :param _ImportNo: 进口证明书号
        :type ImportNo: str
        :param _VinNo: LSVCA2NP9HN0xxxxx
        :type VinNo: str
        :param _PayTaxesNo: 完税证书号
        :type PayTaxesNo: str
        :param _Tonnage: 吨位
        :type Tonnage: str
        :param _LimitCount: 限乘人数
        :type LimitCount: str
        :param _EngineNo: 发动机号码
        :type EngineNo: str
        :param _BizCheckFormNo: 商检单号
        :type BizCheckFormNo: str
        :param _TaxtationOrgCode: 主管税务机关代码
        :type TaxtationOrgCode: str
        :param _TaxtationOrgName: 主管税务机关名称
        :type TaxtationOrgName: str
        :param _MotorTaxRate: 税率
        :type MotorTaxRate: str
        :param _MotorBankName: 银行账号
        :type MotorBankName: str
        :param _MotorBankAccount: 开户行
        :type MotorBankAccount: str
        :param _SellerAddress: 销售地址
        :type SellerAddress: str
        :param _SellerTel: 销售电话
        :type SellerTel: str
        :param _BuyerNo: 购方身份证
        :type BuyerNo: str
        """
        self._CarType = None
        self._PlateModel = None
        self._ProduceAddress = None
        self._CertificateNo = None
        self._ImportNo = None
        self._VinNo = None
        self._PayTaxesNo = None
        self._Tonnage = None
        self._LimitCount = None
        self._EngineNo = None
        self._BizCheckFormNo = None
        self._TaxtationOrgCode = None
        self._TaxtationOrgName = None
        self._MotorTaxRate = None
        self._MotorBankName = None
        self._MotorBankAccount = None
        self._SellerAddress = None
        self._SellerTel = None
        self._BuyerNo = None

    @property
    def CarType(self):
        r"""车辆类型
        :rtype: str
        """
        return self._CarType

    @CarType.setter
    def CarType(self, CarType):
        self._CarType = CarType

    @property
    def PlateModel(self):
        r"""厂牌型号
        :rtype: str
        """
        return self._PlateModel

    @PlateModel.setter
    def PlateModel(self, PlateModel):
        self._PlateModel = PlateModel

    @property
    def ProduceAddress(self):
        r"""产地
        :rtype: str
        """
        return self._ProduceAddress

    @ProduceAddress.setter
    def ProduceAddress(self, ProduceAddress):
        self._ProduceAddress = ProduceAddress

    @property
    def CertificateNo(self):
        r"""合格证号
        :rtype: str
        """
        return self._CertificateNo

    @CertificateNo.setter
    def CertificateNo(self, CertificateNo):
        self._CertificateNo = CertificateNo

    @property
    def ImportNo(self):
        r"""进口证明书号
        :rtype: str
        """
        return self._ImportNo

    @ImportNo.setter
    def ImportNo(self, ImportNo):
        self._ImportNo = ImportNo

    @property
    def VinNo(self):
        r"""LSVCA2NP9HN0xxxxx
        :rtype: str
        """
        return self._VinNo

    @VinNo.setter
    def VinNo(self, VinNo):
        self._VinNo = VinNo

    @property
    def PayTaxesNo(self):
        r"""完税证书号
        :rtype: str
        """
        return self._PayTaxesNo

    @PayTaxesNo.setter
    def PayTaxesNo(self, PayTaxesNo):
        self._PayTaxesNo = PayTaxesNo

    @property
    def Tonnage(self):
        r"""吨位
        :rtype: str
        """
        return self._Tonnage

    @Tonnage.setter
    def Tonnage(self, Tonnage):
        self._Tonnage = Tonnage

    @property
    def LimitCount(self):
        r"""限乘人数
        :rtype: str
        """
        return self._LimitCount

    @LimitCount.setter
    def LimitCount(self, LimitCount):
        self._LimitCount = LimitCount

    @property
    def EngineNo(self):
        r"""发动机号码
        :rtype: str
        """
        return self._EngineNo

    @EngineNo.setter
    def EngineNo(self, EngineNo):
        self._EngineNo = EngineNo

    @property
    def BizCheckFormNo(self):
        r"""商检单号
        :rtype: str
        """
        return self._BizCheckFormNo

    @BizCheckFormNo.setter
    def BizCheckFormNo(self, BizCheckFormNo):
        self._BizCheckFormNo = BizCheckFormNo

    @property
    def TaxtationOrgCode(self):
        r"""主管税务机关代码
        :rtype: str
        """
        return self._TaxtationOrgCode

    @TaxtationOrgCode.setter
    def TaxtationOrgCode(self, TaxtationOrgCode):
        self._TaxtationOrgCode = TaxtationOrgCode

    @property
    def TaxtationOrgName(self):
        r"""主管税务机关名称
        :rtype: str
        """
        return self._TaxtationOrgName

    @TaxtationOrgName.setter
    def TaxtationOrgName(self, TaxtationOrgName):
        self._TaxtationOrgName = TaxtationOrgName

    @property
    def MotorTaxRate(self):
        r"""税率
        :rtype: str
        """
        return self._MotorTaxRate

    @MotorTaxRate.setter
    def MotorTaxRate(self, MotorTaxRate):
        self._MotorTaxRate = MotorTaxRate

    @property
    def MotorBankName(self):
        r"""银行账号
        :rtype: str
        """
        return self._MotorBankName

    @MotorBankName.setter
    def MotorBankName(self, MotorBankName):
        self._MotorBankName = MotorBankName

    @property
    def MotorBankAccount(self):
        r"""开户行
        :rtype: str
        """
        return self._MotorBankAccount

    @MotorBankAccount.setter
    def MotorBankAccount(self, MotorBankAccount):
        self._MotorBankAccount = MotorBankAccount

    @property
    def SellerAddress(self):
        r"""销售地址
        :rtype: str
        """
        return self._SellerAddress

    @SellerAddress.setter
    def SellerAddress(self, SellerAddress):
        self._SellerAddress = SellerAddress

    @property
    def SellerTel(self):
        r"""销售电话
        :rtype: str
        """
        return self._SellerTel

    @SellerTel.setter
    def SellerTel(self, SellerTel):
        self._SellerTel = SellerTel

    @property
    def BuyerNo(self):
        r"""购方身份证
        :rtype: str
        """
        return self._BuyerNo

    @BuyerNo.setter
    def BuyerNo(self, BuyerNo):
        self._BuyerNo = BuyerNo


    def _deserialize(self, params):
        self._CarType = params.get("CarType")
        self._PlateModel = params.get("PlateModel")
        self._ProduceAddress = params.get("ProduceAddress")
        self._CertificateNo = params.get("CertificateNo")
        self._ImportNo = params.get("ImportNo")
        self._VinNo = params.get("VinNo")
        self._PayTaxesNo = params.get("PayTaxesNo")
        self._Tonnage = params.get("Tonnage")
        self._LimitCount = params.get("LimitCount")
        self._EngineNo = params.get("EngineNo")
        self._BizCheckFormNo = params.get("BizCheckFormNo")
        self._TaxtationOrgCode = params.get("TaxtationOrgCode")
        self._TaxtationOrgName = params.get("TaxtationOrgName")
        self._MotorTaxRate = params.get("MotorTaxRate")
        self._MotorBankName = params.get("MotorBankName")
        self._MotorBankAccount = params.get("MotorBankAccount")
        self._SellerAddress = params.get("SellerAddress")
        self._SellerTel = params.get("SellerTel")
        self._BuyerNo = params.get("BuyerNo")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class VehicleLicenseOCRRequest(AbstractModel):
    r"""VehicleLicenseOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。要求图片经Base64编码后不超过 7M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。
图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。要求图片经Base64编码后不超过 7M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。图片下载时间不超过 3 秒。
建议图片存储于腾讯云，可保障更高的下载速度和稳定性。
        :type ImageUrl: str
        :param _CardSide: FRONT 为行驶证主页正面（有红色印章的一面），
BACK 为行驶证副页正面（有号码号牌的一面），
DOUBLE 为行驶证主页正面和副页正面。
默认值为：FRONT。
        :type CardSide: str
        :param _TractorCardSide: FRONT为行驶证主页正面（有红色印章的一面），BACK 为拖拉机行驶证副页正面识别
        :type TractorCardSide: str
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._CardSide = None
        self._TractorCardSide = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。要求图片经Base64编码后不超过 7M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。
图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。要求图片经Base64编码后不超过 7M，分辨率建议500*800以上，支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。图片下载时间不超过 3 秒。
建议图片存储于腾讯云，可保障更高的下载速度和稳定性。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def CardSide(self):
        r"""FRONT 为行驶证主页正面（有红色印章的一面），
BACK 为行驶证副页正面（有号码号牌的一面），
DOUBLE 为行驶证主页正面和副页正面。
默认值为：FRONT。
        :rtype: str
        """
        return self._CardSide

    @CardSide.setter
    def CardSide(self, CardSide):
        self._CardSide = CardSide

    @property
    def TractorCardSide(self):
        r"""FRONT为行驶证主页正面（有红色印章的一面），BACK 为拖拉机行驶证副页正面识别
        :rtype: str
        """
        return self._TractorCardSide

    @TractorCardSide.setter
    def TractorCardSide(self, TractorCardSide):
        self._TractorCardSide = TractorCardSide


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._CardSide = params.get("CardSide")
        self._TractorCardSide = params.get("TractorCardSide")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class VehicleLicenseOCRResponse(AbstractModel):
    r"""VehicleLicenseOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _FrontInfo: 行驶证主页正面的识别结果，CardSide 为 FRONT。
注意：此字段可能返回 null，表示取不到有效值。
        :type FrontInfo: :class:`tencentcloud.ocr.v20181119.models.TextVehicleFront`
        :param _BackInfo: 行驶证副页正面的识别结果，CardSide 为 BACK。
注意：此字段可能返回 null，表示取不到有效值。
        :type BackInfo: :class:`tencentcloud.ocr.v20181119.models.TextVehicleBack`
        :param _RecognizeWarnCode: Code 告警码列表和释义：
-9102  复印件告警
-9103  翻拍件告警
-9104  反光告警
-9105  模糊告警
-9106  边框不完整告警
注：告警码可以同时存在多个
        :type RecognizeWarnCode: list of int
        :param _RecognizeWarnMsg: 告警码说明：
WARN_DRIVER_LICENSE_COPY_CARD 复印件告警
WARN_DRIVER_LICENSE_SCREENED_CARD 翻拍件告警
WARN_DRIVER_LICENSE_REFLECTION 反光告警
WARN_DRIVER_LICENSE_BLUR 模糊告警
WARN_DRIVER_LICENSE_BORDER_INCOMPLETE 边框不完整告警
注：告警信息可以同时存在多个
        :type RecognizeWarnMsg: list of str
        :param _VehicleLicenseType: 行驶证类型 电子行驶证：Electronic 普通行驶证：Normal
        :type VehicleLicenseType: str
        :param _TractorBackInfo: 拖拉机行驶证副页正面的识别结果，CardSide 为 BACK。
注意：此字段可能返回 null，表示取不到有效值。
        :type TractorBackInfo: :class:`tencentcloud.ocr.v20181119.models.TextTractorVehicleBack`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._FrontInfo = None
        self._BackInfo = None
        self._RecognizeWarnCode = None
        self._RecognizeWarnMsg = None
        self._VehicleLicenseType = None
        self._TractorBackInfo = None
        self._RequestId = None

    @property
    def FrontInfo(self):
        r"""行驶证主页正面的识别结果，CardSide 为 FRONT。
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.TextVehicleFront`
        """
        return self._FrontInfo

    @FrontInfo.setter
    def FrontInfo(self, FrontInfo):
        self._FrontInfo = FrontInfo

    @property
    def BackInfo(self):
        r"""行驶证副页正面的识别结果，CardSide 为 BACK。
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.TextVehicleBack`
        """
        return self._BackInfo

    @BackInfo.setter
    def BackInfo(self, BackInfo):
        self._BackInfo = BackInfo

    @property
    def RecognizeWarnCode(self):
        r"""Code 告警码列表和释义：
-9102  复印件告警
-9103  翻拍件告警
-9104  反光告警
-9105  模糊告警
-9106  边框不完整告警
注：告警码可以同时存在多个
        :rtype: list of int
        """
        return self._RecognizeWarnCode

    @RecognizeWarnCode.setter
    def RecognizeWarnCode(self, RecognizeWarnCode):
        self._RecognizeWarnCode = RecognizeWarnCode

    @property
    def RecognizeWarnMsg(self):
        r"""告警码说明：
WARN_DRIVER_LICENSE_COPY_CARD 复印件告警
WARN_DRIVER_LICENSE_SCREENED_CARD 翻拍件告警
WARN_DRIVER_LICENSE_REFLECTION 反光告警
WARN_DRIVER_LICENSE_BLUR 模糊告警
WARN_DRIVER_LICENSE_BORDER_INCOMPLETE 边框不完整告警
注：告警信息可以同时存在多个
        :rtype: list of str
        """
        return self._RecognizeWarnMsg

    @RecognizeWarnMsg.setter
    def RecognizeWarnMsg(self, RecognizeWarnMsg):
        self._RecognizeWarnMsg = RecognizeWarnMsg

    @property
    def VehicleLicenseType(self):
        r"""行驶证类型 电子行驶证：Electronic 普通行驶证：Normal
        :rtype: str
        """
        return self._VehicleLicenseType

    @VehicleLicenseType.setter
    def VehicleLicenseType(self, VehicleLicenseType):
        self._VehicleLicenseType = VehicleLicenseType

    @property
    def TractorBackInfo(self):
        r"""拖拉机行驶证副页正面的识别结果，CardSide 为 BACK。
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.TextTractorVehicleBack`
        """
        return self._TractorBackInfo

    @TractorBackInfo.setter
    def TractorBackInfo(self, TractorBackInfo):
        self._TractorBackInfo = TractorBackInfo

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("FrontInfo") is not None:
            self._FrontInfo = TextVehicleFront()
            self._FrontInfo._deserialize(params.get("FrontInfo"))
        if params.get("BackInfo") is not None:
            self._BackInfo = TextVehicleBack()
            self._BackInfo._deserialize(params.get("BackInfo"))
        self._RecognizeWarnCode = params.get("RecognizeWarnCode")
        self._RecognizeWarnMsg = params.get("RecognizeWarnMsg")
        self._VehicleLicenseType = params.get("VehicleLicenseType")
        if params.get("TractorBackInfo") is not None:
            self._TractorBackInfo = TextTractorVehicleBack()
            self._TractorBackInfo._deserialize(params.get("TractorBackInfo"))
        self._RequestId = params.get("RequestId")


class VehicleRegCertInfo(AbstractModel):
    r"""机动车登记证书识别结果

    """

    def __init__(self):
        r"""
        :param _Name: <p>识别出的字段名称(关键字)，支持以下字段：<br>【注册登记信息栏/摘要信息栏、转移登记摘要信息栏】<br>车辆型号、车辆识别代号/车架号、发动机号、制造厂名称、轴距、轮胎数、总质量、外廓尺寸、轴数、车辆出厂日期、发证日期、使用性质、车辆获得方式、车辆类型、国产/进口、燃料种类、车身颜色、发动机型号、车辆品牌、编号、转向形式、<br>机动车所有人1、身份证明名称1、号码1、登记机关1、登记日期1<br>机动车所有人2、身份证明名称2、号码2、登记机关2、登记日期2<br>机动车所有人3、身份证明名称3、号码3、登记机关3、登记日期3<br>机动车所有人4、身份证明名称4、号码4、登记机关4、登记日期4<br>机动车所有人5、身份证明名称5、号码5、登记机关5、登记日期5<br>机动车所有人6、身份证明名称6、号码6、登记机关6、登记日期6<br>机动车所有人7、身份证明名称7、号码7、登记机关7、登记日期7<br>【登记栏】<br>机动车登记证书编号、标题（目前支持转让登记、抵押登记、解除抵押）<br>[标题：转让登记]<br>姓名/名称、身份证明名称/号码、获得方式、机动车登记编号、转让登记日期<br>[标题：抵押登记]<br>抵押权人姓名/名称、身份证明名称/号码、抵押登记日期<br>[标题：解除抵押]<br>解除抵押日期</p>
        :type Name: str
        :param _Value: <p>识别出的字段名称对应的值，也就是字段name对应的字符串结果。</p>
        :type Value: str
        """
        self._Name = None
        self._Value = None

    @property
    def Name(self):
        r"""<p>识别出的字段名称(关键字)，支持以下字段：<br>【注册登记信息栏/摘要信息栏、转移登记摘要信息栏】<br>车辆型号、车辆识别代号/车架号、发动机号、制造厂名称、轴距、轮胎数、总质量、外廓尺寸、轴数、车辆出厂日期、发证日期、使用性质、车辆获得方式、车辆类型、国产/进口、燃料种类、车身颜色、发动机型号、车辆品牌、编号、转向形式、<br>机动车所有人1、身份证明名称1、号码1、登记机关1、登记日期1<br>机动车所有人2、身份证明名称2、号码2、登记机关2、登记日期2<br>机动车所有人3、身份证明名称3、号码3、登记机关3、登记日期3<br>机动车所有人4、身份证明名称4、号码4、登记机关4、登记日期4<br>机动车所有人5、身份证明名称5、号码5、登记机关5、登记日期5<br>机动车所有人6、身份证明名称6、号码6、登记机关6、登记日期6<br>机动车所有人7、身份证明名称7、号码7、登记机关7、登记日期7<br>【登记栏】<br>机动车登记证书编号、标题（目前支持转让登记、抵押登记、解除抵押）<br>[标题：转让登记]<br>姓名/名称、身份证明名称/号码、获得方式、机动车登记编号、转让登记日期<br>[标题：抵押登记]<br>抵押权人姓名/名称、身份证明名称/号码、抵押登记日期<br>[标题：解除抵押]<br>解除抵押日期</p>
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Value(self):
        r"""<p>识别出的字段名称对应的值，也就是字段name对应的字符串结果。</p>
        :rtype: str
        """
        return self._Value

    @Value.setter
    def Value(self, Value):
        self._Value = Value


    def _deserialize(self, params):
        self._Name = params.get("Name")
        self._Value = params.get("Value")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class VehicleRegCertOCRRequest(AbstractModel):
    r"""VehicleRegCertOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经Base64编码后不超过 7M。图片下载时间不超过 3 秒。
图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经 Base64 编码后不超过 7M。图片下载时间不超过 3 秒。
图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。
非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        """
        self._ImageBase64 = None
        self._ImageUrl = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经Base64编码后不超过 7M。图片下载时间不超过 3 秒。
图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。
支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。
支持的图片大小：所下载图片经 Base64 编码后不超过 7M。图片下载时间不超过 3 秒。
图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。
非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class VehicleRegCertOCRResponse(AbstractModel):
    r"""VehicleRegCertOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _VehicleRegCertInfos: 机动车登记证书识别结果，具体内容请点击左侧链接。
        :type VehicleRegCertInfos: list of VehicleRegCertInfo
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._VehicleRegCertInfos = None
        self._RequestId = None

    @property
    def VehicleRegCertInfos(self):
        r"""机动车登记证书识别结果，具体内容请点击左侧链接。
        :rtype: list of VehicleRegCertInfo
        """
        return self._VehicleRegCertInfos

    @VehicleRegCertInfos.setter
    def VehicleRegCertInfos(self, VehicleRegCertInfos):
        self._VehicleRegCertInfos = VehicleRegCertInfos

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("VehicleRegCertInfos") is not None:
            self._VehicleRegCertInfos = []
            for item in params.get("VehicleRegCertInfos"):
                obj = VehicleRegCertInfo()
                obj._deserialize(item)
                self._VehicleRegCertInfos.append(obj)
        self._RequestId = params.get("RequestId")


class VerifyBizLicenseEnterprise3Request(AbstractModel):
    r"""VerifyBizLicenseEnterprise3请求参数结构体

    """

    def __init__(self):
        r"""
        :param _CreditCode: <p>统一社会信用代码</p>
        :type CreditCode: str
        :param _EntName: <p>企业名称</p>
        :type EntName: str
        :param _LrName: <p>法人代表</p>
        :type LrName: str
        :param _VerifyType: <p>核验类型 </p><p>枚举值：</p><ul><li>ENT_2META： 企业名称 、统一社会信用代码</li><li>ENT_3META： 企业名称 、统一社会信用代码 、法人代表名称</li></ul>
        :type VerifyType: str
        """
        self._CreditCode = None
        self._EntName = None
        self._LrName = None
        self._VerifyType = None

    @property
    def CreditCode(self):
        r"""<p>统一社会信用代码</p>
        :rtype: str
        """
        return self._CreditCode

    @CreditCode.setter
    def CreditCode(self, CreditCode):
        self._CreditCode = CreditCode

    @property
    def EntName(self):
        r"""<p>企业名称</p>
        :rtype: str
        """
        return self._EntName

    @EntName.setter
    def EntName(self, EntName):
        self._EntName = EntName

    @property
    def LrName(self):
        r"""<p>法人代表</p>
        :rtype: str
        """
        return self._LrName

    @LrName.setter
    def LrName(self, LrName):
        self._LrName = LrName

    @property
    def VerifyType(self):
        r"""<p>核验类型 </p><p>枚举值：</p><ul><li>ENT_2META： 企业名称 、统一社会信用代码</li><li>ENT_3META： 企业名称 、统一社会信用代码 、法人代表名称</li></ul>
        :rtype: str
        """
        return self._VerifyType

    @VerifyType.setter
    def VerifyType(self, VerifyType):
        self._VerifyType = VerifyType


    def _deserialize(self, params):
        self._CreditCode = params.get("CreditCode")
        self._EntName = params.get("EntName")
        self._LrName = params.get("LrName")
        self._VerifyType = params.get("VerifyType")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class VerifyBizLicenseEnterprise3Response(AbstractModel):
    r"""VerifyBizLicenseEnterprise3返回参数结构体

    """

    def __init__(self):
        r"""
        :param _StatusCode: <p>0 成功，计费<br>1 系统异常，不计费<br>2 查询无结果，不计费</p>
        :type StatusCode: int
        :param _VerifyResult: <p>验证结果<br>1：三要素完全匹配<br>0：三要素不完全匹配<br>仅StatusCode为0时返回</p>
        :type VerifyResult: int
        :param _OperatingStatus: <p>企业状态</p><p>枚举值：</p><ul><li>1： 开业（在营）/ 在营</li><li>2： 迁出 / 非在营</li><li>3： 注销</li><li>4： 吊销</li><li>5： 撤销</li><li>6： 停业</li><li>7： 撤销登记</li><li>0： 其他</li><li>/： 无法查询</li></ul><p>企业状态  当VerifyType参数为ENT_2META时，可返回：  0-7,  /   当VerifyType参数为ENT_3META时，可返回  1，2</p>
        :type OperatingStatus: str
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._StatusCode = None
        self._VerifyResult = None
        self._OperatingStatus = None
        self._RequestId = None

    @property
    def StatusCode(self):
        r"""<p>0 成功，计费<br>1 系统异常，不计费<br>2 查询无结果，不计费</p>
        :rtype: int
        """
        return self._StatusCode

    @StatusCode.setter
    def StatusCode(self, StatusCode):
        self._StatusCode = StatusCode

    @property
    def VerifyResult(self):
        r"""<p>验证结果<br>1：三要素完全匹配<br>0：三要素不完全匹配<br>仅StatusCode为0时返回</p>
        :rtype: int
        """
        return self._VerifyResult

    @VerifyResult.setter
    def VerifyResult(self, VerifyResult):
        self._VerifyResult = VerifyResult

    @property
    def OperatingStatus(self):
        r"""<p>企业状态</p><p>枚举值：</p><ul><li>1： 开业（在营）/ 在营</li><li>2： 迁出 / 非在营</li><li>3： 注销</li><li>4： 吊销</li><li>5： 撤销</li><li>6： 停业</li><li>7： 撤销登记</li><li>0： 其他</li><li>/： 无法查询</li></ul><p>企业状态  当VerifyType参数为ENT_2META时，可返回：  0-7,  /   当VerifyType参数为ENT_3META时，可返回  1，2</p>
        :rtype: str
        """
        return self._OperatingStatus

    @OperatingStatus.setter
    def OperatingStatus(self, OperatingStatus):
        self._OperatingStatus = OperatingStatus

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._StatusCode = params.get("StatusCode")
        self._VerifyResult = params.get("VerifyResult")
        self._OperatingStatus = params.get("OperatingStatus")
        self._RequestId = params.get("RequestId")


class VerifyBizLicenseEnterprise4Request(AbstractModel):
    r"""VerifyBizLicenseEnterprise4请求参数结构体

    """

    def __init__(self):
        r"""
        :param _CreditCode: <p>统一社会信用代码</p>
        :type CreditCode: str
        :param _EntName: <p>企业名称</p>
        :type EntName: str
        :param _LrName: <p>法人代表</p>
        :type LrName: str
        :param _IdNum: <p>注册登记证件号码</p>
        :type IdNum: str
        """
        self._CreditCode = None
        self._EntName = None
        self._LrName = None
        self._IdNum = None

    @property
    def CreditCode(self):
        r"""<p>统一社会信用代码</p>
        :rtype: str
        """
        return self._CreditCode

    @CreditCode.setter
    def CreditCode(self, CreditCode):
        self._CreditCode = CreditCode

    @property
    def EntName(self):
        r"""<p>企业名称</p>
        :rtype: str
        """
        return self._EntName

    @EntName.setter
    def EntName(self, EntName):
        self._EntName = EntName

    @property
    def LrName(self):
        r"""<p>法人代表</p>
        :rtype: str
        """
        return self._LrName

    @LrName.setter
    def LrName(self, LrName):
        self._LrName = LrName

    @property
    def IdNum(self):
        r"""<p>注册登记证件号码</p>
        :rtype: str
        """
        return self._IdNum

    @IdNum.setter
    def IdNum(self, IdNum):
        self._IdNum = IdNum


    def _deserialize(self, params):
        self._CreditCode = params.get("CreditCode")
        self._EntName = params.get("EntName")
        self._LrName = params.get("LrName")
        self._IdNum = params.get("IdNum")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class VerifyBizLicenseEnterprise4Response(AbstractModel):
    r"""VerifyBizLicenseEnterprise4返回参数结构体

    """

    def __init__(self):
        r"""
        :param _StatusCode: <p>请求状态</p><p>枚举值：</p><ul><li>0： 成功，计费</li><li>1： 系统异常，不计费</li></ul>
        :type StatusCode: int
        :param _VerifyResult: <p>验证结果<br>1：四要素完全匹配<br>0：四要素不完全匹配<br>仅StatusCode为0时返回</p>
        :type VerifyResult: int
        :param _IsCreditCodeConsistent: <p>统一社会信用代码是否一致<br>仅StatusCode为0时返回</p>
        :type IsCreditCodeConsistent: bool
        :param _IsEntNameConsistent: <p>企业名称是否一致<br>仅StatusCode为0时返回</p>
        :type IsEntNameConsistent: bool
        :param _IsLrNameConsistent: <p>法人代表是否一致<br>仅StatusCode为0时返回，企业名称与统一社会信用代码均未查得时，固定返回false</p>
        :type IsLrNameConsistent: bool
        :param _IsIdNumConsistent: <p>注册登记证件号码是否一致<br>仅StatusCode为0时返回，企业名称与统一社会信用代码均未查得时，固定返回false</p>
        :type IsIdNumConsistent: bool
        :param _OperatingStatus: <p>经营状态</p><p>枚举值：</p><ul><li>1： 开业（在营）</li><li>2： 迁出</li><li>3： 注销</li><li>4： 吊销</li><li>5： 撤销</li><li>6： 停业</li><li>7： 撤销登记</li><li>0： 其他</li><li>/： 无法查询</li></ul>
        :type OperatingStatus: str
        :param _OperatingPeriod: <p>营业期限：一般包括营业开始时间和结束时间</p><p>参数格式：yyyy-MM-dd/yyyy-MM-dd</p><p>无固定期限的格式为：yyyy-MM-dd/<br>部分企业历史数据可能为空，将返回：/<br>无法查询，将返回：/</p>
        :type OperatingPeriod: str
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._StatusCode = None
        self._VerifyResult = None
        self._IsCreditCodeConsistent = None
        self._IsEntNameConsistent = None
        self._IsLrNameConsistent = None
        self._IsIdNumConsistent = None
        self._OperatingStatus = None
        self._OperatingPeriod = None
        self._RequestId = None

    @property
    def StatusCode(self):
        r"""<p>请求状态</p><p>枚举值：</p><ul><li>0： 成功，计费</li><li>1： 系统异常，不计费</li></ul>
        :rtype: int
        """
        return self._StatusCode

    @StatusCode.setter
    def StatusCode(self, StatusCode):
        self._StatusCode = StatusCode

    @property
    def VerifyResult(self):
        r"""<p>验证结果<br>1：四要素完全匹配<br>0：四要素不完全匹配<br>仅StatusCode为0时返回</p>
        :rtype: int
        """
        return self._VerifyResult

    @VerifyResult.setter
    def VerifyResult(self, VerifyResult):
        self._VerifyResult = VerifyResult

    @property
    def IsCreditCodeConsistent(self):
        r"""<p>统一社会信用代码是否一致<br>仅StatusCode为0时返回</p>
        :rtype: bool
        """
        return self._IsCreditCodeConsistent

    @IsCreditCodeConsistent.setter
    def IsCreditCodeConsistent(self, IsCreditCodeConsistent):
        self._IsCreditCodeConsistent = IsCreditCodeConsistent

    @property
    def IsEntNameConsistent(self):
        r"""<p>企业名称是否一致<br>仅StatusCode为0时返回</p>
        :rtype: bool
        """
        return self._IsEntNameConsistent

    @IsEntNameConsistent.setter
    def IsEntNameConsistent(self, IsEntNameConsistent):
        self._IsEntNameConsistent = IsEntNameConsistent

    @property
    def IsLrNameConsistent(self):
        r"""<p>法人代表是否一致<br>仅StatusCode为0时返回，企业名称与统一社会信用代码均未查得时，固定返回false</p>
        :rtype: bool
        """
        return self._IsLrNameConsistent

    @IsLrNameConsistent.setter
    def IsLrNameConsistent(self, IsLrNameConsistent):
        self._IsLrNameConsistent = IsLrNameConsistent

    @property
    def IsIdNumConsistent(self):
        r"""<p>注册登记证件号码是否一致<br>仅StatusCode为0时返回，企业名称与统一社会信用代码均未查得时，固定返回false</p>
        :rtype: bool
        """
        return self._IsIdNumConsistent

    @IsIdNumConsistent.setter
    def IsIdNumConsistent(self, IsIdNumConsistent):
        self._IsIdNumConsistent = IsIdNumConsistent

    @property
    def OperatingStatus(self):
        r"""<p>经营状态</p><p>枚举值：</p><ul><li>1： 开业（在营）</li><li>2： 迁出</li><li>3： 注销</li><li>4： 吊销</li><li>5： 撤销</li><li>6： 停业</li><li>7： 撤销登记</li><li>0： 其他</li><li>/： 无法查询</li></ul>
        :rtype: str
        """
        return self._OperatingStatus

    @OperatingStatus.setter
    def OperatingStatus(self, OperatingStatus):
        self._OperatingStatus = OperatingStatus

    @property
    def OperatingPeriod(self):
        r"""<p>营业期限：一般包括营业开始时间和结束时间</p><p>参数格式：yyyy-MM-dd/yyyy-MM-dd</p><p>无固定期限的格式为：yyyy-MM-dd/<br>部分企业历史数据可能为空，将返回：/<br>无法查询，将返回：/</p>
        :rtype: str
        """
        return self._OperatingPeriod

    @OperatingPeriod.setter
    def OperatingPeriod(self, OperatingPeriod):
        self._OperatingPeriod = OperatingPeriod

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._StatusCode = params.get("StatusCode")
        self._VerifyResult = params.get("VerifyResult")
        self._IsCreditCodeConsistent = params.get("IsCreditCodeConsistent")
        self._IsEntNameConsistent = params.get("IsEntNameConsistent")
        self._IsLrNameConsistent = params.get("IsLrNameConsistent")
        self._IsIdNumConsistent = params.get("IsIdNumConsistent")
        self._OperatingStatus = params.get("OperatingStatus")
        self._OperatingPeriod = params.get("OperatingPeriod")
        self._RequestId = params.get("RequestId")


class VerifyOfdVatInvoiceOCRRequest(AbstractModel):
    r"""VerifyOfdVatInvoiceOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _OfdFileUrl: OFD文件的 Url 地址。
        :type OfdFileUrl: str
        :param _OfdFileBase64: OFD文件的 Base64 值。OfdFileUrl 和 OfdFileBase64 必传其一，若两者都传，只使用OfdFileUrl。
        :type OfdFileBase64: str
        :param _OfdPageNumber: 需要识别的OFD发票页面的对应页码，默认值为1。 示例值：1
        :type OfdPageNumber: int
        """
        self._OfdFileUrl = None
        self._OfdFileBase64 = None
        self._OfdPageNumber = None

    @property
    def OfdFileUrl(self):
        r"""OFD文件的 Url 地址。
        :rtype: str
        """
        return self._OfdFileUrl

    @OfdFileUrl.setter
    def OfdFileUrl(self, OfdFileUrl):
        self._OfdFileUrl = OfdFileUrl

    @property
    def OfdFileBase64(self):
        r"""OFD文件的 Base64 值。OfdFileUrl 和 OfdFileBase64 必传其一，若两者都传，只使用OfdFileUrl。
        :rtype: str
        """
        return self._OfdFileBase64

    @OfdFileBase64.setter
    def OfdFileBase64(self, OfdFileBase64):
        self._OfdFileBase64 = OfdFileBase64

    @property
    def OfdPageNumber(self):
        r"""需要识别的OFD发票页面的对应页码，默认值为1。 示例值：1
        :rtype: int
        """
        return self._OfdPageNumber

    @OfdPageNumber.setter
    def OfdPageNumber(self, OfdPageNumber):
        self._OfdPageNumber = OfdPageNumber


    def _deserialize(self, params):
        self._OfdFileUrl = params.get("OfdFileUrl")
        self._OfdFileBase64 = params.get("OfdFileBase64")
        self._OfdPageNumber = params.get("OfdPageNumber")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class VerifyOfdVatInvoiceOCRResponse(AbstractModel):
    r"""VerifyOfdVatInvoiceOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Type: 发票类型
026:增值税电子普通发票
028:增值税电子专用发票
010:电子发票（普通发票）
020:电子发票（增值税专用发票）
030:电子发票（铁路电子客票）
040:电子发票（航空运输电子客票行程单）
        :type Type: str
        :param _InvoiceCode: 发票代码
        :type InvoiceCode: str
        :param _InvoiceNumber: 发票号码
        :type InvoiceNumber: str
        :param _IssueDate: 开票日期
        :type IssueDate: str
        :param _InvoiceCheckCode: 验证码
        :type InvoiceCheckCode: str
        :param _MachineNumber: 机器编号
        :type MachineNumber: str
        :param _TaxControlCode: 密码区
        :type TaxControlCode: str
        :param _Buyer: 购买方
        :type Buyer: :class:`tencentcloud.ocr.v20181119.models.VatInvoiceUserInfo`
        :param _Seller: 销售方
        :type Seller: :class:`tencentcloud.ocr.v20181119.models.VatInvoiceUserInfo`
        :param _TaxInclusiveTotalAmount: 价税合计
        :type TaxInclusiveTotalAmount: str
        :param _InvoiceClerk: 开票人
        :type InvoiceClerk: str
        :param _Payee: 收款人
        :type Payee: str
        :param _Checker: 复核人
        :type Checker: str
        :param _TaxTotalAmount: 税额
        :type TaxTotalAmount: str
        :param _TaxExclusiveTotalAmount: 不含税金额
        :type TaxExclusiveTotalAmount: str
        :param _Note: 备注
        :type Note: str
        :param _GoodsInfos: 货物或服务清单
        :type GoodsInfos: list of VatInvoiceGoodsInfo
        :param _AirTicketInfo: 航空运输电子客票行程单信息
        :type AirTicketInfo: :class:`tencentcloud.ocr.v20181119.models.AirTicketInfo`
        :param _RailwayTicketInfo: 铁路电子客票
        :type RailwayTicketInfo: :class:`tencentcloud.ocr.v20181119.models.RailwayTicketInfo`
        :param _InvoiceTitle: 发票标题
        :type InvoiceTitle: str
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Type = None
        self._InvoiceCode = None
        self._InvoiceNumber = None
        self._IssueDate = None
        self._InvoiceCheckCode = None
        self._MachineNumber = None
        self._TaxControlCode = None
        self._Buyer = None
        self._Seller = None
        self._TaxInclusiveTotalAmount = None
        self._InvoiceClerk = None
        self._Payee = None
        self._Checker = None
        self._TaxTotalAmount = None
        self._TaxExclusiveTotalAmount = None
        self._Note = None
        self._GoodsInfos = None
        self._AirTicketInfo = None
        self._RailwayTicketInfo = None
        self._InvoiceTitle = None
        self._RequestId = None

    @property
    def Type(self):
        r"""发票类型
026:增值税电子普通发票
028:增值税电子专用发票
010:电子发票（普通发票）
020:电子发票（增值税专用发票）
030:电子发票（铁路电子客票）
040:电子发票（航空运输电子客票行程单）
        :rtype: str
        """
        return self._Type

    @Type.setter
    def Type(self, Type):
        self._Type = Type

    @property
    def InvoiceCode(self):
        r"""发票代码
        :rtype: str
        """
        return self._InvoiceCode

    @InvoiceCode.setter
    def InvoiceCode(self, InvoiceCode):
        self._InvoiceCode = InvoiceCode

    @property
    def InvoiceNumber(self):
        r"""发票号码
        :rtype: str
        """
        return self._InvoiceNumber

    @InvoiceNumber.setter
    def InvoiceNumber(self, InvoiceNumber):
        self._InvoiceNumber = InvoiceNumber

    @property
    def IssueDate(self):
        r"""开票日期
        :rtype: str
        """
        return self._IssueDate

    @IssueDate.setter
    def IssueDate(self, IssueDate):
        self._IssueDate = IssueDate

    @property
    def InvoiceCheckCode(self):
        r"""验证码
        :rtype: str
        """
        return self._InvoiceCheckCode

    @InvoiceCheckCode.setter
    def InvoiceCheckCode(self, InvoiceCheckCode):
        self._InvoiceCheckCode = InvoiceCheckCode

    @property
    def MachineNumber(self):
        r"""机器编号
        :rtype: str
        """
        return self._MachineNumber

    @MachineNumber.setter
    def MachineNumber(self, MachineNumber):
        self._MachineNumber = MachineNumber

    @property
    def TaxControlCode(self):
        r"""密码区
        :rtype: str
        """
        return self._TaxControlCode

    @TaxControlCode.setter
    def TaxControlCode(self, TaxControlCode):
        self._TaxControlCode = TaxControlCode

    @property
    def Buyer(self):
        r"""购买方
        :rtype: :class:`tencentcloud.ocr.v20181119.models.VatInvoiceUserInfo`
        """
        return self._Buyer

    @Buyer.setter
    def Buyer(self, Buyer):
        self._Buyer = Buyer

    @property
    def Seller(self):
        r"""销售方
        :rtype: :class:`tencentcloud.ocr.v20181119.models.VatInvoiceUserInfo`
        """
        return self._Seller

    @Seller.setter
    def Seller(self, Seller):
        self._Seller = Seller

    @property
    def TaxInclusiveTotalAmount(self):
        r"""价税合计
        :rtype: str
        """
        return self._TaxInclusiveTotalAmount

    @TaxInclusiveTotalAmount.setter
    def TaxInclusiveTotalAmount(self, TaxInclusiveTotalAmount):
        self._TaxInclusiveTotalAmount = TaxInclusiveTotalAmount

    @property
    def InvoiceClerk(self):
        r"""开票人
        :rtype: str
        """
        return self._InvoiceClerk

    @InvoiceClerk.setter
    def InvoiceClerk(self, InvoiceClerk):
        self._InvoiceClerk = InvoiceClerk

    @property
    def Payee(self):
        r"""收款人
        :rtype: str
        """
        return self._Payee

    @Payee.setter
    def Payee(self, Payee):
        self._Payee = Payee

    @property
    def Checker(self):
        r"""复核人
        :rtype: str
        """
        return self._Checker

    @Checker.setter
    def Checker(self, Checker):
        self._Checker = Checker

    @property
    def TaxTotalAmount(self):
        r"""税额
        :rtype: str
        """
        return self._TaxTotalAmount

    @TaxTotalAmount.setter
    def TaxTotalAmount(self, TaxTotalAmount):
        self._TaxTotalAmount = TaxTotalAmount

    @property
    def TaxExclusiveTotalAmount(self):
        r"""不含税金额
        :rtype: str
        """
        return self._TaxExclusiveTotalAmount

    @TaxExclusiveTotalAmount.setter
    def TaxExclusiveTotalAmount(self, TaxExclusiveTotalAmount):
        self._TaxExclusiveTotalAmount = TaxExclusiveTotalAmount

    @property
    def Note(self):
        r"""备注
        :rtype: str
        """
        return self._Note

    @Note.setter
    def Note(self, Note):
        self._Note = Note

    @property
    def GoodsInfos(self):
        r"""货物或服务清单
        :rtype: list of VatInvoiceGoodsInfo
        """
        return self._GoodsInfos

    @GoodsInfos.setter
    def GoodsInfos(self, GoodsInfos):
        self._GoodsInfos = GoodsInfos

    @property
    def AirTicketInfo(self):
        r"""航空运输电子客票行程单信息
        :rtype: :class:`tencentcloud.ocr.v20181119.models.AirTicketInfo`
        """
        return self._AirTicketInfo

    @AirTicketInfo.setter
    def AirTicketInfo(self, AirTicketInfo):
        self._AirTicketInfo = AirTicketInfo

    @property
    def RailwayTicketInfo(self):
        r"""铁路电子客票
        :rtype: :class:`tencentcloud.ocr.v20181119.models.RailwayTicketInfo`
        """
        return self._RailwayTicketInfo

    @RailwayTicketInfo.setter
    def RailwayTicketInfo(self, RailwayTicketInfo):
        self._RailwayTicketInfo = RailwayTicketInfo

    @property
    def InvoiceTitle(self):
        r"""发票标题
        :rtype: str
        """
        return self._InvoiceTitle

    @InvoiceTitle.setter
    def InvoiceTitle(self, InvoiceTitle):
        self._InvoiceTitle = InvoiceTitle

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._Type = params.get("Type")
        self._InvoiceCode = params.get("InvoiceCode")
        self._InvoiceNumber = params.get("InvoiceNumber")
        self._IssueDate = params.get("IssueDate")
        self._InvoiceCheckCode = params.get("InvoiceCheckCode")
        self._MachineNumber = params.get("MachineNumber")
        self._TaxControlCode = params.get("TaxControlCode")
        if params.get("Buyer") is not None:
            self._Buyer = VatInvoiceUserInfo()
            self._Buyer._deserialize(params.get("Buyer"))
        if params.get("Seller") is not None:
            self._Seller = VatInvoiceUserInfo()
            self._Seller._deserialize(params.get("Seller"))
        self._TaxInclusiveTotalAmount = params.get("TaxInclusiveTotalAmount")
        self._InvoiceClerk = params.get("InvoiceClerk")
        self._Payee = params.get("Payee")
        self._Checker = params.get("Checker")
        self._TaxTotalAmount = params.get("TaxTotalAmount")
        self._TaxExclusiveTotalAmount = params.get("TaxExclusiveTotalAmount")
        self._Note = params.get("Note")
        if params.get("GoodsInfos") is not None:
            self._GoodsInfos = []
            for item in params.get("GoodsInfos"):
                obj = VatInvoiceGoodsInfo()
                obj._deserialize(item)
                self._GoodsInfos.append(obj)
        if params.get("AirTicketInfo") is not None:
            self._AirTicketInfo = AirTicketInfo()
            self._AirTicketInfo._deserialize(params.get("AirTicketInfo"))
        if params.get("RailwayTicketInfo") is not None:
            self._RailwayTicketInfo = RailwayTicketInfo()
            self._RailwayTicketInfo._deserialize(params.get("RailwayTicketInfo"))
        self._InvoiceTitle = params.get("InvoiceTitle")
        self._RequestId = params.get("RequestId")


class VerifyScenePhotoRequest(AbstractModel):
    r"""VerifyScenePhoto请求参数结构体

    """

    def __init__(self):
        r"""
        :param _Scene: <p>场景类型参数，如果场景无法细分请选用该大类的第一个子类，目前支持以下类型：<br><strong>经营场所照</strong><br>0101 门头照<br>0102 店内照<br>0103 流动经营照</p>
        :type Scene: str
        :param _ImageUrl: <p>图片的 Url 地址。要求图片经Base64编码后不超过 10M。</p>
        :type ImageUrl: str
        :param _ImageBase64: <p>图片的 Base64 值。要求图片经Base64编码后不超过 10M。</p>
        :type ImageBase64: str
        """
        self._Scene = None
        self._ImageUrl = None
        self._ImageBase64 = None

    @property
    def Scene(self):
        r"""<p>场景类型参数，如果场景无法细分请选用该大类的第一个子类，目前支持以下类型：<br><strong>经营场所照</strong><br>0101 门头照<br>0102 店内照<br>0103 流动经营照</p>
        :rtype: str
        """
        return self._Scene

    @Scene.setter
    def Scene(self, Scene):
        self._Scene = Scene

    @property
    def ImageUrl(self):
        r"""<p>图片的 Url 地址。要求图片经Base64编码后不超过 10M。</p>
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def ImageBase64(self):
        r"""<p>图片的 Base64 值。要求图片经Base64编码后不超过 10M。</p>
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64


    def _deserialize(self, params):
        self._Scene = params.get("Scene")
        self._ImageUrl = params.get("ImageUrl")
        self._ImageBase64 = params.get("ImageBase64")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class VerifyScenePhotoResponse(AbstractModel):
    r"""VerifyScenePhoto返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Tamper: <p>区域篡改提示</p>
        :type Tamper: :class:`tencentcloud.ocr.v20181119.models.SceneWarnInfo`
        :param _Synthesis: <p>AIGC合成提示</p>
        :type Synthesis: :class:`tencentcloud.ocr.v20181119.models.SceneWarnInfo`
        :param _RemakeScreen: <p>屏幕翻拍提示</p>
        :type RemakeScreen: :class:`tencentcloud.ocr.v20181119.models.SceneWarnInfo`
        :param _Screenshot: <p>截图提示</p>
        :type Screenshot: :class:`tencentcloud.ocr.v20181119.models.SceneWarnInfo`
        :param _TextWatermark: <p>文字水印提示</p>
        :type TextWatermark: :class:`tencentcloud.ocr.v20181119.models.SceneWarnInfo`
        :param _WatermarkContent: <p>水印内容，当未检测到文字水印时不返回，返回多组水印时以 | 分隔。</p>
        :type WatermarkContent: str
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Tamper = None
        self._Synthesis = None
        self._RemakeScreen = None
        self._Screenshot = None
        self._TextWatermark = None
        self._WatermarkContent = None
        self._RequestId = None

    @property
    def Tamper(self):
        r"""<p>区域篡改提示</p>
        :rtype: :class:`tencentcloud.ocr.v20181119.models.SceneWarnInfo`
        """
        return self._Tamper

    @Tamper.setter
    def Tamper(self, Tamper):
        self._Tamper = Tamper

    @property
    def Synthesis(self):
        r"""<p>AIGC合成提示</p>
        :rtype: :class:`tencentcloud.ocr.v20181119.models.SceneWarnInfo`
        """
        return self._Synthesis

    @Synthesis.setter
    def Synthesis(self, Synthesis):
        self._Synthesis = Synthesis

    @property
    def RemakeScreen(self):
        r"""<p>屏幕翻拍提示</p>
        :rtype: :class:`tencentcloud.ocr.v20181119.models.SceneWarnInfo`
        """
        return self._RemakeScreen

    @RemakeScreen.setter
    def RemakeScreen(self, RemakeScreen):
        self._RemakeScreen = RemakeScreen

    @property
    def Screenshot(self):
        r"""<p>截图提示</p>
        :rtype: :class:`tencentcloud.ocr.v20181119.models.SceneWarnInfo`
        """
        return self._Screenshot

    @Screenshot.setter
    def Screenshot(self, Screenshot):
        self._Screenshot = Screenshot

    @property
    def TextWatermark(self):
        r"""<p>文字水印提示</p>
        :rtype: :class:`tencentcloud.ocr.v20181119.models.SceneWarnInfo`
        """
        return self._TextWatermark

    @TextWatermark.setter
    def TextWatermark(self, TextWatermark):
        self._TextWatermark = TextWatermark

    @property
    def WatermarkContent(self):
        r"""<p>水印内容，当未检测到文字水印时不返回，返回多组水印时以 | 分隔。</p>
        :rtype: str
        """
        return self._WatermarkContent

    @WatermarkContent.setter
    def WatermarkContent(self, WatermarkContent):
        self._WatermarkContent = WatermarkContent

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Tamper") is not None:
            self._Tamper = SceneWarnInfo()
            self._Tamper._deserialize(params.get("Tamper"))
        if params.get("Synthesis") is not None:
            self._Synthesis = SceneWarnInfo()
            self._Synthesis._deserialize(params.get("Synthesis"))
        if params.get("RemakeScreen") is not None:
            self._RemakeScreen = SceneWarnInfo()
            self._RemakeScreen._deserialize(params.get("RemakeScreen"))
        if params.get("Screenshot") is not None:
            self._Screenshot = SceneWarnInfo()
            self._Screenshot._deserialize(params.get("Screenshot"))
        if params.get("TextWatermark") is not None:
            self._TextWatermark = SceneWarnInfo()
            self._TextWatermark._deserialize(params.get("TextWatermark"))
        self._WatermarkContent = params.get("WatermarkContent")
        self._RequestId = params.get("RequestId")


class VinOCRRequest(AbstractModel):
    r"""VinOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        """
        self._ImageBase64 = None
        self._ImageUrl = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class VinOCRResponse(AbstractModel):
    r"""VinOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Vin: 检测到的车辆 VIN 码。
        :type Vin: str
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Vin = None
        self._RequestId = None

    @property
    def Vin(self):
        r"""检测到的车辆 VIN 码。
        :rtype: str
        """
        return self._Vin

    @Vin.setter
    def Vin(self, Vin):
        self._Vin = Vin

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._Vin = params.get("Vin")
        self._RequestId = params.get("RequestId")


class WaybillOCRRequest(AbstractModel):
    r"""WaybillOCR请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ImageBase64: 图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :type ImageBase64: str
        :param _ImageUrl: 图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :type ImageUrl: str
        :param _EnablePreDetect: 预检测开关，当待识别运单占整个输入图像的比例较小时，建议打开预检测开关。默认值为false。
        :type EnablePreDetect: bool
        :param _IsPdf: 是否开启PDF识别，默认值为true，开启后可同时支持图片和PDF的识别。
        :type IsPdf: bool
        :param _PdfPageNumber: 需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :type PdfPageNumber: int
        """
        self._ImageBase64 = None
        self._ImageUrl = None
        self._EnablePreDetect = None
        self._IsPdf = None
        self._PdfPageNumber = None

    @property
    def ImageBase64(self):
        r"""图片的 Base64 值。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经Base64编码后不超过 10M。图片下载时间不超过 3 秒。图片的 ImageUrl、ImageBase64 必须提供一个，如果都提供，只使用 ImageUrl。
        :rtype: str
        """
        return self._ImageBase64

    @ImageBase64.setter
    def ImageBase64(self, ImageBase64):
        self._ImageBase64 = ImageBase64

    @property
    def ImageUrl(self):
        r"""图片的 Url 地址。支持的图片格式：PNG、JPG、JPEG，暂不支持 GIF 格式。支持的图片大小：所下载图片经 Base64 编码后不超过 10M。图片下载时间不超过 3 秒。图片存储于腾讯云的 Url 可保障更高的下载速度和稳定性，建议图片存储于腾讯云。非腾讯云存储的 Url 速度和稳定性可能受一定影响。
        :rtype: str
        """
        return self._ImageUrl

    @ImageUrl.setter
    def ImageUrl(self, ImageUrl):
        self._ImageUrl = ImageUrl

    @property
    def EnablePreDetect(self):
        r"""预检测开关，当待识别运单占整个输入图像的比例较小时，建议打开预检测开关。默认值为false。
        :rtype: bool
        """
        return self._EnablePreDetect

    @EnablePreDetect.setter
    def EnablePreDetect(self, EnablePreDetect):
        self._EnablePreDetect = EnablePreDetect

    @property
    def IsPdf(self):
        r"""是否开启PDF识别，默认值为true，开启后可同时支持图片和PDF的识别。
        :rtype: bool
        """
        return self._IsPdf

    @IsPdf.setter
    def IsPdf(self, IsPdf):
        self._IsPdf = IsPdf

    @property
    def PdfPageNumber(self):
        r"""需要识别的PDF页面的对应页码，仅支持PDF单页识别，当上传文件为PDF且IsPdf参数值为true时有效，默认值为1。
        :rtype: int
        """
        return self._PdfPageNumber

    @PdfPageNumber.setter
    def PdfPageNumber(self, PdfPageNumber):
        self._PdfPageNumber = PdfPageNumber


    def _deserialize(self, params):
        self._ImageBase64 = params.get("ImageBase64")
        self._ImageUrl = params.get("ImageUrl")
        self._EnablePreDetect = params.get("EnablePreDetect")
        self._IsPdf = params.get("IsPdf")
        self._PdfPageNumber = params.get("PdfPageNumber")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class WaybillOCRResponse(AbstractModel):
    r"""WaybillOCR返回参数结构体

    """

    def __init__(self):
        r"""
        :param _TextDetections: 检测到的文本信息，具体内容请点击左侧链接。
        :type TextDetections: :class:`tencentcloud.ocr.v20181119.models.TextWaybill`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._TextDetections = None
        self._RequestId = None

    @property
    def TextDetections(self):
        r"""检测到的文本信息，具体内容请点击左侧链接。
        :rtype: :class:`tencentcloud.ocr.v20181119.models.TextWaybill`
        """
        return self._TextDetections

    @TextDetections.setter
    def TextDetections(self, TextDetections):
        self._TextDetections = TextDetections

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("TextDetections") is not None:
            self._TextDetections = TextWaybill()
            self._TextDetections._deserialize(params.get("TextDetections"))
        self._RequestId = params.get("RequestId")


class WaybillObj(AbstractModel):
    r"""运单识别对象

    """

    def __init__(self):
        r"""
        :param _Text: 识别出的文本行内容
        :type Text: str
        """
        self._Text = None

    @property
    def Text(self):
        r"""识别出的文本行内容
        :rtype: str
        """
        return self._Text

    @Text.setter
    def Text(self, Text):
        self._Text = Text


    def _deserialize(self, params):
        self._Text = params.get("Text")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class WordCoordPoint(AbstractModel):
    r"""英文OCR识别出的单词在原图中的四点坐标数组

    """

    def __init__(self):
        r"""
        :param _WordCoordinate: 英文OCR识别出的每个单词在原图中的四点坐标。
        :type WordCoordinate: list of Coord
        """
        self._WordCoordinate = None

    @property
    def WordCoordinate(self):
        r"""英文OCR识别出的每个单词在原图中的四点坐标。
        :rtype: list of Coord
        """
        return self._WordCoordinate

    @WordCoordinate.setter
    def WordCoordinate(self, WordCoordinate):
        self._WordCoordinate = WordCoordinate


    def _deserialize(self, params):
        if params.get("WordCoordinate") is not None:
            self._WordCoordinate = []
            for item in params.get("WordCoordinate"):
                obj = Coord()
                obj._deserialize(item)
                self._WordCoordinate.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class WordItem(AbstractModel):
    r"""还原文本信息

    """

    def __init__(self):
        r"""
        :param _DetectedText: 文本块内容
        :type DetectedText: str
        :param _Coord: 四点坐标
        :type Coord: :class:`tencentcloud.ocr.v20181119.models.Polygon`
        :param _AdvancedInfo: 描述性信息
        :type AdvancedInfo: str
        :param _WordCoord: 单词的四点坐标
        :type WordCoord: list of WordPolygon
        """
        self._DetectedText = None
        self._Coord = None
        self._AdvancedInfo = None
        self._WordCoord = None

    @property
    def DetectedText(self):
        r"""文本块内容
        :rtype: str
        """
        return self._DetectedText

    @DetectedText.setter
    def DetectedText(self, DetectedText):
        self._DetectedText = DetectedText

    @property
    def Coord(self):
        r"""四点坐标
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Polygon`
        """
        return self._Coord

    @Coord.setter
    def Coord(self, Coord):
        self._Coord = Coord

    @property
    def AdvancedInfo(self):
        r"""描述性信息
        :rtype: str
        """
        return self._AdvancedInfo

    @AdvancedInfo.setter
    def AdvancedInfo(self, AdvancedInfo):
        self._AdvancedInfo = AdvancedInfo

    @property
    def WordCoord(self):
        r"""单词的四点坐标
        :rtype: list of WordPolygon
        """
        return self._WordCoord

    @WordCoord.setter
    def WordCoord(self, WordCoord):
        self._WordCoord = WordCoord


    def _deserialize(self, params):
        self._DetectedText = params.get("DetectedText")
        if params.get("Coord") is not None:
            self._Coord = Polygon()
            self._Coord._deserialize(params.get("Coord"))
        self._AdvancedInfo = params.get("AdvancedInfo")
        if params.get("WordCoord") is not None:
            self._WordCoord = []
            for item in params.get("WordCoord"):
                obj = WordPolygon()
                obj._deserialize(item)
                self._WordCoord.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class WordPolygon(AbstractModel):
    r"""单词坐标信息

    """

    def __init__(self):
        r"""
        :param _DetectedText: 文本块内容
        :type DetectedText: str
        :param _Coord: 四点坐标
        :type Coord: :class:`tencentcloud.ocr.v20181119.models.Polygon`
        """
        self._DetectedText = None
        self._Coord = None

    @property
    def DetectedText(self):
        r"""文本块内容
        :rtype: str
        """
        return self._DetectedText

    @DetectedText.setter
    def DetectedText(self, DetectedText):
        self._DetectedText = DetectedText

    @property
    def Coord(self):
        r"""四点坐标
        :rtype: :class:`tencentcloud.ocr.v20181119.models.Polygon`
        """
        return self._Coord

    @Coord.setter
    def Coord(self, Coord):
        self._Coord = Coord


    def _deserialize(self, params):
        self._DetectedText = params.get("DetectedText")
        if params.get("Coord") is not None:
            self._Coord = Polygon()
            self._Coord._deserialize(params.get("Coord"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class Words(AbstractModel):
    r"""识别出来的单词信息包括单词（包括单词Character和单词置信度confidence）

    """

    def __init__(self):
        r"""
        :param _Confidence: 置信度 0 ~100
        :type Confidence: int
        :param _Character: 候选字Character
        :type Character: str
        """
        self._Confidence = None
        self._Character = None

    @property
    def Confidence(self):
        r"""置信度 0 ~100
        :rtype: int
        """
        return self._Confidence

    @Confidence.setter
    def Confidence(self, Confidence):
        self._Confidence = Confidence

    @property
    def Character(self):
        r"""候选字Character
        :rtype: str
        """
        return self._Character

    @Character.setter
    def Character(self, Character):
        self._Character = Character


    def _deserialize(self, params):
        self._Confidence = params.get("Confidence")
        self._Character = params.get("Character")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        