import copy import re LONG_NAME = 'long_name' TIME_NUM = 600000000 PAGE_DEFAULT = 1 PAGE_SIZE_DEFAULT = 10 FIXED_APPLICATION_ID_PREFIX = 'CH-S' DOC_SCHEME_LIST = ['ACCEPTANCE', 'SETTLEMENT', 'CONTRACTMANAGEMENT'] DATA_SOURCE_LIST = ['POS', 'EAPP', 'ECONTRACT'] COMPARE_DOC_SCHEME_LIST = ['CA', 'SE'] HIL_PREFIX = 'HIL' AFC_PREFIX = 'AFC' SPLIT_STR = '_' BUSINESS_TYPE_LIST = [HIL_PREFIX, AFC_PREFIX] HIL_SET = {'HIL', 'HIl', 'HiL', 'Hil', 'hIL', 'hIl', 'hiL', 'hil', 'CO00002'} PRIORITY_WORDS = {'muw', 'MUW', '42', 42} TMP_DIR_NAME = 'OCR_Files' # -------EDMS相关--------------------------------------------------------------------------------------------------- SESSION_PREFIX = 'FHLSID' CUSTOM_CLIENT = 'CustomClient' FIXED_TOKEN = '00000000-0000-0000-0000-000000000000' FIXED_FILE_SIZE = 0 DOWNLOAD_ACTION_TYPE = 'Downloaded' DOC_SCHEMA_ID_FILL = { 'ACCEPTANCE': (1, 'DFE-AutoFilingScript'), 'SETTLEMENT': (20, 'DFE-AutoFilingScript'), 'CONTRACTMANAGEMENT': (86, 'Schema-Based') } BUSINESS_TYPE_DICT = { HIL_PREFIX: 'CO00002', AFC_PREFIX: 'CO00001' } DOC_SCHEMA_TYPE = 'ElectronicRecord' APPLICATION_ID_META_FIELD_id = 1 DEALER_CODE_META_FIELD_id = 13 BUSINESS_TYPE_META_FIELD_id = 93 RETRY_TIMES = 2 # ---------银行流水模板相关-------------------------------------------------------------------------------------------- TRANS_MAP = { 'C': "0", 'c': "0", '(': "0", 'o': "0", 'O': "0", 'D': "0", 'U': "0", 'n': "0", '[': "1", ']': "1", 'l': "1", 'L': "1", 'z': "2", 'Z': "2", 'A': "4", 's': "5", 'S': "5", 'b': "6", 'g': "9", 'E': "9", 'B': "13", } TRANS = str.maketrans(TRANS_MAP) SHEET_TITLE_TRANS_MAP = { '/': "", '\\': "", '?': "", '*': "", '[': "", ']': "", ':': "", ':': "", } SHEET_TITLE_TRANS = str.maketrans(SHEET_TITLE_TRANS_MAP) ERROR_CARD = '异常卡号' ERROR_CHARS = {'.', '。', ':', ':', '•', '·', ',', ','} RES_SHEET_NAME = '结果统计' RES_SHEET_HEADER = ('页码', '图片序号', '检测图片序号', '结果') RES_SUCCESS = '识别成功' RES_SUCCESS_OTHER = '识别成功(其他类)' RES_SUCCESS_EMPTY = '识别成功(空数据)' RES_FAILED = '识别失败' RES_FAILED_1 = '识别失败(阶段1)' RES_FAILED_2 = '识别失败(阶段2)' RES_FAILED_3 = '识别失败(阶段1数据格式错误)' RES_FAILED_SET = {RES_FAILED, RES_FAILED_1, RES_FAILED_2, RES_FAILED_3} CARD_RATIO = 0.9 UNKNOWN_CARD = '未知卡号' UNKNOWN_ROLE = '未知户名' DATE_FORMAT = ['%Y年%m月%d日', '%Y/%m/%d', '%Y-%m-%d', '%Y%m%d'] PROOF_COL_TITLE = '核对结果' PROOF_RES = ('对', '错') META_SHEET_TITLE = '关键信息提取和展示' SUMMARY_KEY = 'summary_col' DATE_KEY = 'date_col' AMOUNT_KEY = 'amount_col' OVER_KEY = 'over_col' IMCOME_KEY = 'income_col' OUTLAY_KEY = 'outlay_col' BORROW_KEY = 'borrow_col' MIN_ROW_KEY = 'min_row' FIND_COUNT_KEY = 'find_count' FIND_COL_KEY = 'find_col' HEADER_KEY = 'header' KEY_LIST = [SUMMARY_KEY, DATE_KEY, OVER_KEY, BORROW_KEY, AMOUNT_KEY, IMCOME_KEY, OUTLAY_KEY] CLASSIFY_MAP = { SUMMARY_KEY: 5, DATE_KEY: 0, AMOUNT_KEY: 2, OVER_KEY: 3, IMCOME_KEY: 11, OUTLAY_KEY: 12, BORROW_KEY: 10, } FIXED_HEADERS = ('记账日期', '记账时间', '金额', '余额', '交易名称', '附言', '对方账户名', '对方卡号/账号', '对方开户行', '核对结果', '借贷', '收入', '支出') FIXED_COL_AMOUNT = len(FIXED_HEADERS) BASE_HEADERS_MAPPING = {label: idx + 1 for idx, label in enumerate(FIXED_HEADERS)} BORROW_HEADER_COL = BASE_HEADERS_MAPPING['借贷'] INCOME_HEADER_COL = BASE_HEADERS_MAPPING['收入'] OUTLAY_HEADER_COL = BASE_HEADERS_MAPPING['支出'] RESULT_HEADER_COL = BASE_HEADERS_MAPPING['核对结果'] BORROW_IDX = BORROW_HEADER_COL - 1 INCOME_IDX = INCOME_HEADER_COL - 1 OUTLAY_IDX = OUTLAY_HEADER_COL - 1 SUMMARY_IDX = FIXED_HEADERS.index('附言') DATE_IDX = FIXED_HEADERS.index('记账日期') AMOUNT_IDX = FIXED_HEADERS.index('金额') OVER_IDX = FIXED_HEADERS.index('余额') RESULT_IDX = FIXED_HEADERS.index('核对结果') # '借贷': ('贷', '借'), # 竖版-无表格-广发银行 # '借贷状态': ('贷', '借'), # 竖版-特殊-交通银行 # '收/支': ('收入', '支出'), # 横版-表格-北京银行 BORROW_HEADERS_SET = {'借贷', '借\n贷', '借贷状态', '收/支', '收支标志'} BORROW_INCOME_SET = {'贷', '收入', '收', '收(Cr)'} BORROW_OUTLAY_SET = {'借', '支出', '支', '付(Dr)'} INCOME_HEADERS_SET = {'收入金额', '收入', '存入', '存入金额(贷)', '存入金额(贷)'} OUTLAY_HEADERS_SET = {'支出金额', '支出', '支取金额(借)', '支取金额(借)'} # ------------------普通打印-全格线-------------------------------------------------------------------------------------- HEADERS_MAPPING = {} # 借贷 HEADERS_MAPPING.update( { '借贷': BORROW_KEY, '借\n贷': BORROW_KEY, '借贷状态': BORROW_KEY, '收支标志': BORROW_KEY, '收/支': BORROW_KEY, } ) # 收入 HEADERS_MAPPING.update( { '收入金额': IMCOME_KEY, '收入': IMCOME_KEY, '存入': IMCOME_KEY, '存入金额(贷)': IMCOME_KEY, '存入金额(贷)': IMCOME_KEY, } ) # 支出 HEADERS_MAPPING.update( { '支出金额': OUTLAY_KEY, '支出': OUTLAY_KEY, '支取': OUTLAY_KEY, '支取金额(借)': OUTLAY_KEY, '支取金额(借)': OUTLAY_KEY, } ) # 横版-表格-中国银行(不规则) HEADERS_MAPPING.update( { '记账日期': DATE_KEY, '金额': AMOUNT_KEY, '余额': OVER_KEY, # '附言': SUMMARY_KEY, '交易名称': SUMMARY_KEY, } ) # 横版-表格-农业银行-中国农业银行个人账户明细 HEADERS_MAPPING.update( { '交易日期': DATE_KEY, # '存入': AMOUNT_KEY, '摘要': SUMMARY_KEY, } ) # 横版-表格-北京银行 HEADERS_MAPPING.update( { '业务摘要': SUMMARY_KEY, '发生额': AMOUNT_KEY, } ) # 横版-表格-工商银行 借记卡账户历史明细清单 # 横版-表格-工商银行-机打验证码 借记卡账户历史明细清单 # 横版-表格-工商银行CH-B008802400 # 横版-表格-工商银行 工资明细清单 # 工商银行历史明细(申请单号:20042501303039397888) HEADERS_MAPPING.update( { '收入/支出金额': AMOUNT_KEY, '工作日期': DATE_KEY, } ) # 横版-表格-建设银行-个人活期账户交易明细 # 竖版-表格-建设银行-个人活期账户交易明细 CH-B005832604 # 竖版-表格-建设银行-工资账单CH-B008786812 # 竖版-表格-建设银行-个人活期账户交易明细 CH-B005832604 (2) HEADERS_MAPPING.update( { '交易金额': AMOUNT_KEY, '账户余额': OVER_KEY, } ) # 微信 HEADERS_MAPPING.update( { '交易类型': SUMMARY_KEY, '金额(元)': AMOUNT_KEY, '金额(元)': AMOUNT_KEY, } ) # 支付宝 HEADERS_MAPPING.update( { '时间': DATE_KEY, '名称/备注': SUMMARY_KEY, } ) # ------------普通打印-部分格线------------------------------------------------------------------------------------------- # 竖版-无表格-农业银行 # 竖版-无表格-农业银行CH-B008805428 HEADERS_MAPPING.update( { '摘要/附言': SUMMARY_KEY, } ) # 农业银行-窄页 # 竖版-特殊-农商行 HEADERS_MAPPING.update( { '交易发生额': AMOUNT_KEY, } ) # 横版-特殊-中信银行-账户交易明细 HEADERS_MAPPING.update( { '交易摘要': SUMMARY_KEY, } ) # 平安电子账单 HEADERS_MAPPING.update( { '借贷发生额(借:-贷:+)': AMOUNT_KEY, '借贷发生额(借:-贷:+)': AMOUNT_KEY, } ) # ------------普通打印-无格线-------------------------------------------------------------------------------------------- # 竖版-无表格-招商银行(略歪) # 竖版-无表格-招商银行账户历史交易明细表 HEADERS_MAPPING.update( { '联机余额': OVER_KEY, '联机金额': OVER_KEY, } ) # 竖版-无表格-邮储银行-账户对账单 含有对手方户名 对手方账户 # 竖版-无表格-邮储银行 账户对账单 # 竖版-无表格-邮储银行-电子章 邮储银行 账户对账单 HEADERS_MAPPING.update( { '交易金额(元)': AMOUNT_KEY, '交易金额(元)': AMOUNT_KEY, '账户余额(元)': OVER_KEY, '账户余额(元)': OVER_KEY, } ) # 横版-无表格-广发银行-账户交易历史 --> 已废弃 # 竖版-无表格-广发银行-账户交易历史 --> 已废弃 HEADERS_MAPPING.update( { '会计日期': DATE_KEY, } ) # 招行电子账单 TODO 有英文,需测试 HEADERS_MAPPING.update( { '摘要代码': SUMMARY_KEY, } ) # 横版-无表格-民生银行-中国民生银行个人账户对账单(客户卡号) # 横版-无表格-民生银行-无标题(客户账户) # 横版-无表格-民生银行 HEADERS_MAPPING.update( { '摘要信息': SUMMARY_KEY, } ) # 竖版-无表格-农业银行整数 # 竖版-无表格-农业银行-中国农业银行银行卡交易明细清单 # 竖版-无表格-农业银行-中国农业银行银行卡活期存折交易明细清单.pdf # 竖版-无表格-农业银行-扩张.pdf # 竖版-无表格-农业银行-缩进.pdf HEADERS_MAPPING.update( { '日期': DATE_KEY, '短摘要': SUMMARY_KEY, '本次余额': OVER_KEY, } ) # 竖版-无表格-农业银行-无标题(对手帐号) HEADERS_MAPPING.update( { '交易后余额': OVER_KEY, } ) # 竖版-无表格-农商行(非常规) HEADERS_MAPPING.update( { '交易说明': SUMMARY_KEY, } ) # 竖版-无表格-工商银行 抬头三行 活期历史明细清单 # -----------针式打印-全格线-------------------------------------------------------------------------------------------- # 竖版-表格-建设银行-中国建设银行活期账户交易明细 # 竖版-表格-建设银行-中国建设银行活期账户明细清单 # 竖版-表格-建设银行-对私活期账户明细- (1).pdf HEADERS_MAPPING.update( { '帐户余额': OVER_KEY, } ) # 竖版-特殊-交通银行 零售客户交易清单 5000以上交易记录 HEADERS_MAPPING.update( { '交易日期 记账日期': DATE_KEY, } ) # ----------针式打印-部分格线------------------------------------------------------------------------------------------ # 竖版-特殊-邮储银行-一本通绿卡通交易明细(客户) # 竖版-特殊-邮储银行-账户交易明细(客户) # -------------------------------------------------------------------------------------------------------------------- # ('记账日期', '记账时间', '金额', '余额', '交易名称', '附言', '对方账户名', '对方卡号/账号', '对方开户行', '核对结果', '借贷', '收入', '支出') # CLASSIFY_LIST = [ # # --------------普通打印:全格线--------------------------------- # # 中国银行:记账日期 记账时间 币别 金额 余额 交易名称 渠道 网点名称 附言 对方账户名 对方卡号/账号 对方开户行 # ('中国银行', (1, 2, 4, 5, 6, 6, 10, 11, 12, None, None, None, None)), # 横版-表格-中国银行(不规则) # # # 农业银行:交易日期 交易网点 存入 支出 余额 对方账号 对方名称 摘要 渠道 附言 # ('农业银行-10', (1, None, None, 5, None, 8, 7, 6, None, None, None, 3, 4)), # 横版-表格-农业银行-中国农业银行个人账户明细 # # # 农业银行:序号 日期 摘要 交易金额 余额 对方账号 对方名称 交易地点 渠道 附言 # ('农业银行-10-1', (2, None, 4, 5, None, 3, 7, 6, None, None, None, None, None)), # # # 农业银行:交易日期 摘要 交易金额 余额 交易渠道 交易网点 对方账号 对方名称 附言 # ('农业银行-9', (1, None, 3, 4, None, 2, 8, 7, None, None, None, None, None)), # # # 北京银行:交易日期 业务摘要 收/支 发生额 余额 对方户名 对方账号 交易渠道 # ('北京银行', (1, None, 4, 5, None, 2, 6, 7, None, None, 3, None, None)), # 横版-表格-北京银行 # # # 工商银行:交易日期 账号 储种 序号 币种 钞汇 摘要 地区 收入/支出金额 余额 渠道 # ('工商银行', (1, None, 9, 10, None, 7, None, None, None, None, None, None, None)), # # # 工商银行:交易日期 账号 储种 序号 币种 钞汇 摘要 地区 收入/支出金额 余额 对方户名 对方账号 渠道 # ('工商银行-电子账单', (1, None, 9, 10, None, 7, 11, 12, None, None, None, None, None)), # # # 建设银行:空 摘要 交易日期 交易金额 账户余额 商户/网点号及其名称 对方账号与户名 --> 竖版-表格-建设银行 # # 序号 摘要 币别 钞汇 交易日期 交易金额 账户余额 交易地点附言 对方账号与户名 --> 横版-表格-建设银行 # ('建设银行-竖版', (3, None, 4, 5, None, 2, None, 7, None, None, None, None, None)), # ('建设银行-横版', (5, None, 6, 7, None, 2, None, 9, None, None, None, None, None)), # # # 微信:交易单号 交易时间 交易类型 收/支/其他 交易方式 金额(元) 交易对方 商户单号 # ('微信', (2, None, 6, None, None, 3, 7, None, None, None, None, None, None)), # # # 支付宝:流水号 时间 名称/备注 收入 支出 账户余额 资金渠道 # ('支付宝', (2, None, None, 6, None, 3, None, None, None, None, None, 4, 5)), # # # -----------------普通打印:部分格线-------------------------------- # # # 农业银行:交易日期 摘要/附言 交易金额 余额 交易地点/对方账号和户名 # ('农业银行-5', (1, None, 3, 4, None, 2, None, 5, None, None, None, None, None)), # # # 农业银行:日期 地点 摘要 存入 支出 余额 对方账号 对方户名 # ('农业银行-8', (1, None, None, 6, None, 3, 8, 7, None, None, None, 4, 5)), # # 农业银行:日期 摘要 交易金额 余额 地点 交易对手账号 对方户名 # ('农业银行-窄页', (1, None, 3, 4, None, 2, 7, 6, None, None, None, None, None)), # # # 农商行:交易日期 交易发生额 账户余额 对方账号 对方户名 摘要 备注 # ('农商行', (1, None, 2, 3, None, 6, 5, 4, None, None, None, None, None)), # # # 中信银行:交易日期 交易摘要 收入金额 支出金额 账户余额 对方户名 对方账号 对方银行 交易流水号 # ('中信银行', (1, None, None, 5, None, 2, 6, 7, 8, None, None, 3, 4)), # # # 平安电子账单:序号 交易日期 交易网点 摘要 借贷发生额(借:-贷:+) 账户余额 # ('平安电子账单', (2, None, 5, 6, None, 4, None, None, None, None, None, None, None)), # # 建设银行:序号 摘要 币别 钞汇 交易日期 交易金额 账户余额 交易地点附言 对方账号与户名 # ('建设银行-电子账单', (5, None, 6, 7, None, 2, None, 9, None, None, None, None, None)), # # # -----------------普通打印:无格线------------------------------------- # # # 招商银行:记账日期 货币 交易金额 联机余额 冲补账 交易摘要 # ('招商银行', (1, None, 3, 4, None, 6, None, None, None, None, None, None, None)), # # # 邮储银行:交易日期、交易类型 交易币种 交易金额(元) 账户余额(元) [对手方户名 对手方账户 收支类型] --> 竖版-无表格-邮储银行-账户对账单 含有对手方户名 对手方账户 # # 交易日期、交易类型 交易金额(元) 账户余额(元) 操作柜员 --> 竖版-无表格-邮储银行 账户对账单 # ('邮储银行-8', (1, None, 4, 5, None, 2, 6, 7, None, None, None, None, None)), # ('邮储银行-5', (1, None, 3, 4, None, 2, None, None, None, None, None, None, None)), # # # 工商银行电子版:交易日期 账号 储种 序号 币种 妙汇 摘要 地区 收入/支出金额 余额 [对方户名 对方账号] 渠道 # ('工商银行电子版', (1, None, 9, 10, None, 7, None, None, None, None, None, None, None)), # # # 招商银行电子版:记账日期 货币 交易金额 联机余额 交易摘要 对手信息 # ('招商银行电子版', (1, None, 3, 4, None, 5, 6, None, None, None, None, None, None)), # # # 民生银行:凭证类型 凭证号码 摘要信息 交易时间 交易金额 账户余额 现转标志 交易渠道 交易机构 对方户名 对方行名 --> 横版-无表格-民生银行-中国民生银行个人账户对账单(客户卡号) # # 凭证类型 凭证号码 交易时间 摘要 交易金额 账户余额 现转标志 交易渠道 交易机构 对方户名 对方行名 --> 横版-无表格-民生银行 # ('民生银行', (None, None, 5, 6, None, None, 7, None, 8, None, None, None, None)), # # # 农业银行:交易日期 摘要/附言 交易金额 对方账号和户名 # ('农业银行-整数', (1, None, 3, None, None, 2, None, 4, None, None, None, None, None)), # # # 农业银行:交易日期 摘要/附言 交易金额 余额 交易地点/对方账号和户名 # ('农业银行', (1, None, 3, 4, None, 2, None, 5, None, None, None, None, None)), # # # 农业银行:日期、时间、短摘要、交易金额、本次余额、交易网点、渠道、附言 # # 农业银行:日期、时间、日志号、短摘要、交易金额、本次余额、交易网点、渠道、附言 # ('农业银行', (1, 2, 4, 5, None, 3, None, None, None, None, None, None, None)), # ('农业银行-扩张缩进', (1, 2, 5, 6, None, 4, None, None, None, None, None, None, None)), # # # 交通银行:交易日期 记账日期、交易地点、交易类型、借贷状态、交易金额、余额 # ('交通银行', (1, None, 6, 7, None, 4, None, None, None, None, 5, None, None)), # # # # ================针式打印:有格线=================== # # # 建设银行: 摘要、交易日期、交易金额、账户余额、商户/网点号及其名称、对方账号、对方户名 --> 竖版-表格-建设银行-中国建设银行活期账户明细清单 # # 交易日期、摘要、 币种、 钞汇、 交易金额、 帐户余额、对方账号、 对方帐户名称 --> 竖版-表格-建设银行-对私活期账户明细- (1) # ('建设银行', (None, None, None, None, None, None, None, None, None, None, None, None, None)), # # # # ================针式打印:无格线=================== # # # 邮储银行:序号、交易日期、交易渠道、摘要、交易金额、账户余额、对方账号/卡号/汇票号、原子账号、交易机构名称 # ('邮储银行', (2, None, 5, 6, None, 4, None, 7, None, None, None, None, None)), # ] OTHER_TUPLE = (None, None, None, None, None, None, None, None, None, None, None, None, None) # "4":"普通打印-全表格-中国银行", # "5":"普通打印-全表格-农业银行-10列", # "6":"普通打印-全表格-农业银行-10列-1", # "7":"普通打印-全表格-农业银行-9列", # "8":"普通打印-全表格-北京银行", # "9":"普通打印-全表格-工商银行", # "10":"普通打印-全表格-工商银行-电子账单", # "11":"普通打印-全表格-建设银行", # "12":"普通打印-全表格-微信账单", # "13":"普通打印-全表格-支付宝账单", # "14":"普通打印-无格线-交通银行", # "15":"普通打印-无格线-储蓄银行-5列", # "16":"普通打印-无格线-储蓄银行-8列", # "17":"普通打印-无格线-农业银行-扩张缩进", # "18":"普通打印-无格线-农业银行-整数", # "19":"普通打印-无格线-招商银行", # "20":"普通打印-无格线-招商银行-电子账单", # "21":"普通打印-无格线-民生银行", # "22":"普通打印-部分格线-横版-中信银行", # "23":"普通打印-部分格线-竖版-农业银行-5列", # "24":"普通打印-部分格线-竖版-农业银行-8列", # "25":"普通打印-部分格线-竖版-农业银行-窄页", # "26":"普通打印-部分格线-竖版-平安电子账单", # "27":"普通打印-部分格线-竖版-建设银行-电子账单", # "34":"针式打印-全格线-建设银行", # "35":"针式打印-部分格线-竖版-邮储银行", # "36":"针式打印-部分格线-竖版-邮储银行-绿卡", # "50":"普通打印-无格线-农业银行-整数-特殊", CLASSIFY_LIST = [ ('其他', OTHER_TUPLE), ('其他', OTHER_TUPLE), ('其他', OTHER_TUPLE), ('其他', OTHER_TUPLE), ('普通打印-全表格-中国银行', (1, 2, 4, 5, 6, 6, 10, 11, 12, None, None, None, None)), ('普通打印-全表格-农业银行-10列', (1, None, None, 5, None, 8, 7, 6, None, None, None, 3, 4)), ('普通打印-全表格-农业银行-10列-1', (2, None, 4, 5, None, 3, 7, 6, None, None, None, None, None)), ('普通打印-全表格-农业银行-9列', (1, None, 3, 4, None, 2, 8, 7, None, None, None, None, None)), ('普通打印-全表格-北京银行', (1, None, 4, 5, None, 2, 6, 7, None, None, 3, None, None)), ('普通打印-全表格-工商银行', (1, None, 9, 10, None, 7, None, None, None, None, None, None, None)), ('普通打印-全表格-工商银行-电子账单', (1, None, 9, 10, None, 7, 11, 12, None, None, None, None, None)), ('普通打印-全表格-建设银行', (3, None, 4, 5, None, 2, None, 7, None, None, None, None, None)), ('普通打印-全表格-微信账单', (2, None, 6, None, None, 3, 7, None, None, None, None, None, None)), ('普通打印-全表格-支付宝账单', (2, None, None, 6, None, 3, None, None, None, None, None, 4, 5)), ('普通打印-无格线-交通银行', (1, None, 6, 7, None, 4, None, None, None, None, 5, None, None)), ('普通打印-无格线-储蓄银行-5列', (1, None, 3, 4, None, 2, None, None, None, None, None, None, None)), ('普通打印-无格线-储蓄银行-8列', (1, None, 4, 5, None, 2, 6, 7, None, None, None, None, None)), ('普通打印-无格线-农业银行-扩张缩进', (1, 2, 5, 6, None, 4, None, None, None, None, None, None, None)), ('普通打印-无格线-农业银行-整数', (1, None, 3, None, None, 2, None, 4, None, None, None, None, None)), ('普通打印-无格线-招商银行', (1, None, 3, 4, None, 6, None, None, None, None, None, None, None)), ('普通打印-无格线-招商银行-电子账单', (1, None, 3, 4, None, 5, 6, None, None, None, None, None, None)), ('普通打印-无格线-民生银行', (None, None, 5, 6, None, None, 7, None, 8, None, None, None, None)), ('普通打印-部分格线-横版-中信银行', (1, None, None, 5, None, 2, 6, 7, 8, None, None, 3, 4)), ('普通打印-部分格线-竖版-农业银行-5列', (1, None, 3, 4, None, 2, None, 5, None, None, None, None, None)), ('普通打印-部分格线-竖版-农业银行-8列', (1, None, None, 6, None, 3, 8, 7, None, None, None, 4, 5)), ('普通打印-部分格线-竖版-农业银行-窄页', (1, None, 3, 4, None, 2, 7, 6, None, None, None, None, None)), ('普通打印-部分格线-竖版-平安电子账单', (2, None, 5, 6, None, 4, None, None, None, None, None, None, None)), ('普通打印-部分格线-竖版-建设银行-电子账单', (5, None, 6, 7, None, 2, None, 9, None, None, None, None, None)), ('其他', OTHER_TUPLE), ('其他', OTHER_TUPLE), ('其他', OTHER_TUPLE), ('其他', OTHER_TUPLE), ('其他', OTHER_TUPLE), ('其他', OTHER_TUPLE), ('针式打印-全格线-建设银行', OTHER_TUPLE), ('针式打印-部分格线-竖版-邮储银行', (2, None, 5, 6, None, 4, None, 7, None, None, None, None, None)), ('针式打印-部分格线-竖版-邮储银行-绿卡', (2, None, 5, 6, None, 4, None, 7, None, None, None, None, None)), ('其他', OTHER_TUPLE), ('其他', OTHER_TUPLE), ('其他', OTHER_TUPLE), ('其他', OTHER_TUPLE), ('其他', OTHER_TUPLE), ('其他', OTHER_TUPLE), ('其他', OTHER_TUPLE), ('其他', OTHER_TUPLE), ('其他', OTHER_TUPLE), ('其他', OTHER_TUPLE), ('其他', OTHER_TUPLE), ('其他', OTHER_TUPLE), ('其他', OTHER_TUPLE), ('普通打印-无格线-农业银行-整数-特殊', (1, None, 3, 4, None, 2, None, 5, None, None, None, None, None)), ] CLASSIFY_HEADER_LIST = [ OTHER_TUPLE, OTHER_TUPLE, OTHER_TUPLE, OTHER_TUPLE, ('记账日期', '记账时间', '币别', '金额', '余额', '交易名称', '渠道', '网点名称', '附言', '对方账户名', '对方卡号/账号', '对方开户行'), ('交易日期', '交易网点', '存入', '支出', '余额', '对方账号', '对方名称', '摘要', '渠道', '附言'), ('序号', '日期', '摘要', '交易金额', '余额', '对方账号', '对方名称', '交易地点', '渠道', '附言'), ('交易日期', '摘要', '交易金额', '余额', '交易渠道', '交易网点', '对方账号', '对方名称', '附言'), ('交易日期', '业务摘要', '收/支', '发生额', '余额', '对方户名', '对方账号', '交易渠道'), ('交易日期', '账号', '储种', '序号', '币种', '钞汇', '摘要', '地区', '收入/支出金额', '余额', '渠道'), ('交易日期', '账号', '储种', '序号', '币种', '钞汇', '摘要', '地区', '收入/支出金额', '余额', '对方户名', '对方账号', '渠道'), (None, '摘要', '交易日期', '交易金额', '账户余额', '商户/网点号及其名称', '对方账号与户名'), ('交易单号', '交易时间', '交易类型', '收/支/其他', '交易方式', '金额(元)', '交易对方', '商户单号'), ('流水号', '时间', '名称/备注', '收入', '支出', '账户余额', '资金渠道'), ('交易日期', '记账日期', '交易地点', '交易类型', '借贷状态', '交易金额', '余额'), ('交易日期', '交易类型', '交易金额(元)', '账户余额(元)', '操作柜员'), ('交易日期', '交易类型', '交易币种', '交易金额(元)', '账户余额(元)', '对手方户名', '对手方账户', '收支类型'), ('日期', '时间', '日志号', '短摘要', '交易金额', '本次余额', '交易网点', '渠道', '附言'), ('交易日期', '摘要/附言', '交易金额', '对方账号和户名'), ('记账日期', '货币', '交易金额', '联机余额', '冲补账', '交易摘要'), ('记账日期', '货币', '交易金额', '联机余额', '交易摘要', '对手信息'), ('凭证类型', '凭证号码', '交易时间', '摘要', '交易金额', '账户余额', '现转标志', '交易渠道', '交易机构', '对方户名', '对方行名'), ('交易日期', '交易摘要', '收入金额', '支出金额', '账户余额', '对方户名', '对方账号', '对方银行', '交易流水号'), ('交易日期', '摘要/附言', '交易金额', '余额', '交易地点/对方账号和户名'), ('日期', '地点', '摘要', '存入', '支出', '余额', '对方账号', '对方户名'), ('日期', '摘要', '交易金额', '余额', '地点', '交易对手账号', '对方户名'), ('序号', '交易日期', '交易网点', '摘要', '借贷发生额(借:-贷:+)', '账户余额'), ('序号', '摘要', '币别', '钞汇', '交易日期', '交易金额', '账户余额', '交易地点附言', '对方账号与户名'), OTHER_TUPLE, OTHER_TUPLE, OTHER_TUPLE, OTHER_TUPLE, OTHER_TUPLE, OTHER_TUPLE, OTHER_TUPLE, ('序号', '交易日期', '交易渠道', '摘要', '交易金额', '账户余额', '对方账号/卡号/汇票号', '原子账号', '交易机构名称'), ('序号', '交易日期', '交易渠道', '摘要', '交易金额', '账户余额', '对方账号/卡号/汇票号', '原子账号', '交易机构名称'), OTHER_TUPLE, OTHER_TUPLE, OTHER_TUPLE, OTHER_TUPLE, OTHER_TUPLE, OTHER_TUPLE, OTHER_TUPLE, OTHER_TUPLE, OTHER_TUPLE, OTHER_TUPLE, OTHER_TUPLE, OTHER_TUPLE, OTHER_TUPLE, ('交易日期', '摘要/附言', '交易金额', '账户余额', '对方账号和户名'), ] # ----------license相关------------------------------------------------------------------------------------------------ # "0":"AVT Invioce", # "1":"二手车发票", # "2":"其他", # "3":"护照", # "28":"机动车登记证", # "29":"机动车销售统一发票", # "30":"港澳通行证", # "31":"营业执照", # "32":"行驶证", # "33":"身份证", # "37":"银行卡" # 其他 OTHER_CLASSIFY = 2 # 身份证 IC_CN_NAME = '身份证' IC_CLASSIFY = 33 IC_TURE_OR_FALSE = '真伪' IC_FIELD_ORDER_0 = ((IC_TURE_OR_FALSE, '身份证'), ('姓名', '姓名'), ('公民身份号码', '公民身份号码'), ('出生年月', '出生年月'), ('住址', '住址'), ('性别', '性别'), ('民族', '民族'),) IC_FIELD_ORDER_1 = ((IC_TURE_OR_FALSE, '身份证'), ('有效期限', '有效期限'), ('签发机关', '签发机关'),) # 居住证 RP_CN_NAME = '居住证' RP_CLASSIFY = 10087 RP_FIELD_ORDER_0 = (('姓名', '姓名'), ('公民身份号码', '公民身份号码'), ('出生年月', '出生年月'), ('住址', '住址'), ('性别', '性别'),) RP_FIELD_ORDER_1 = (('有效期限', '有效期限'), ('签发机关', '签发机关'), ('通行证号码', '通行证号码')) # 增值税普票 VAT_CN_NAME = 'VAT普票' VAT_CLASSIFY = 0 VAT_FIELD_ORDER = (('发票代码', '发票代码'), ('发票代码_开具', '发票代码(开具)'), ('发票号码', '发票号码'), ('发票号码_开具', '发票号码(开具)'), ('开票日期', '开票日期'), ('校验码', '校验码'), ('货物或应税劳务、服务名称', '货物或应税劳务、服务名称'), ('金额合计', '开具金额合计(不含税)'), ('税率', '税率'), ('税额合计', '税额合计'), ('价税合计小写', '价税合计(小写)'), ('价税合计大写', '价税合计(大写)'), ('购方名称', '购买方名称'), ('购方纳税人识别号', '购买方纳税人识别号'), ('购方地址、电话', '购买方地址、电话'), ('购方开户行及账号', '购买方开户行及账号'), ('销方名称', '销售方名称'), ('销方纳税人识别号', '销售方纳税人识别号'), ('销方地址、电话', '销售方地址、电话'), ('销方开户行及账号', '销售方开户行及账号'), ('下盖章', '销售方:(章)'), ('备注', '备注'),) # 增值税专票 VATS_CN_NAME = 'VAT专票' VATS_CLASSIFY = 10088 VATS_FIELD_ORDER = (('发票代码', '发票代码'), ('发票代码_开具', '发票代码(开具)'), ('发票号码', '发票号码'), ('发票号码_开具', '发票号码(开具)'), ('开票日期', '开票日期'), ('校验码', '校验码'), ('货物或应税劳务、服务名称', '货物或应税劳务、服务名称'), ('金额合计', '开具金额合计(不含税)'), ('税率', '税率'), ('税额合计', '税额合计'), ('价税合计小写', '价税合计(小写)'), ('价税合计大写', '价税合计(大写)'), ('购方名称', '购买方名称'), ('购方纳税人识别号', '购买方纳税人识别号'), ('购方地址、电话', '购买方地址、电话'), ('购方开户行及账号', '购买方开户行及账号'), ('销方名称', '销售方名称'), ('销方纳税人识别号', '销售方纳税人识别号'), ('销方地址、电话', '销售方地址、电话'), ('销方开户行及账号', '销售方开户行及账号'), ('下盖章', '销售方:(章)'), ('车船税', '车船税'), ('备注', '备注'),) # 机动车登记证书 MVC_CN_NAME = '机动车登记证书' MVC_CLASSIFY = 28 MVC_CLASSIFY_SE = 10086 MVC_FIELD_ORDER_1_2 = (('1.机动车所有人/身份证名称/号码', '机动车所有人/身份证明名称/号码'), ('3.登记日期', '登记日期'), ('9.车辆识别代号/车架号', '车辆识别代号/车架号'), ('32.车辆出厂日期', '车辆出厂日期'), ('34.发证日期', '发证日期'), ('30.使用性质', '使用性质'), ('31.车辆获得方式', '车辆获得方式'), ('4.机动车登记编号', '机动车登记编号'), ('空行占位', None), ('5.车辆类型', '车辆类型'), ('6.车辆品牌', '车辆品牌'), ('7.车辆型号', '车辆型号'), ('8.车身颜色', '车身颜色'), ('10.国产/进口', '国产/进口'), ('11.发动机号', '发动机号'), ('12.发动机型号', '发动机型号'), ('15.制造厂名称', '制造厂名称'), ('2.登记机关', '登记机关'), ('编号', '机动车登记证书编号'),) MVC_FIELD_ORDER_3_4 = ( ('机动车登记证书编号', '机动车登记证书编号'), ('姓名/名称', '姓名/名称'), ('身份证名称/号码', '身份证明名称/号码'), ('获得方式', '获得方式'), ('转入地车辆管理所名称', '转入地车辆管理所名称'), ('机动车登记编号', '机动车登记编号'), ('转移登记日期', '转移登记日期'), ('抵押权人姓名/名称', '抵押权人姓名/名称'), ('身份证明名称/号码', '抵押身份证明名称/号码'), ('抵押登记日期', '抵押登记日期'), ('解除抵押日期', '解除抵押日期'), ) MVC_SE_FIELD_ORDER_1_2 = (('9.车辆识别代号/车架号', '车辆识别代号/车架号'), ('1.机动车所有人/身份证名称/号码', '机动车所有人/身份证明名称/号码'), ('空行占位', None), ('3.登记日期', '登记日期'), ('32.车辆出厂日期', '车辆出厂日期'), ('34.发证日期', '发证日期'), ('30.使用性质', '使用性质'), ('31.车辆获得方式', '车辆获得方式'), ('5.车辆类型', '车辆类型'), ('6.车辆品牌', '车辆品牌'), ('7.车辆型号', '车辆型号'), ('8.车身颜色', '车身颜色'), ('10.国产/进口', '国产/进口'), ('11.发动机号', '发动机号'), ('12.发动机型号', '发动机型号'), ('13.燃料种类', '燃料种类'), ('14.排量/功率', '排量/功率'), ('15.制造厂名称', '制造厂名称'), ('16.转向形式', '转向形式'), ('17.轮距', '轮距'), ('18.轮胎数', '轮胎数'), ('19.轮胎规格', '轮胎规格'), ('20.钢板弹簧片数', '钢板弹簧片数'), ('21.轴距', '轴距'), ('22.轴数', '轴数'), ('23.外廓尺寸', '外廓尺寸'), ('24.货厢内部尺寸', '货厢内部尺寸'), ('25.总质量', '总质量'), ('26.核定载质量', '核定载质量'), ('27.核定载客', '核定载客'), ('28.准牵引总质量', '准牵引总质量'), ('29.驾驶室载客', '驾驶室载客'), ('2.登记机关', '登记机关'), ('4.机动车登记编号', '机动车登记编号'), ('编号', '机动车登记证书编号'),) MVC_SE_FIELD_ORDER_3_4 = ( ('机动车登记证书编号', '机动车登记证书编号'), ('姓名/名称', '姓名/名称'), ('身份证名称/号码', '身份证明名称/号码'), ('获得方式', '获得方式'), ('转入地车辆管理所名称', '转入地车辆管理所名称'), ('机动车登记编号', '机动车登记编号'), ('转移登记日期', '转移登记日期'), ('抵押权人姓名/名称', '抵押权人姓名/名称'), ('身份证明名称/号码', '抵押身份证明名称/号码'), ('抵押登记日期', '抵押登记日期'), ('解除抵押日期', '解除抵押日期'), ) # 机动车销售统一发票 MVI_CN_NAME = '机动车销售统一发票' MVI_CLASSIFY = 29 MVI_FIELD_ORDER = (('发票代码', '发票代码'), ('发票号码', '发票号码'), ('开票日期', '开票日期'), ('不含税价(逻辑计算)', '不含税价(逻辑计算)'), ('不含税价', '不含税价'), ('发票类型', '发票联'), ('购方名称', '购买方名称'), ('购买方身份证号或组织机构代码', '购买方证件号码'), ('购方纳税人识别号', '纳税人识别号'), ('车辆识别代码', '车架号'), ('价税合计小写', '价税合计小写'), ('销方名称', '销货单位名称'), ('增值税税额', '增值税税额'), ('增值税税率', '增值税税率'), ('销售单位章', '发票章有无'), ('价税合计大写', '价税合计大写'), ('', None), ('发动机号码', '发动机号'), ('车辆类型', '车辆类型'), ('厂牌型号', '厂牌型号'), ('产地', '产地'), ('合格证号', '合格证号'), ('进口证明书号', '进口证明书号'), ('商检单号', '商检单号'), ('电话', '电话'), ('销方纳税人识别号', '销货方纳税人识别号'), ('账号', '账号'), ('地址', '地址'), ('开户银行', '开户银行'), ('主管税务机关及代码', '主管税务机关及代码'), ('吨位', '吨位'), ('限乘人数', '限乘人数'),) IC_PID = VAT_PID = VATS_PID = MVC_PID = MVI_PID = RP_PID = DDA_PID = HMH_PID = JYPZ_PID = INSURANCE_PID = None # 营业执照 BL_CN_NAME = '营业执照' BL_CLASSIFY = 31 BL_PID = 41 BL_FIELD_ORDER = (('注册号', '统一社会信用代码'), ('企业名称', '名称'), ('企业类型', '类型'), ('经营者姓名', '法定代表人'), ('成立日期', '成立日期'), ('营业期限', '营业期限'), ('注册资本', '注册资本'), ('地址', '住所'), ('经营范围', '经营范围'),) # 二手车发票 UCI_CN_NAME = '二手车发票' UCI_CLASSIFY = 1 UCI_PID = 60 UCI_FIELD_ORDER = (('发票代码', '发票代码'), ('发票号码', '发票号码'), ('开票日期', '开票日期'), ('价税合计小写', '车价合计小写'), ('发票类型', '发票联'), ('购方名称', '买方单位/个人'), ('购方纳税人识别号', '买方单位代码/身份证号码'), ('车架号', '车架号'), ('价税合计大写', '车价合计大写'), ('二手车市场', '二手车市场'), ('发票章', '发票章有无'), ('空行占位', None), ('车牌照号', '车牌照号'), ('登记证号', '登记证号'), ('购方地址', '买方单位/住址'), ('车辆类型', '车辆类型'), ('厂牌型号', '厂牌型号'), ('车管所名称', '转入地车辆管理所名称'), ('销方名称', '卖方单位/个人'), ('销方纳税人识别号', '卖方单位代码/身份证号码'), ('销方地址', '卖方单位/个人住址'),) # 港澳台通行证 EEP_CN_NAME = '港澳台通行证' EEP_CLASSIFY = 30 EEP_PID = 1018 EEP_FIELD_ORDER = (('中文名', '姓名'), # 英文名 ('证件号码', '证件号码'), ('签发次数', '换证次数(签发次数)'), ('有效期限', '有效期限'), ('出生日期', '出生日期'), ('性别', '性别'), ('签发机关', '签发机关'), ('签发地点', '签发地点'),) # 行驶证 DL_CN_NAME = '行驶证' DL_CLASSIFY = 32 DL_PID = 5 DL_FIELD_ORDER_0 = (('号牌号码', '1 号牌号码'), ('所有人', '3 所有人'), ('使用性质', '5 使用性质'), ('车辆识别代码', '7 车辆识别代号'), ('注册日期', '9 注册日期'), ('发证日期', '10 发证日期'), ('车辆类型', '2 车辆类型'), ('地址', '4 住址'), ('品牌型号', '6 品牌型号'), ('发动机号', '8 发动机号码'),) DL_FIELD_ORDER_1 = (('号牌号码', '1 号牌号码'), ('档案编号', '11 档案编号'), ('核定载人数', '12 核定载人数'), ('总质量', '13 总质量'), ('整备质量', '14 整备质量'), ('核定载质量', '15 核对载质量'), ('外廓尺寸', '16 外廓尺寸'), ('准牵引总质量', '17 准牵引总质量'),) # 护照 PP_CN_NAME = '护照' PP_CLASSIFY = 3 PP_PID = 8 PP_FIELD_ORDER = (('类型', '类型/Type'), ('英文姓名', '姓名/Name'), ('护照号码', '护照号码/Passport No'), ('有效期至', '有效期至/Date of expiry'), ('签发日期', '签发日期/Date of issue'), ('国家码', '国家码/Country Code'), ('性别', '性别/Sex'), ('国籍', '国籍/Nationality'), ('出生日期', '出生日期/Date of birth'), ('出生地点', '出生地点/Place of birth'), ('签发地点', '签发地点/Place of issue'),) # 银行卡 BC_CN_NAME = '银行卡' BC_CLASSIFY = 37 BC_PID = 4 # BC_FIELD = (('CardNum', '银行卡号'), # ('BankName', '发卡行名称'), # ('CardName', '银行卡名称'), # ('BankCode', '发卡行代号'), # ('CardType', '银行卡类型'), # ('Date', '日期')) BC_FIELD_ORDER = (('BankName', '发卡行名称'), ('CardNum', '银行卡号'), ('CardType', '银行卡类型'), ('Name', '持卡人姓名'),) # DDA DDA_CN_NAME = 'DDA' DDA_CLASSIFY = 38 DDA_IC_NAME = 'customer_name' DDA_IC_ID = 'customer_id' DDA_BC_NAME = 'account_name' DDA_BC_ID = 'account_id' DDA_FIELD_ORDER = (("check_Num", "缴费编号"), (DDA_IC_NAME, "客户"), (DDA_IC_ID, "身份证"), (DDA_BC_NAME, "账户"), (DDA_BC_ID, "账号"), ("check_Num", "签署编号"), ("signature", "客户签名"), ("signature_date", "时间"), ("to_company", "公司名称1"), ("to_bank", "公司名称2"), ("collection_company", "收款企业名称"),) # 抵押登记豁免函 HMH_CN_NAME = '抵押登记豁免函' HMH_CLASSIFY = 40 HMH_FIELD_ORDER = (("借款/承租人姓名", "借款/承租人姓名"), ("证件号码", "证件号码"), ("合同编号", "合同编号"), ("渠道", "渠道"), ("借款人签字/盖章", "借款人签字/盖章")) # 二手车交易凭证 JYPZ_CN_NAME = '二手车交易凭证' JYPZ_CLASSIFY = 39 JYPZ_FIELD_ORDER = (("type", "标题"), ("authorized_dealer", "BMW授权经销商"), ("buyer_name", "购买方名称"), ("buyer_id", "购买方身份证号码/营业执照号码"), ("vin", "车辆识别代号/车架号码"), ("price", "车辆价格"), ("date", "购买方交易日期"), ("date", "出卖方交易日期"), ("date", "经销商交易日期"), ("stamp_signature_buyer", "购买方签字/盖章"), ("stamp_signature_seller", "出卖方签字/盖章"), ("stamp_signature_agent", "经销商签字/盖章"),) # 合同 CONTRACT_CN_NAME = '合同' CONTRACT_CLASSIFY = 41 # 保单 INSURANCE_CN_NAME = '保单' INSURANCE_CLASSIFY = 42 INSURANCE_FIELD_ORDER = (("被保险人姓名", "被保险人姓名"), ("被保险人证件号码", "被保险人证件号码"), ("车架号", "车架号"), ("机动车损失保险金额", "机动车损失保险金额"), ("机动车第三者责任保险金额", "机动车第三者责任保险金额"), ("机动车损失保险绝对免赔率/绝对免赔额", "机动车损失保险绝对免赔率/绝对免赔额"), ("保险费合计", "保险费合计"), ("保险起始日期", "保险起始日期"), ("保险截止日期", "保险截止日期"), ("保单章", "保单章"), ("特别约定第一受益人", "特别约定第一受益人")) SUCCESS_CODE_SET = {'0', 0} FIELD_ORDER_MAP = { IC_CLASSIFY: ('有效期限', IC_FIELD_ORDER_1, IC_FIELD_ORDER_0), RP_CLASSIFY: ('有效期限', RP_FIELD_ORDER_1, RP_FIELD_ORDER_0), DL_CLASSIFY: ('档案编号', DL_FIELD_ORDER_1, DL_FIELD_ORDER_0), MVC_CLASSIFY: ('机动车登记证书编号', MVC_FIELD_ORDER_3_4, MVC_FIELD_ORDER_1_2), MVC_CLASSIFY_SE: ('机动车登记证书编号', MVC_SE_FIELD_ORDER_3_4, MVC_SE_FIELD_ORDER_1_2) } MODEL_FIELD_BS = 'bs_count' MODEL_FIELD_MVI = 'mvi_count' MODEL_FIELD_IC = 'ic_count' MODEL_FIELD_RP = 'rp_count' MODEL_FIELD_BC = 'bc_count' MODEL_FIELD_BL = 'bl_count' MODEL_FIELD_UCI = 'uci_count' MODEL_FIELD_EEP = 'eep_count' MODEL_FIELD_DL = 'dl_count' MODEL_FIELD_PP = 'pp_count' MODEL_FIELD_MVC = 'mvc_count' MODEL_FIELD_VAT = 'vat_count' LICENSE_ORDER = ((MVI_CLASSIFY, (MVI_PID, MVI_CN_NAME, MVI_FIELD_ORDER, False, False, MODEL_FIELD_MVI)), (IC_CLASSIFY, (IC_PID, IC_CN_NAME, None, True, False, MODEL_FIELD_IC)), (RP_CLASSIFY, (RP_PID, RP_CN_NAME, None, True, False, MODEL_FIELD_RP)), (BC_CLASSIFY, (BC_PID, BC_CN_NAME, BC_FIELD_ORDER, False, False, MODEL_FIELD_BC)), (BL_CLASSIFY, (BL_PID, BL_CN_NAME, BL_FIELD_ORDER, False, False, MODEL_FIELD_BL)), (UCI_CLASSIFY, (UCI_PID, UCI_CN_NAME, UCI_FIELD_ORDER, False, False, MODEL_FIELD_UCI)), (EEP_CLASSIFY, (EEP_PID, EEP_CN_NAME, EEP_FIELD_ORDER, False, False, MODEL_FIELD_EEP)), (DL_CLASSIFY, (DL_PID, DL_CN_NAME, None, True, False, MODEL_FIELD_DL)), (PP_CLASSIFY, (PP_PID, PP_CN_NAME, PP_FIELD_ORDER, False, False, MODEL_FIELD_PP)), (MVC_CLASSIFY, (MVC_PID, MVC_CN_NAME, None, True, True, MODEL_FIELD_MVC)), (VAT_CLASSIFY, (VAT_PID, VAT_CN_NAME, VAT_FIELD_ORDER, False, False, MODEL_FIELD_VAT)), (DDA_CLASSIFY, (DDA_PID, DDA_CN_NAME, DDA_FIELD_ORDER, False, False, None)), (HMH_CLASSIFY, (HMH_PID, HMH_CN_NAME, HMH_FIELD_ORDER, False, False, None)), (JYPZ_CLASSIFY, (JYPZ_PID, JYPZ_CN_NAME, JYPZ_FIELD_ORDER, False, False, None)), (INSURANCE_CLASSIFY, (INSURANCE_PID, INSURANCE_CN_NAME, INSURANCE_FIELD_ORDER, False, False, None)), ) FOLDER_LICENSE_ORDER = ((MVI_CLASSIFY, (MVI_PID, MVI_CN_NAME, MVI_FIELD_ORDER, False, False, MODEL_FIELD_MVI)), (IC_CLASSIFY, (IC_PID, IC_CN_NAME, None, True, False, MODEL_FIELD_IC)), (MVC_CLASSIFY, (MVC_PID, MVC_CN_NAME, None, True, True, MODEL_FIELD_MVC)), (VAT_CLASSIFY, (VAT_PID, VAT_CN_NAME, VAT_FIELD_ORDER, False, False, MODEL_FIELD_VAT)), (VATS_CLASSIFY, (VATS_PID, VATS_CN_NAME, VATS_FIELD_ORDER, False, False, MODEL_FIELD_VAT))) LICENSE_CLASSIFY_MAPPING = dict(LICENSE_ORDER) OTHER_CLASSIFY_SET = {OTHER_CLASSIFY} LICENSE_CLASSIFY_SET_1 = {IC_CLASSIFY, VAT_CLASSIFY, MVC_CLASSIFY, MVI_CLASSIFY, UCI_CLASSIFY, DDA_CLASSIFY, HMH_CLASSIFY, JYPZ_CLASSIFY, INSURANCE_CLASSIFY} LICENSE_CLASSIFY_SET_2 = {BL_CLASSIFY, EEP_CLASSIFY, DL_CLASSIFY, PP_CLASSIFY, BC_CLASSIFY} NYYH_CLASSIFY = {17, 18} NYZS_CLASSIFY = 18 SPECIAL_NYZS_CLASSIFY = 50 MS_CLASSIFY = 21 MS_ERROR_COL = (5, 6) WECHART_CLASSIFY = 12 ALI_WECHART_CLASSIFY = {12, 13} WECHART_ERROR_COL = (1, 2) WECHART_HEADERS_MAPPING = copy.deepcopy(HEADERS_MAPPING) WECHART_HEADERS_MAPPING.update( { '交易时间': DATE_KEY, } ) PATTERN_LIST = ['联机金额', '交易名称', '收入/支出金额', '收入', '存入', '支出', '支取', '金额', '余额', '发生额', '借贷', '借贷状态', '收支标志', '收/支', '收入金额', '存入金额(贷)', '存入金额(贷)', '支出金额', '支取金额(借)', '支取金额(借)', '记账日期', '交易日期', '摘要', '业务摘要', '工作日期', '交易金额', '账户余额', '交易类型', '金额(元)', '金额(元)', '时间', '名称/备注', '摘要/附言', '交易发生额', '交易摘要', '借贷发生额(借:-贷:+)', '借贷发生额(借:-贷:+)', '联机余额', '交易金额(元)', '交易金额(元)', '账户余额(元)', '账户余额(元)', '会计日期', '摘要代码', '摘要信息', '日期', '短摘要', '本次余额', '交易后余额', '交易说明', '帐户余额', '交易日期 记账日期'] CN_RE = re.compile(u'[\u4e00-\u9fa5]') IC_RES_MAPPING = { -2: '不是有效证件', -1: '无法判断', 0: '伪造证件', 1: '真实证件', } # ----------------- CA compare --------------------- ENTITY = ['HIL', 'AFC'] CUSTOMER_TYPE = ['TCCOR', 'TCDAS', 'TCFRE', 'TCIAS', 'TCIND', 'TCSEP', 'TCURE'] VEHICLE_STATUS = ['PCUSD', 'PCNEW'] APPLICANT_TYPE = ['CUSTR', 'COAPP', 'GAUTR1', 'GAUTR2'] ID_TYPE = ['ITARI', 'ITHKM', 'ITPRC', 'ITPSP', 'ITRES', 'ITTID', 'ITUSC', 'ITCCU'] SECOND_ID_TYPE = ['ITARI', 'ITHKM', 'ITPRC', 'ITPSP', 'ITRES', 'ITTID'] SUB_TYPE = ['CSIBM', 'CSOTH', 'CSSME'] # GCAP 请求体 BASE_XML_TEXT = """<?xml version="1.0" encoding="utf-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="http://guardean.net/webservices/workflow/vatra_bmwservice/types"> <soapenv:Header/> <soapenv:Body> <typ:executeRequest> <request>{0}</request> </typ:executeRequest> </soapenv:Body> </soapenv:Envelope>""" CDATA_TEXT = """<![CDATA[<Exec xmlns="http://tempuri.org/"><strXMLParm><Request><Framework><UserName>SFCHINA\qqcout0</UserName><GUID>70d0efcb-3bc2-4018-ac4e-681c8f3131b6</GUID><DetailedTracingEnabled>False</DetailedTracingEnabled><ServiceName>AMSWebService</ServiceName><SupportsRedirection>true</SupportsRedirection><ServiceType>Service</ServiceType></Framework><Parms><InputXML type="string">&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;InputXML&gt; &lt;Result&gt; {0} &lt;/Result&gt;&lt;AuthorizationData&gt;&lt;ServiceComponent&gt;OCR&lt;/ServiceComponent&gt;&lt;RoleId/&gt;&lt;CompanyId/&gt;&lt;/AuthorizationData&gt;&lt;/InputXML&gt;</InputXML></Parms></Request></strXMLParm></Exec>]]>""" IC_OCR_FIELD = 'ic_ocr' RP_OCR_FIELD = 'rp_ocr' BL_OCR_FIELD = 'bl_ocr' EEP_OCR_FIELD = 'eep_ocr' DL_OCR_FIELD = 'dl_ocr' PP_OCR_FIELD = 'pp_ocr' MVC_OCR_FIELD = 'mvc_ocr' MVI_OCR_FIELD = 'mvi_ocr' BC_OCR_FIELD = 'bc_ocr' UCI_OCR_FIELD = 'uci_ocr' DDA_OCR_FIELD = 'bs_ocr' HMH_OCR_FIELD = 'hmh_ocr' JYPZ_OCR_FIELD = 'jypz_ocr' RESULT_MAPPING = { MVI_CLASSIFY: MVI_OCR_FIELD, IC_CLASSIFY: IC_OCR_FIELD, RP_CLASSIFY: RP_OCR_FIELD, BC_CLASSIFY: BC_OCR_FIELD, BL_CLASSIFY: BL_OCR_FIELD, UCI_CLASSIFY: UCI_OCR_FIELD, EEP_CLASSIFY: EEP_OCR_FIELD, DL_CLASSIFY: DL_OCR_FIELD, PP_CLASSIFY: PP_OCR_FIELD, MVC_CLASSIFY: MVC_OCR_FIELD, DDA_CLASSIFY: DDA_OCR_FIELD, # VAT_CLASSIFY: 'vat_ocr', HMH_CLASSIFY: HMH_OCR_FIELD, JYPZ_CLASSIFY: JYPZ_OCR_FIELD } COMPARE_FIELDS = (MVI_OCR_FIELD, IC_OCR_FIELD, RP_OCR_FIELD, BC_OCR_FIELD, BL_OCR_FIELD, UCI_OCR_FIELD, EEP_OCR_FIELD, DL_OCR_FIELD, PP_OCR_FIELD, MVC_OCR_FIELD, DDA_OCR_FIELD, HMH_OCR_FIELD, JYPZ_OCR_FIELD, ) # 身份证 ITPRC = [ ('customerChineseName', '姓名', 'name_compare', {}, 'customerChineseNameResult'), ('idNum', '公民身份号码', 'common_compare', {}, 'idNumResult'), # 20200410-20250410 OCR识别为长期,向GCAP发送:2099-12-31 00:00:00.0 ('idExpiryDate', '有效期限', 'date_compare', {'long': True, 'ocr_split': True, 'input_replace': ''}, 'idExpiryDateResult'), ('dateOfBirth', '出生年月', 'date_compare', {'input_replace': ''}, 'dateOfBirthResult'), # 20231023 ] # 护照 ITPSP = [ ('customerChineseName', '英文姓名', 'name_compare', {'is_passport': True}, 'customerChineseNameResult'), ('idNum', '护照号码', 'common_compare', {}, 'idNumResult'), ('idExpiryDate', '有效期至', 'date_compare', {'input_replace': ''}, 'idExpiryDateResult'), # 20250410 ('dateOfBirth', '出生日期', 'date_compare', {'input_replace': ''}, 'dateOfBirthResult'), # 20250410 ] # 港澳台通行证 ITHKM_ITTID = [ ('customerChineseName', '中文名', 'common_compare', {}, 'customerChineseNameResult'), ('idNum', '证件号码', 'common_compare', {}, 'idNumResult'), ('idExpiryDate', '有效期限', 'date_compare', {'ocr_split': True, 'input_replace': '.'}, 'idExpiryDateResult'), # 2013.10.24-2023.10.23 ('dateOfBirth', '出生日期', 'date_compare', {'input_replace': '.'}, 'dateOfBirthResult'), # 2023.10.23 ] # 居住证 ITRES = [ ('customerChineseName', '姓名', 'common_compare', {}, 'customerChineseNameResult'), ('idNum', '公民身份号码', 'common_compare', {}, 'idNumResult'), ('idExpiryDate', '有效期限', 'date_compare', {'ocr_split': True, 'input_replace': ''}, 'idExpiryDateResult'), # 20200410-20250410 ('dateOfBirth', '出生年月', 'date_compare', {'input_replace': ''}, 'dateOfBirthResult'), # 20231023 ] ID_TYPE_COMPARE = { 'ITPRC': [IC_OCR_FIELD, ITPRC, True], 'ITPSP': [PP_OCR_FIELD, ITPSP, False], 'ITHKM': [EEP_OCR_FIELD, ITHKM_ITTID, False], 'ITTID': [EEP_OCR_FIELD, ITHKM_ITTID, False], 'ITRES': [RP_OCR_FIELD, ITRES, True], } ID_RES = 'idNumResult' SECOND_ID_TYPE_FIELD = 'secondIdType' NAME_FIELD = 'customerChineseName' SECOND_ID_FIELD = 'secondIdNum' SECOND_ID_RES = 'secondIdNumResult' SECOND_ITPRC = [ (SECOND_ID_FIELD, '公民身份号码', 'common_compare', {}, SECOND_ID_RES), ] # 护照 SECOND_ITPSP = [ (SECOND_ID_FIELD, '护照号码', 'common_compare', {}, SECOND_ID_RES), ] # 港澳台通行证 SECOND_ITHKM_ITTID = [ (SECOND_ID_FIELD, '证件号码', 'common_compare', {}, SECOND_ID_RES), ] # 居住证 SECOND_ITRES = [ (SECOND_ID_FIELD, '公民身份号码', 'common_compare', {}, SECOND_ID_RES), ] SECOND_ID_TYPE_COMPARE = { 'ITPRC': [IC_OCR_FIELD, SECOND_ITPRC], 'ITPSP': [PP_OCR_FIELD, SECOND_ITPSP], 'ITHKM': [EEP_OCR_FIELD, SECOND_ITHKM_ITTID], 'ITTID': [EEP_OCR_FIELD, SECOND_ITHKM_ITTID], 'ITRES': [RP_OCR_FIELD, SECOND_ITRES], } # 1. 分别对比 POS车架号 vs 车辆登记正,POS车架号 vs 行驶证 # a)两种比对 均一致:Y # b)其中一个 不一致:N,向GCAP发送:不一致的OCR识别结果 # c)两中比对 均不一致:N,向GCAP发送:车辆登记证 & 行驶证识别结果 # 车辆登记证 PCUSD_MVC = [ ('vinNo', '9.车辆识别代号/车架号', 'common_compare', {}, 'vinNoResult'), ('manufactureDate', '32.车辆出厂日期', 'date_compare', {}, 'manufactureDateResult'), ('firstRegistrationDate', '3.登记日期', 'date_compare', {}, 'firstRegistrationDateResult'), ] # 行驶证 PCUSD_DL = [ ('vinNo', '车辆识别代码', 'common_compare', {}, 'vinNoResult'), ] # 营业执照 LEGAL_REP_NAME = '经营者姓名' TCCOR = [ ('customerChineseName', '企业名称', 'company_compare', {}, 'customerChinessNameResult'), ('legalRepName', '经营者姓名', 'name_compare', {}, 'legalRepNameResult'), ('idNum', '注册号', 'common_compare', {}, 'idNumResult'), ('businessLicenseNo', '注册号', 'common_compare', {}, 'businessLicenseNoResult'), ('taxRegistrationCode', '注册号', 'common_compare', {}, 'taxRegistrationCodeResult'), ('incorporationDate', '成立日期', 'date_compare', {'ocr_replace': True}, 'incorporationDateResult'), # 2017年07月11日 # 2017年07月11日至长期 1. OCR识别为长期,向GCAP发送:2099-12-31 00:00:00.0 ('businessLicenseDueDate', '营业期限', 'date_compare', {'ocr_split': True, 'long': True, 'ocr_replace': True}, 'businessLicenseDueDateResult'), ('capitalRegAmount', '注册资本', 'rmb_compare', {}, 'capitalRegAmountResult'), # 壹拾万元整 将OCR识别结果(人民币大写)转化为数字 ] TCSEP = [ ('companyName', '企业名称', 'company_compare', {}, 'companyNameResult'), ('registeredCapital', '注册资本', 'rmb_compare', {}, 'registeredCapitalResult'), # 壹拾万元整 将OCR识别结果(人民币大写)转化为数字 ('selfEmployedSubType', '企业类型', 'type_compare', {}, 'selfEmployedSubTypeResult') # 有限责任公司 ] # 1. POS数据OCR识别结果对应关系如下: # a)Individual Businessman CSIBM => 个体工商户 # b)Small and Micro Enterprise Owners CSSME => 个人独资企业、有限合伙企业、股份合作制、有限责任公司(***)【只需比对“有限责任公司”即可】 # c)Others CSOTH => 识别结果不一致时,向GCAP发送 OCR的识别结果 RESULT_Y = 'Y' RESULT_N = 'N' RESULT_NA = 'NA' IN_ORDER = ('applicantType', 'idType', SECOND_ID_TYPE_FIELD, 'customerType', 'customerChineseName', 'idNum', SECOND_ID_FIELD, "idExpiryDate", "dateOfBirth", 'companyName', "registeredCapital", 'selfEmployedSubType',) UC_ORDER = ('vinNo', 'manufactureDate', 'firstRegistrationDate') CO_ORDER = ('customerType', 'customerChineseName', 'legalRepName', 'idNum', 'businessLicenseNo', 'taxRegistrationCode', 'incorporationDate', 'businessLicenseDueDate', 'capitalRegAmount') PREFIX_MVC = 'G' PREFIX_DL = 'V' SPLIT = ';' # --------------- DDA 保存图片 -------------------- DDA_FIELD = 'DDA' IC_FIELD = 'ID' BC_FIELD = 'BC' IC_KEY_FIELD = ('姓名', '公民身份号码') BC_KEY_FIELD = 'CardNum' DDA_IMG_PATH = 'img_path' DDA_PRO = 'pro' DDA_MAPPING = [ (DDA_IC_NAME, IC_FIELD), (DDA_IC_ID, IC_FIELD), (DDA_BC_ID, BC_FIELD), ] DDA_PRO_MIN = 0.6 # ----------------------- SE compare ----------------------- SE_FIRST_ID_FIELD = ['customerName', 'idNum', 'dateOfBirth', 'idExpiryDate'] SE_ID_CARD_FIELD = ['customerName', 'idNum', 'dateOfBirth', 'idExpiryDate', 'hukouProvince', 'hukouCity'] SE_SECOND_ID_FIELD = [ ('customerName', 'customerName'), ('secondIdNum', 'idNum'), ] SE_CORPORATE_ID_FIELD = [ ('legalRepName', 'customerName'), ('firstIdNo', 'idNum') ] SE_SEP_FIELD = [ ('companyName', 'companyName'), ('customerName', 'legalRepName'), ('registeredCapital', 'registeredCapital'), ('selfEmployedSubType', 'organizationType') ] SE_CORPORATE_FIELD = ['companyName', 'legalRepName', 'businessLicenseNo', 'organizationCreditCode', 'taxRegistrationCertificateNo', 'establishmentDate', 'businessLicenseDueDate'] SE_CORPORATE_ALL_FIELD = ['companyName', 'legalRepName', 'firstIdNo', 'businessLicenseNo', 'organizationCreditCode', 'taxRegistrationCertificateNo', 'establishmentDate', 'businessLicenseDueDate'] SE_NEW_FIELD = ['vinNo', 'dealer', 'vehicleTransactionAmount'] SE_USED_FIELD = ['vinNo', 'vehicleTransactionAmount'] SE_NEW_ADD_FIELD = ['customerName', 'idNum', 'dateOfInvoice', 'stamp'] SE_STAMP_VALUE = '有' SE_GB_NEW_FIELD = ['vinNo'] SE_GB_USED_FIELD = ['customerName', 'idNum', 'date'] SE_HMH_FIELD = ['customerName', 'idNum', 'applicationId'] SE_BANK_FIELD = ['accountNo', 'bankName'] SE_DDA_FIELD = ['applicationId(1)', 'applicationId(2)', 'bankName', 'companyName', 'customerName', 'idNum', 'accountHolderName', 'accountNo'] HIL_COMPANY_NAME = '先锋国际融资租赁有限公司' AFC_COMPANY_NAME = '宝马汽车金融(中国)有限公司' ID_EN = 'PRC ID' PP_EN = 'Passport' EEP_EN = 'Resident Permit to Mainland' RP_EN = 'Resident ID' BL_EN = 'Business permit' MVI_EN = 'newCar Invoice' UCI_EN = 'usedCar Invoice' MVC_EN = 'Green Book(1/2)' MVC34_EN = 'Green Book(3/4)' BC_EN = 'Bank Card' DDA_EN = 'DDA' HMH_EN = 'Mortgage Waiver Letter' JYPZ_EN = 'Used Car Document' SKIP_CARD = {ID_EN, RP_EN} ID_COMPARE_LOGIC = { 'customerName': ('姓名', 'se_name_compare', {}), 'idNum': ('公民身份号码', 'se_common_compare', {}), 'dateOfBirth': ('出生年月', 'se_date_compare', {'input_replace': ''}), 'idExpiryDate': ('有效期限', 'se_date_compare', {'long': True, 'ocr_split': True, 'input_replace': '', 'today': True}), 'hukouProvince': ('住址', 'se_contain_compare', {}), 'hukouCity': ('住址', 'se_contain_compare', {}), } PP_COMPARE_LOGIC = { 'customerName': ('英文姓名', 'se_name_compare', {'is_passport': True}), 'idNum': ('护照号码', 'se_common_compare', {}), 'dateOfBirth': ('出生日期', 'se_date_compare', {'input_replace': ''}), 'idExpiryDate': ('有效期至', 'se_date_compare', {'input_replace': '', 'today': True}), } EEP_COMPARE_LOGIC = { 'customerName': ('中文名', 'se_common_compare', {}), 'idNum': ('证件号码', 'se_common_compare', {}), 'dateOfBirth': ('出生日期', 'se_date_compare', {'input_replace': '.'}), 'idExpiryDate': ('有效期限', 'se_date_compare', {'ocr_split': True, 'input_replace': '.', 'today': True}), } RP_COMPARE_LOGIC = { 'customerName': ('姓名', 'se_name_compare', {}), 'idNum': ('公民身份号码', 'se_common_compare', {}), 'dateOfBirth': ('出生年月', 'se_date_compare', {'input_replace': ''}), 'idExpiryDate': ('有效期限', 'se_date_compare', {'ocr_split': True, 'input_replace': '', 'today': True}), 'hukouProvince': ('住址', 'se_contain_compare', {}), 'hukouCity': ('住址', 'se_contain_compare', {}), } BL_COMPARE_LOGIC = { 'companyName': ('企业名称', 'se_company_compare', {}), 'legalRepName': ('经营者姓名', 'se_name_compare', {}), 'firstIdNo': ('注册号', 'se_common_compare', {}), 'businessLicenseNo': ('注册号', 'se_common_compare', {}), 'organizationCreditCode': ('注册号', 'se_common_compare', {}), 'taxRegistrationCertificateNo': ('注册号', 'se_common_compare', {}), 'establishmentDate': ('成立日期', 'se_date_compare', {'ocr_replace': True}), 'businessLicenseDueDate': ('营业期限', 'se_date_compare', {'ocr_split': True, 'long': True, 'ocr_replace': True, 'today': True}), 'organizationType': ('企业类型', 'se_type_compare', {}), 'registeredCapital': ('注册资本', 'se_rmb_compare', {}), } MVI_COMPARE_LOGIC = { 'vinNo': ('车辆识别代码', 'se_common_compare', {}), 'dealer': ('销方名称', 'se_common_compare', {}), 'vehicleTransactionAmount': ('价税合计小写', 'se_amount_compare', {}), 'customerName': ('购方名称', 'se_name_compare', {'is_passport': True}), 'idNum': ('购买方身份证号或组织机构代码', 'se_contain_compare_2', {}), 'dateOfInvoice': ('开票日期', 'se_date_compare_2', {'three_month': True}), 'stamp': ('销售单位章', 'se_common_compare', {}), } UCI_COMPARE_LOGIC = { 'vinNo': ('车架号', 'se_common_compare', {}), 'vehicleTransactionAmount': ('价税合计小写', 'se_amount_compare', {}), 'customerName': ('购方名称', 'se_name_compare', {'is_passport': True}), 'idNum': ('购方纳税人识别号', 'se_contain_compare_2', {}), 'dateOfInvoice': ('开票日期', 'se_date_compare_2', {'three_month': True}), 'stamp': ('发票章', 'se_common_compare', {}), } MVC_COMPARE_LOGIC = { 'vinNo': ('9.车辆识别代号/车架号', 'se_common_compare', {}), # 'customerName': ('姓名/名称', ), # 'idNum': ('身份证明名称/号码', ), # 'date': ('转移登记日期', ), } TRANSFER_NAME = '姓名/名称' TRANSFER_NUM = '身份证明名称/号码' TRANSFER_DATE = '转移登记日期' MVC34_COMPARE_LOGIC = { 'customerName': (TRANSFER_NAME, 'se_company_compare', {}), 'idNum': (TRANSFER_NUM, 'se_contain_compare_2', {}), 'date': (TRANSFER_DATE, 'se_date_compare_2', {}), } BC_COMPARE_LOGIC = { 'accountNo': ('CardNum', 'se_common_compare', {}), 'bankName': ('BankName', 'se_both_contain_compare', {}), } DDA_COMPARE_LOGIC = { 'applicationId(1)': ('check_Num', 'se_common_compare', {}), 'applicationId(2)': ('check_Num', 'se_common_compare', {}), 'bankName': ('to_bank', 'se_both_contain_compare', {}), 'companyName': ('to_company', 'se_company_compare', {}), 'customerName': (DDA_IC_NAME, 'se_contain_compare_2', {}), 'idNum': (DDA_IC_ID, 'se_contain_compare_2', {}), 'accountHolderName': (DDA_BC_NAME, 'se_common_compare', {}), 'accountNo': (DDA_BC_ID, 'se_common_compare', {}), } JYPZ_COMPARE_LOGIC = { 'vinNo': ('vin', 'se_common_compare', {}), 'vehicleTransactionAmount': ('price', 'se_amount_compare', {}), 'customerName': ('buyer_name', 'se_name_compare', {'is_passport': True}), 'idNum': ('buyer_id', 'se_contain_compare_2', {}), 'date': ('date', 'se_date_compare_2', {}), } HMH_COMPARE_LOGIC = { 'customerName': ('借款/承租人姓名', 'se_name_compare', {}), 'idNum': ('证件号码', 'se_common_compare', {}), 'applicationId': ('合同编号', 'se_contain_compare', {}), } # MVC_OCR_FIELD = 'mvc_ocr' SE_DETECT_CARD = [UCI_EN, JYPZ_EN, HMH_EN, DDA_EN] SE_COMPARE_FIELD = { ID_EN: (IC_OCR_FIELD, ID_COMPARE_LOGIC, True), PP_EN: (PP_OCR_FIELD, PP_COMPARE_LOGIC, False), EEP_EN: (EEP_OCR_FIELD, EEP_COMPARE_LOGIC, False), RP_EN: (RP_OCR_FIELD, RP_COMPARE_LOGIC, True), BL_EN: (BL_OCR_FIELD, BL_COMPARE_LOGIC, False), MVI_EN: (MVI_OCR_FIELD, MVI_COMPARE_LOGIC, False), UCI_EN: (UCI_OCR_FIELD, UCI_COMPARE_LOGIC, False), MVC_EN: (MVC_OCR_FIELD, MVC_COMPARE_LOGIC, False), MVC34_EN: (MVC_OCR_FIELD, MVC34_COMPARE_LOGIC, False), BC_EN: (BC_OCR_FIELD, BC_COMPARE_LOGIC, False), DDA_EN: (DDA_OCR_FIELD, DDA_COMPARE_LOGIC, False), HMH_EN: (HMH_OCR_FIELD, HMH_COMPARE_LOGIC, False), JYPZ_EN: (JYPZ_OCR_FIELD, JYPZ_COMPARE_LOGIC, False), } SE_FIRST_ID_FIELD_MAPPING = { 'ITPRC': (ID_EN, SE_ID_CARD_FIELD), 'ITPSP': (PP_EN, SE_FIRST_ID_FIELD), 'ITHKM': (EEP_EN, SE_FIRST_ID_FIELD), 'ITTID': (EEP_EN, SE_FIRST_ID_FIELD), 'ITRES': (RP_EN, SE_FIRST_ID_FIELD), } SE_SECOND_ID_FIELD_MAPPING = { 'ITPRC': (ID_EN, SE_SECOND_ID_FIELD), 'ITPSP': (PP_EN, SE_SECOND_ID_FIELD), 'ITHKM': (EEP_EN, SE_SECOND_ID_FIELD), 'ITTID': (EEP_EN, SE_SECOND_ID_FIELD), 'ITRES': (RP_EN, SE_SECOND_ID_FIELD), } HEAD_LIST = ['Info', 'Index', 'License', 'Field', 'Input', 'OCR', 'Result', 'Position', 'Image', 'errorType'] # ----------------litigation------------------------ IC_FIELD_ORDER_2 = (('姓名', '姓名'), ('公民身份号码', '公民身份号码'), ('出生年月', '出生年月'), ('住址', '住址'), ('性别', '性别'), ('民族', '民族'),) IC_FIELD_ORDER_3 = (('有效期限', '有效期限'), ('签发机关', '签发机关'),) BC_FIELD_ORDER_2 = (('BankName', '发卡行名称'), ('CardNum', '银行卡号'), ('CardType', '银行卡类型'),) IMG_PATH_KEY = 'uniq_img_path_key' IMG_PATH_KEY_2 = 'uniq_img_path_key_2' INFO_SOURCE = ['POS', 'CMS'] # ------------------- CA_FIRST_ID_FIELD = ['customerChineseName', 'idNum', 'idExpiryDate', 'dateOfBirth'] CA_FIRST_ID_FIELD_MAPPING = { 'ITPRC': (ID_EN, CA_FIRST_ID_FIELD), 'ITPSP': (PP_EN, CA_FIRST_ID_FIELD), 'ITHKM': (EEP_EN, CA_FIRST_ID_FIELD), 'ITTID': (EEP_EN, CA_FIRST_ID_FIELD), 'ITRES': (RP_EN, CA_FIRST_ID_FIELD), } CA_SECOND_ID_FIELD = [ ('customerChineseName', 'customerChineseName'), ('secondIdNum', 'idNum') ] CA_SECOND_ID_FIELD_MAPPING = { 'ITPRC': (ID_EN, CA_SECOND_ID_FIELD), 'ITPSP': (PP_EN, CA_SECOND_ID_FIELD), 'ITHKM': (EEP_EN, CA_SECOND_ID_FIELD), 'ITTID': (EEP_EN, CA_SECOND_ID_FIELD), 'ITRES': (RP_EN, CA_SECOND_ID_FIELD), } CA_SEP_FIELD = ['companyName', 'customerChineseName', 'registeredCapital', 'selfEmployedSubType'] CA_CORPORATE_FIELD = [ ('customerChineseName', 'companyName'), ('legalRepName', 'customerChineseName'), ('idNum', 'idNum'), ('businessLicenseNo', 'businessLicenseNo'), ('taxRegistrationCode', 'taxRegistrationCode'), ('incorporationDate', 'incorporationDate'), ('businessLicenseDueDate', 'businessLicenseDueDate'), ('capitalRegAmount', 'registeredCapital'), ] CA_MVC_FIELD = ['vinNo', 'manufactureDate', 'firstRegistrationDate'] CA_DL_FIELD = ['vinNo'] DL_EN = 'Driving Licence' CA_ID_COMPARE_LOGIC = { 'customerChineseName': ('姓名', 'ca_name_compare', {}), 'idNum': ('公民身份号码', 'ca_common_compare', {}), 'dateOfBirth': ('出生年月', 'ca_date_compare', {'input_replace': ''}), 'idExpiryDate': ('有效期限', 'ca_date_compare', {'long': True, 'ocr_split': True, 'input_replace': ''}), } CA_PP_COMPARE_LOGIC = { 'customerChineseName': ('英文姓名', 'ca_name_compare', {'is_passport': True}), 'idNum': ('护照号码', 'ca_common_compare', {}), 'dateOfBirth': ('出生日期', 'ca_date_compare', {'input_replace': ''}), 'idExpiryDate': ('有效期至', 'ca_date_compare', {'input_replace': ''}), } CA_EEP_COMPARE_LOGIC = { 'customerChineseName': ('中文名', 'ca_common_compare', {}), 'idNum': ('证件号码', 'ca_common_compare', {}), 'dateOfBirth': ('出生日期', 'ca_date_compare', {'input_replace': '.'}), 'idExpiryDate': ('有效期限', 'ca_date_compare', {'ocr_split': True, 'input_replace': '.'}), } CA_RP_COMPARE_LOGIC = { 'customerChineseName': ('姓名', 'ca_common_compare', {}), 'idNum': ('公民身份号码', 'ca_common_compare', {}), 'dateOfBirth': ('出生年月', 'ca_date_compare', {'input_replace': ''}), 'idExpiryDate': ('有效期限', 'ca_date_compare', {'ocr_split': True, 'input_replace': ''}), } CA_BL_COMPARE_LOGIC = { 'companyName': ('企业名称', 'ca_company_compare', {}), 'customerChineseName': ('经营者姓名', 'ca_name_compare', {}), 'idNum': ('注册号', 'ca_common_compare', {}), 'businessLicenseNo': ('注册号', 'ca_common_compare', {}), 'taxRegistrationCode': ('注册号', 'ca_common_compare', {}), 'incorporationDate': ('成立日期', 'ca_date_compare', {'ocr_replace': True}), 'businessLicenseDueDate': ('营业期限', 'ca_date_compare', {'ocr_split': True, 'long': True, 'ocr_replace': True}), 'registeredCapital': ('注册资本', 'ca_rmb_compare', {}), 'selfEmployedSubType': ('企业类型', 'ca_type_compare', {}), } CA_MVC_COMPARE_LOGIC = { 'vinNo': ('9.车辆识别代号/车架号', 'ca_common_compare', {}), 'manufactureDate': ('32.车辆出厂日期', 'ca_date_compare', {}), 'firstRegistrationDate': ('3.登记日期', 'ca_date_compare', {}), } CA_DL_COMPARE_LOGIC = { 'vinNo': ('车辆识别代码', 'ca_common_compare', {}), } CA_COMPARE_FIELD = { ID_EN: (IC_OCR_FIELD, CA_ID_COMPARE_LOGIC, True), PP_EN: (PP_OCR_FIELD, CA_PP_COMPARE_LOGIC, False), EEP_EN: (EEP_OCR_FIELD, CA_EEP_COMPARE_LOGIC, False), RP_EN: (RP_OCR_FIELD, CA_RP_COMPARE_LOGIC, True), BL_EN: (BL_OCR_FIELD, CA_BL_COMPARE_LOGIC, False), MVC_EN: (MVC_OCR_FIELD, CA_MVC_COMPARE_LOGIC, False), DL_EN: (DL_OCR_FIELD, CA_DL_COMPARE_LOGIC, False), } CONTRACT_SHEET_NAME = '合同' # ------------------CMS-------------------------------------- BANK_INFO_MAP = ( ('accountNo', 'bankAccountDetails.accountNo'), ('bankName', 'bankAccountDetails.bankName'), ('accountHolderName', 'bankAccountDetails.accountHolderName'), ) VEHICLE_INFO_MAP = ( ('vehicleStatus', 'vehicleStatus'), ('vinNo', 'vehicleInformation.vinNo'), ('dealer', 'dealerName'), ('vehicleTransactionAmount', 'totalFinanceAmount'), ) CORPORATE_INFO_MAP = ( ('firstIdType', ), ('firstIdNo', ), ('companyName', ), ('legalRepName', ), ('businessLicenseNo', ), ('organizationCreditCode', ), ('taxRegistrationCertificateNo', ), ('establishmentDate', ), ('businessLicenseDueDate', ), ) INDIVIDUAL_INFO_MAP = ( ('applicantType', 'applicantInformation.applicantType'), ('customerType', 'applicantInformation.customersubType'), ('idType', 'applicantInformation.IDInformation.idType'), ('customerName', 'applicantInformation.name'), ('idNum', 'applicantInformation.IDInformation.idNum'), ('dateOfBirth', 'applicantInformation.dateOfBirth'), ('idExpiryDate', 'applicantInformation.IDInformation.idExpiryDate'), ('hukouProvince', ), ('hukouCity', ), ('secondIdType', 'applicantInformation.IDInformation.idType'), ('secondIdNum', 'applicantInformation.IDInformation.idNum'), ('companyName', ), ('registeredCapital', ), ('selfEmployedSubType', ), ) CMS_TO_POS = [ ('bank_info', BANK_INFO_MAP), ('vehicle_info', VEHICLE_INFO_MAP), ('corporate_cus_info', CORPORATE_INFO_MAP), ('individual_cus_info', INDIVIDUAL_INFO_MAP), ] TENANT_MAP = { AFC_PREFIX: 1, HIL_PREFIX: 2, } APPLICANT_TYPE_MAP = { 'Borrower': 'CUSTR', 'Co Borrower': 'COAPP', 'Guarantor': 'GAUTR1', 'Mortgager': 'GAUTR2' }